サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
tech.cygames.co.jp
Cy#の河合です。Cysharp名義でGitHub/Cysharp上で公開しているOSSの数も19個となるのですが、今回新しく .NET/Unity で使えるハイパフォーマンスなメッセージングライブラリ「MessagePipe」をリリースしました。 GitHub – Cysharp/MessagePipe 主にインメモリでのPublish/Subscribeパターンを支援し、統一的なインターフェイスであらゆるケースを網羅しています。例えばリアルタイム通信におけるMagicOnionやSignalRでの異なるHub間の通信、WPFなどのGUIアプリケーション開発におけるV-VM間の疎結合のためのメッセンジャーパターン(PrismライブラリにおけるEventAggregator)、サーバーアプリケーションでのCQRSアーキテクチャのためのMediatorパターンの実装(ASP.NETでのMed
Cy#の河合です。去年、UniTask – Unityでasync/awaitを最高のパフォーマンスで実現するライブラリという形で紹介させていただきましたが、今回全てのコードを書き換えた新バージョンをリリースしました。 GitHub – Cysharp/UniTask UniTask v2では、コードの徹底的な書き換えにより、ほぼ全てがゼロアロケーション化しました(技術的詳細は後ほど述べます)。これによりパフォーマンスの大幅な向上を果たしているほか、新たに非同期シーケンスと、それに対応する非同期LINQが組み込まれました。その他、DOTweenやAddressableなどの外部アセットに対するawait標準対応も組み込まれ、より利便性が高まっています。 v2の前に、まず、async/await はC# 5.0から搭載されている機能で、従来コールバックの連鎖やコルーチンで処理していた非同期コ
Cy#の河合です。今回、.NET CoreアプリケーションとUnityのために新しく「ZLogger」というロガーを公開しました。非常に高速、かつ、以前に紹介したZStringをバックエンドに持つことにより、文字列整形時のアロケーションをなくしています。主に .NET Core 向けに開発したものですが、Unity(IL2CPPやモバイル環境を含む)でも動くように調整してあります。 GitHub – Cysharp/ZLogger 特にコンテナ化において、標準出力は重要です。例えばDatadog LogsやStackdriver Loggingは、コンテナの標準出力から直接ログを収集します。Thw Twelve-Factor App – XI. Logsの項でも、標準出力への書き出しが推奨されています。そのような中で、ローカル環境用の装飾過多なログや、低速なConsole.WriteLin
こんにちは。サーバーサイドエンジニアの小松・大橋です。 2020年2月13日・14日に開催された「Developers Summit 2020(デブサミ2020)」において、『グランブルーファンタジーを支えるサーバーサイドの技術』と題した講演を行いました。ご参加いただいた皆様、当日は素晴らしい時を共有させていただき、ありがとうございました。 なお、この講演はWebメディア「CodeZine」でも取り上げていただきました。ご興味のある方はご参照いただければと思います。 講演資料はこちらになります。 本稿では、講演でお伝えし切れなかったことや、質問を多くいただいた事項をフォローアップしていきます。 中長期的な改善の意義について 講演では、中長期的な改善の意義についてお話ししました。 我々にとって最も大切なのは、お客様に快適にプレイしていただくことです。そして、トラブルを未然に防ぐことも目的の一
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:
Cy#の河合です。以前に「MasterMemory – Unityと.NET Coreのための読み取り専用インメモリデータベース」という記事で、弊社で開発しOSSにて公開しているMasterMemoryというライブラリを紹介しました。 [GitHub – Cysharp/MasterMemory] 最初のバージョンでは、コンセプト実証と性能の追求が主軸でしたが、最初の公開から半年を経た今回はVersion 2として、実アプリケーションに適合するにあたっての便利な周辺機能の拡充を図りました。その一つがパラメーター検証のためのバリデーターです。 Cygamesでは以前、「ユーザを飽きさせない高頻度の更新を可能にする開発運用ノウハウ ~ハイスピードな開発、リリースを実現するために~」としてDSLによる検証システムを紹介しました。 DSLベースにすることで、スキーマ定義によるサーバ
こんにちは。技術本部所属コンシューマーエンジニアの伊藤です。 先日のCEDEC 2019での『スマホゲームリリース時に絶対サーバを落とさないための負荷試験』の講演に、朝早い時間にもかかわらず多数の方にご参加いただき、誠にありがとうございました。 本講演ではCygamesで行っているリリース前の負荷試験の取り組み方についてご紹介いたしました。 今回のフォローアップ記事では講演内容のポイントのおさらいおよび、いただくことが多かったご質問にお答えしたいと思います。 講演内容のポイント ・快適に遊べることが目標 いつでも安定して素早いレスポンスのサーバを提供することで、ゲームの面白さを損なうことなくユーザーに届けたいと思っています。それを実現する手段の一つが負荷試験です。すべては、Cygamesのビジョンにもある「最高のコンテンツ」につながると考えています。 ・必要十分な計測体制 やはりこの格言に
サーバーサイドエンジニアサブマネージャーの崔です。 少し前のことになりますが、テスト駆動開発(TDD)のエバンジェリストである和田卓人(@t-wada)さんを講師としてお招きし、1日かけてレガシーコード改善ワークショップを開催しました。 和田さんには以前にも、社内でテスト文化への理解を広めたいという意図もあり講演をお願いし、非常に好評だったため、今回はより実践的なワークショップを開催することにしました。 私たちが長期にわたって運用を続けるゲームタイトルは、機能追加や改善を繰り返し、システムが大規模かつ複雑になってしまいます。開発のスピードとプログラム品質の両立に影響するため、これらを改善する取り組みのひとつとして、テストを活用して開発効率を上げたいと考えました。 そして、今回はより実践的なワークショップにするために、Cygamesで実際に運用しているゲームタイトルのソースコードを利用しまし
Cy#の河合です。今回新しくオープンソースライブラリとして、マスターデータの管理用途を主眼に置いた、読み取り専用のインメモリデータベースを公開しました。 [GitHub – Cysharp/MasterMemory] 今までのゲーム開発の経験から、「省メモリ(インメモリということもあり使用メモリ量には気を使う」「高速なデータベースロード(構築に時間がかかるとゲームの起動速度に大きく影響する)」「高速な検索(ディクショナリのルックアップと同程度のクエリ)」の3点を重視して作りました。以下がベンチマークの結果となります。 MasterMemory、SQLite、LiteDB、RocksDBがインプロセス、Memcachedのみ別プロセスのマシン内通信による比較です。SQLite(ファイル読み込み型)の4700倍高速で、1クエリでのアロケーションはゼロです。また、保存時のファイルサイズも極小です
Cy#の河合です。今回、『UniTask』という新しいUnity用の非同期処理ライブラリを公開しました。 [GitHub – Cysharp/UniTask] 新規公開、ではありますが、実は新しいわけではなく、元々UniRxの機能として公開していたものを、分離したものとなります。併せてUniRxも更新していて、お互いに依存が一切ない独立したものになっています。 概要に関しては、以前に公開した以下のスライドで詳しく述べていますが、改めてまとめてみます。 async/awaitまでのC#/Unityの非同期処理 一般に、非同期処理はコールバックで完了後のメソッドを呼び出す形で実装できます。Unityも例外ではなく多用されていますが、 複雑な処理でネストが多重になる その際、内側の例外は外側には伝搬されない 処理順序がコードから見えなくなる といったような、いわゆるコールバック地獄に陥ります。代
Cy#の河合です。昨年12月に、『MagicOnion』というライブラリのリリースを告知しました。今回、再びオープンソースライブラリとして、C#のためのCLI/Batchライブラリをリリースしました。 [GitHub – Cysharp/MicroBatchFramework] .NET CoreになってWindows/Mac/Linux問わずクロスプラットフォームなアプリケーション開発環境として機能するようになったC#ですが、そして機能的には十分揃っているのですが、ちょっと気の利いたフレームワークは意外と欠けているところがあります。バッチ・コマンドラインアプリ。というと地味なトピックスですが、ゆえに基本機能以上のサポートがなかったりします。しかし、「C#の可能性を切り開いていく」という理念を掲げるCy#としては、派手・地味を問わず、現状のC#に欠けているものを埋めていくことで、C#がアプ
こんにちは。サーバーサイドエンジニアサブマネージャーの星野と申します。 Cygamesでは、毎週木曜日に「スキルサーズデー」という社内勉強会を開催しています。スキル向上や知識の共有を目指し、業務で得られた知見を講演形式で発表するイベントです。過去にも紹介しておりますので、そちらも併せてご参照ください。 有志のスタッフが運営しており、発表・聴講ともに誰でも参加できます。元々はエンジニアが中心になって始めたものですが、今ではエンジニアだけでなく、プランナーやデザイナーなども参加して、多岐にわたる内容が発表されています。講演テーマは基本的に自由で、話したいことがある人が自主的にエントリーするのですが、予定が数カ月先まで埋まるくらい活発な運営が続いています。 このスキルサーズデーでは、外部から専門家を招いて講演していただくこともあります。今回は、タワーズ・クエスト株式会社の代表で、「テスト駆動開発
Cy#の河合です。Cy#は今年の9月に設立されたばかりの会社で、その名の通りC#関連の開発を行っていきます。今回はCy#よりオープンソースライブラリとして、Unity向けのリアルタイム通信/API通信統合ライブラリをリリースしました。 GitHub – cysharp/MagicOnion もともと2年前に最初に公開し、実際にリリースされたモバイルゲームでも使用していたものですが、今回リアルタイム通信向け機能をよりブラッシュアップして、正式公開としました。そういう点では、”既に実績がある”とも言えます。今回より新しいスタートということで、バージョン2.0です。 基本的な機能は サーバークライアント間のストリーミングRPCを提供します。サーバー側をC#、クライアント側もC#で実装し、メッセージのフォーマットはLZ4圧縮されたMessagePack、通信はgRPCによるHTTP/2を用いていま
Cygames エンジニアの森重です。 2018年9月30日(日)に東洋大学で開催されたCG技術の実装と数理 2018に於いて『Introduction to Direct X Raytracing』という発表を行いました。 CG技術の実装と数理は、SIGGRAPHやEurographicsなどで発表された技術論文やコースを自分で実装して、見えてきた課題やわからなかった点を議論して、次の技術研究開発につなげていく研究会です。 当日は、台風の影響で悪天候の中、発表と議論に、お越しいただいたみなさま、ありがとうございました。 はじめに 本発表では、レイトレーシングをCPU, GPU Compute, DirectX Raytracing(DXR)のそれぞれで実装してみた際の検討事項、課題、結果について紹介しました。 以下が発表資料となります。 「DXR を使ったAmbient Occlusio
こんにちは。コンシューマー統括マネージャー 和泉澤です。 2017/9/1(金)、CEDEC2017にて、「本当にリアルなMixed Reality コンテンツを実現する為の技術開発」という講演を行いました。 当日、講演へお越し頂きました皆様、誠にありがとうございました。 以下は、講演のスライドです。 本講演では、下記の5つのトピックについて解説しました。 Mixed Reality デモと、その基礎制作技術 リアルなMixed Realityコンテンツとは? コンテンツに合ったデバイス特性 高度なHololens活用技術 デバイス非依存へ。真に汎用的な解法 講演資料のそれぞれのトピックを解説し、 最後に講演内ではお話しできなかったテーマについても紹介します。 Mixed Reality デモと、その基礎制作技術 まず、講演に先駆けて弊社で開発した2つのMRコンテンツのデモをご覧いただきま
みなさんこんにちは、Cygames にてシニアゲームエンジニアを務めている金井と申します。 9月1日に開催された CEDEC 2017 にて、ゲーム開発者が作るゲーム開発のための教科書 〜ブラウザ、ネイティブ、コンシューマ全てに共通するゲーム開発技術を書面化するための取り組み〜 という題名で講演をさせていただきました。聴講していただいた皆さま、ありがとうございました。 当日の講演においては、教科書プロジェクトの運営とその成功のポイントについてご紹介いたしました。 その後もプロジェクトは順調に継続しており、3部に分かれた教科書プロジェクトの講義のうちコンピューター基礎編については8〜9月で 150 人程度が参加しています。 この講義に使用している資料ですが、「ぜひ教科書を公開してほしい」という要望を頂いております。1部あたり100ペー
次のページ
このページを最初にブックマークしてみませんか?
『Cygames Engineers' Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く