Grani Engineering Blog

株式会社グラニはC#を中心として、ASP.NET、Unity、VR開発を行っています。

Unite 2017 Tokyo講演「「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術」

CTOの河合です。Unite 2017 Tokyoにて、 「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 という講演を行いました。

講演に参加いただいたみなさま、ありがとうございます。資料のほか、講演の動画は、また後日配信されるようなので、そちらもご覧いただけたらと思います。

C#大統一理論

「黒騎士と白の魔王」は、世にも珍しくクライアントとサーバーが共にC#で構築されています。クライアントがC#なのは当たり前ですが(Unityのお陰ですね!)、サーバーがC#なのも、そう珍しいわけではないのですが(特にBtoBの場では、Windows Serverで、C#でウェブシステムを組むことはよくあることです)、両者が組み合わさったケースは中々珍しいと思います。しかしグラニでは、一作目の「神獄のヴァルハラゲート」をC#で構築していたこともあり - グラニがC#にこだわる理由 - 神獄のヴァルハラゲートの裏側をCTOが語り尽くす!、両者をC#で作り込んでいくことは自然な選択でした。

しかしそれは同時にチャレンジでもあります。構成に前例が少ないこともですが、単にリクエスト/レスポンスが共通であること以上のメリットを生み出していこうと様々な試みを行いました。成功した試みもあれば、失敗もあります。その経験を、今回のセッションでは是非共有したかったわけです。

クライアントとサーバーがC#で構築されることは、間違いなく大きなメリットがあると実感しています。まだまだ完全な理想点には至っていませんが、着実に向かっていると考えています。今後も、C#大統一理論をより昇華させていきたいですし、ノウハウは積極的に共有していきます。皆さんも、是非チャレンジして欲しいですし、そのための参考になれば何よりも嬉しいです。

ライブラリ群

グラニでは実際に黒騎士と白の魔王で使われている多くのライブラリを、オープンソースソフトウェアとして公開しています。その中にはUnity単独で使うことも可能ですが、サーバーサイドもC#で構築することで、更なるパワーを発揮するのものもあります。

講演の後半で紹介したMessagePack for C#(Unityで、C#で、世界最速の汎用バイナリシリアライザ)もその一つです。単独で使っていただいても最高のパフォーマンスを発揮しますが、サーバーサイドもC#で構築されていれば使い勝手が大幅に向上します。より自然にUnity用のコードジェネレーターを動かせたり、特有の属性でマークすることによる挙動の変更が手間なくできるなど、IDEも含めた言語機能をフルに活かした使い心地を感じていただけるように注力しました。

サーバーサイド実装とインフラ

黒騎士と白の魔王のもう一つのチャレンジとして、gRPCをUnityで使うという世界初の事例があります。Unityで使うというだけではなく、gRPCをStreamingで活用していくというのも、あまり前例のないケースです。

そうした、今回紹介していない、サーバーサイドでのgRPCの使いこなしや、インフラ構築の話は、 2017 年 6 月 1 日(木)にAWS Summit Tokyoのサブトラック Game Tech Session ~AWS Summit Tokyo 2017~にて 「『黒騎士と白の魔王』の gRPC による HTTP/2 API/ストリーミング通信の実践」 として講演する予定です。こちらはUnityだけではなく、他のモバイルアプリケーションやMicroservicesのバックエンドとしてgRPCを使っている方々にも参考になる話ができると思っていますので、是非よろしくお願いいたします。