ブックマーク / tech.cygames.co.jp (10)

  • 【Developers Summit 2020フォローアップ】グランブルーファンタジーを支えるサーバーサイドの技術

    こんにちは。サーバーサイドエンジニアの小松・大橋です。 2020年2月13日・14日に開催された「Developers Summit 2020(デブサミ2020)」において、『グランブルーファンタジーを支えるサーバーサイドの技術』と題した講演を行いました。ご参加いただいた皆様、当日は素晴らしい時を共有させていただき、ありがとうございました。 なお、この講演はWebメディア「CodeZine」でも取り上げていただきました。ご興味のある方はご参照いただければと思います。 講演資料はこちらになります。 稿では、講演でお伝えし切れなかったことや、質問を多くいただいた事項をフォローアップしていきます。 中長期的な改善の意義について 講演では、中長期的な改善の意義についてお話ししました。 我々にとって最も大切なのは、お客様に快適にプレイしていただくことです。そして、トラブルを未然に防ぐことも目的の一

    【Developers Summit 2020フォローアップ】グランブルーファンタジーを支えるサーバーサイドの技術
  • ZString - Unity/.NET CoreにおけるゼロアロケーションのC#文字列生成

    Cy#の河合です。今回、文字列生成におけるメモリアロケーションをゼロにする「ZString」というライブラリを公開しました。そこで、この記事ではZStringの紹介の他に、あらためてC#の文字列についてを深く分解して解説し、Stringの複雑さと落とし穴、そしてZStringの必要性について解説します。 [GitHub – Cysharp/ZString] 以下の表は `”x:” + x + ” y:” + y + ” z:” + z` という単純な文字列連結においてのパフォーマンス計測です。 それぞれ “x:” + x + ” y:” + y + ” z:” + z ZString.Concat(“x:”, x, ” y:”, y, ” z:”, z) string.Format(“x:{0} y:{1} z:{2}”, x, y, z) ZString.Format(“x:{0} y:

    ZString - Unity/.NET CoreにおけるゼロアロケーションのC#文字列生成
  • UniTask - Unityでasync/awaitを最高のパフォーマンスで実現するライブラリ

    Cy#の河合です。今回、『UniTask』という新しいUnity用の非同期処理ライブラリを公開しました。 [GitHub – Cysharp/UniTask] 新規公開、ではありますが、実は新しいわけではなく、元々UniRxの機能として公開していたものを、分離したものとなります。併せてUniRxも更新していて、お互いに依存が一切ない独立したものになっています。 概要に関しては、以前に公開した以下のスライドで詳しく述べていますが、改めてまとめてみます。 async/awaitまでのC#/Unityの非同期処理 一般に、非同期処理はコールバックで完了後のメソッドを呼び出す形で実装できます。Unityも例外ではなく多用されていますが、 複雑な処理でネストが多重になる その際、内側の例外は外側には伝搬されない 処理順序がコードから見えなくなる といったような、いわゆるコールバック地獄に陥ります。代

    UniTask - Unityでasync/awaitを最高のパフォーマンスで実現するライブラリ
  • MagicOnion – C#による .NET Core/Unity 用のリアルタイム通信フレームワーク | Cygames Engineers' Blog

    Cy#の河合です。Cy#は今年の9月に設立されたばかりの会社で、その名の通りC#関連の開発を行っていきます。今回はCy#よりオープンソースライブラリとして、Unity向けのリアルタイム通信/API通信統合ライブラリをリリースしました。 GitHub – cysharp/MagicOnion もともと2年前に最初に公開し、実際にリリースされたモバイルゲームでも使用していたものですが、今回リアルタイム通信向け機能をよりブラッシュアップして、正式公開としました。そういう点では、”既に実績がある”とも言えます。今回より新しいスタートということで、バージョン2.0です。 基的な機能は サーバークライアント間のストリーミングRPCを提供します。サーバー側をC#、クライアント側もC#で実装し、メッセージのフォーマットはLZ4圧縮されたMessagePack、通信はgRPCによるHTTP/2を用いていま

    MagicOnion – C#による .NET Core/Unity 用のリアルタイム通信フレームワーク | Cygames Engineers' Blog
  • データ指向設計

    こんにちは、Cygames Research の多胡です。これまで10年以上コンソールゲーム開発を行ってきていて、最近ではハイエンドゲームエンジンを制作しておりました。Cygames でもハイエンドゲームエンジンの開発に携わることになりました。 ゲームエンジン開発を行う上で重要な考え方にデータ指向設計 (Data Oriented Design) というものがあります。今回はこのデータ指向設計を例を交えながら紹介させていただきます。 背景 データ指向設計の考え方は 2009年頃から有名になりました。 この 30年で CPU の性能は1万倍以上になりましたが、メモリの転送速度は10倍にもなっていません。そのため、プログラムのボトルネックはメモリ帯域となることが多くなりました。ゲームにおいても CPU はほとんどの時間がメモリからのデータの転送待ちになっています。CPU の性能を引き出すために

    データ指向設計
  • メッセージベースによるゲーム駆動

    みなさま、こんにちは! Cygames Research 所属、エンジニアの和泉澤と申します。 ゲーム業界歴20数年。メガドライブの時代よりゲームプログラミング一筋です。 時折、幾つかの知見をご紹介させて頂けましたらと思います。 ゲーム制作における内部実装には、古今東西、様々な方法論が存在しています。 アクション、RPG、カードゲームやアドベンチャーゲーム等、そのジャンルにより採択される方法は多種多様でありますが、制作するゲームの持つ特徴を良く理解し、そのゲームに適した設計を行うことは、ある種、ゲームプログラミングにおける醍醐味とも言えましょう。 アクションならばこの実装方法、RPGならばこれ、等といったような一意の方法論は勿論在りません。しかしながら、ゲーム業界黎明期より無数に生み出されたゲーム制作の歴史の上に、効率的な方法論というものは、ある程度通例として積み上げられています。 極シン

    メッセージベースによるゲーム駆動
  • ゲームプログラマーを目指す学生さんが、学生時代にしておいたほうが良いこと

    大阪Cygames エンジニアの堀端です。 ゲームプログラマーを目指されている学生さん達に向けての記事を書かせて頂きます。 学生時代には何をしておくべきかは色々ありますが その中でも個人的にやっておくべき事を書かせて頂きます。 1.友人を作る 2.遊ぶ 3.沢山ゲームをプレイする 4.実際にゲームを作る 5.興味のある分野のスキルを磨く です。 なぜ、これらをする必要があるかですが 一つずつ紹介していきます。 1.【友人を作る】 学生時代には友人を多く作ってください。 友人は非常に大切です。 楽しく遊んだり、時には相談を聞いてくれたり色々あります。 人とのつながりも出来ますし、コミュニティの輪も広がります。 人と人との伝達能力も自然に高くなりますし、 旅行や飲み会、遊ぶ時にも、相談したり計画を練ったりするでしょう。 それによって、 コミュニケーション能力やチームワーク能力を高める事が出来ま

    ゲームプログラマーを目指す学生さんが、学生時代にしておいたほうが良いこと
  • ゲームプログラマーの基礎について

    みなさん、初めまして。 大阪Cygamesのエンジニアをしています 堀端です。 今回は、「ゲームプログラマー」を目指している学生さん向けの 記事を書かせて頂きます。 ここ最近では、 誰にでもゲームが作れる環境が出来てますよね。 Unity、UNREAL ENGINE 4など 様々なゲームエンジンがあり 非常にゲームを作りやすくなりました。 Unityの画面 UNREAL ENGINE 4の画面 ゲームエンジンを使えば、 ポリゴンの板を出すのも、とても簡単に出ます。 キャラクターモデルを出すのも、モデルデータさえあれば表示も簡単です。 アニメーションもすぐに動いてくれますし、あたり判定もやってくれます。 エフェクトもエディタがあり、当に簡単に作れます。 最近のゲームで主流のシェーダーなども常備されていて グラッフィックも申し分のないものが気軽に表示できます。 当に良い環境になってますね。

    ゲームプログラマーの基礎について
  • ゲームAI - 基礎編(2) - 『はじめてのエージェントベースアーキテクチャ』

    みなさん、こんにちは! Cygamesエンジニアの佐藤です。 季節も秋を迎えて、すっかり涼しくなってきましたね。 秋の夜長はのんびり箱庭ゲームなどいかがでしょうか? SkyrimやGTAなどのオープンワールド系の箱庭ゲームでは、 街を歩くNPC達の動きも作り込まれています。 モブキャラクターたちが街や村の中で生活感豊かに動いていると、 ゲーム世界の日常の中に実際に入り込んでいるような気持ちになれますよね! 今回の記事では、NPCの生活行動のためのAIを一例にあげつつ、 自律エージェントの考え方に基づいたキャラクター駆動の仕組みについて 御紹介したいと思います。 Ⅰ.自律エージェントとは? 周囲の環境を認識して状況を解釈し、自身の内的な方針に基づいて意思決定を行って、 環境に働きかける行動を取る能力を持つ存在を自律エージェントと呼びます。 わかりやすく、ゲームの敵キャラクターに置き換えて考え

    ゲームAI - 基礎編(2) - 『はじめてのエージェントベースアーキテクチャ』
  • ゲームAI -基礎編- 『知識表現と影響マップ』

    みなさん、こんにちは! 突然ですが…皆さんには、ひいきにしている ゲームのキャラクターはいらっしゃいますでしょうか。 手ごわいボス敵や頼れるパートナー、愛嬌のある動きをするモンスター達は 一体どのような仕組みで動いているのでしょう? 今回の記事ではそんなゲームの中のキャラクター達を 魅力的に動かす仕組み、AIについて御紹介したいと思います。 改めまして記事を担当させて頂きます、Cygamesエンジニアの佐藤です。 これまでコンシューマ機でのゲームAI開発に携わり、 ゲームならではのキャラクター表現の楽しさを追いかけてきました。 このブログを通じて、皆さんのゲームのキャラクターを より表情豊かに魅力的なものにする方法について、皆さんと一緒に考えていければ幸いです。 今回はゲームAIをデザインするにあたって重要となる、 「知識表現を定義する」というステップと、 知識表現の一つである影響マッ

    ゲームAI -基礎編- 『知識表現と影響マップ』
  • 1