
2019年7月12日、東京・秋葉原UDX GALLERY NEXT THEATERにて、アプリやゲームの開発・運営に関わるソリューションが一堂に会する入場無料のイベント「Game Tools & Middleware Forum 2019(GTMF)」が開催されました。本稿では、シリコンスタジオのミドルウェア技術部部長・辻俊晶氏によるセッション「ミドルウェアのGoogle Stadia対応について」のレポートをお届けします。
シリコンスタジオは、ポストエフェクトエンジン『YEBIS』、グローバルイルミネーション『Enlighten』、レンダリングエンジン『Mizuchi』、ゲームエンジン『OROCHI』など多数のミドルウェアを提供していますが、今回のセッションではそれらをいかにStadiaへ対応させるかが主題となりました。
Stadiaは、Googleが2019年から提供を開始する予定(日本でのサービス開始時期は未発表)となっているクラウドゲーミングプラットフォームです。LinuxベースのOSを使用しているため、ゲーム開発の際に用いるグラフィックスAPIはVulkanとなります。そこで、まずは『YEBIS』と『Enlighten』を優先してVulkanに対応させることから着手したそうです。


Stadia対応の際、Visual Studio VSIが開発環境となります。その使い勝手は非常に良好とのことですが、フレームワークの歴史がまだ浅いこともあり、「インストールしたのに認識されない」、「デバッグが行えない」などの問題も発生したそうです。その都度Stadiaの開発サポートに問い合わせをして解決を計りました。
辻氏は「(Stadiaの)サポートの対応はとても親切でしたし、こうした諸問題もSDKの進歩で今後解消されていくと思います」と補足したうえで、現時点ではできるかぎりPCで開発を進め、完成が見えてからStadiaの開発環境で仕上げるのが望ましい、そのためにはVulcanをPCとStadiaの双方で動くようにしておく必要がある、との見解を語りました。




Stadiaの具体的なパフォーマンスについては、詳細は述べられないとしつつも「4Kがスタンダードになる時代がきていることは間違いない」と言及。加えて「何もしなくても4K・60FPSが出せるというわけではなく、適宜最適化は必要です。もしかしたら、チェッカーボードレンダリングが必要になる局面もあるかもしれません」と補足しました。さらに、Stadiaのようなストリーミングによる映像配信は環境次第でブロックノイズが発生する可能性もあるので、ノイズが出てしまうことを前提に絵作りする必要があるのかなどの課題も俎上に載せられました。
続いては、『YEBIS』をStadiaに対応させた際の話題に。『YEBIS』は各種グラフィックスAPIの違いを吸収するGHI(Graphics Hardware Interface)を備えており、それゆえに幅広いプラットフォームに対応できるのが強みのひとつです。


その後、2014年9月の『Mizuchi』正式発表を機に、『Mizuchi』のグラフィックス抽象化レイヤーとの統合を開始。それにともない、DirectX9、Wii U、PlayStation 3、PlayStation Vitaなどへの対応は終了し、新たにVulkan、PlayStation 4、Nintendo Switch、そしてStadiaを含む"その他新世代のコンソール"への対応を図りました。
StadiaおよびVulkanへの対応にあたっては、大規模なリファクタリングを実施。HLSLで記述されたシェーダをSPIR-Vにコンパイルしやすい形に修正し、コンパイルしたものをVulkan APIに移行させる形を取っているとのことです。
『Mizuchi』に大きく関わる要素として、マルチスレッドへの対応にも言及されました。当初はパスごとに1つのタスクとして振り分けてみたところ、パスごとに描画するコマンドの数に大きなバラつきが出て負荷に差が付いてしまい、効率よくスケールできないと判明。
各描画パスを数十個単位に分割して再び試したところ、かなりスケールしやすくなりました。ただし、これはこれでタスクの数が膨大になってしまいやすいなどの課題があります。試行錯誤を経てたどりついた現在の実装は、各描画パスをRenderBatchと呼称し、シングルタスクで収集してコストを設定。コストに応じて各スレッドに振り分けることで、負荷のバランスの偏りの解消に成功。辻氏は、4Kの先に待つ8Kへの可能性、チェッカーボードレンダリングの必要可否なども随時検討しながら、今後も最適化に向けて邁進すると語りました。






Stadia対応への話はここでひと区切りとなり、話題は『Enlighten』の新SDKに移行しました。SDKは3.09までがリリース済みで、現在はSDK 3.10を開発中。「Visual Studio 2017(以降のバージョン)」へ対応し、Unreal Engine 4版のドキュメントも日本語に対応します。さらに辻氏が「『Enlighten』の弱点のひとつだった」と語る大規模マップへの処理も改善。さまざまな観点から、これまで以上に扱いやすくなるとしました。


『Enlighten』のStadiaへの対応についても言及されました。『Enlighten』はCPUメインで動作するうえ、Linuxへの対応もすでに完了しているため、Stadiaへ対応させるにあたりやるべきことは比較的少ないと考えているとのこと。近日中にSDK 3.10をリリースし、そのあとに対応を開始するがすぐに終わるだろう、と見通しを語りました。
『Enlighten』のその後の予定としては、まずサポート体制の強化が挙げられました。いまは同一のエンジニアが開発とサポートを両方こなす局面が見られるそうで、サポート専任のエンジニアを増員して役割分担を徹底する構えです。また、現在構想中だというメジャーアップデートでは、さらなる高速化や、リアルタイムレイトレーシングの活用、Probeライティングの強化などが検討されていると明らかにしました。


講演の最後には、『Enlighten』のロードマップについての言及がありました。機械学習とレンダリングを組み合わせた、さらなるリアルさを持つ表現技法の追求/研究、自然や天候などのプロシージャルな表現の追及などに加え、非ゲーム業界への展開も積極的に行っていくとの見通しが明らかになりました。『Enlighten』は自動車業界をはじめ、建築業界、映像制作の現場などでニーズが増しており、映像制作のフローをより効率化できないか、他企業と連携を取りつつ新たなワークフローを模索しているとのことです。
