大規模ゲーム開発の課題とクラウドの活用
講演は、昨今の大規模ゲーム開発における課題の提示から始まりました。
新世代機向けの大規模ゲーム開発においては、開発環境の効率化やコンピューティングリソースの枯渇のほか、AI や機械学習(ML=Machine Learning)をいかに開発に活用するなどのトピックがあります。
また、昨今のゲームは買い切り型だけではなく、運用型タイトルやシナリオ追加など、コンテンツを継続的にリリースする場合も多くあります。このようなタイトルを開発する際、開発者がクリエイティブな仕事に注力できるようにするため、ツールの効率的な活用やCI/CD、QA(Quality Assurance。品質保証)テストの自動化 などが求められています。
※CI/CD:Continuous Integration(継続的インテグレーション)/ Continuous Delivery(継続的デリバリー。自動的にビルドやテストの実施、本番環境へのリリース可能な状態にすることを指す
さらに、新型コロナウィルス蔓延の影響もあり、開発拠点にも柔軟性が求められています。自宅から開発をしたり、企業によっては国内や海外に複数の開発拠点を保有したり、ケースによって就業場所を変えるなどワークスタイルも多様化しています。
このような開発課題を効率化するための対策が「クラウドの活用」だと下田氏は言います。クラウド活用を伴う開発事例として、 GDC2022では2件の日本事例が紹介されています。
今回のCEDEC2022でも開発現場でのクラウド活用のセッションとして、バンダイナムコスタジオによる「DX(開発者体験)の向上を目指すゲーム開発インフラの進化とDX(デジタル変革) 」という講演があったように、国内開発会社でもクラウド活用が進みつつある
オフィスだけでの開発環境からクラウド環境にシフトすることで、多様な働き方や地域を超えたコラボレーション、クラウドコンピューティングリソースを活用しての開発が可能になる
QAテストへのクラウド活用事例
ゲーム開発におけるクラウド活用事例のひとつとして、QAテスト分野があります。Xbox Game StudioではQA専門のエンジニア陣がおり、開発の早い段階でQAテストの相談や組み込みの支援を行っています。そこでは自動化や機械学習をワークフロー に導入するためにクラウドが活用されています。
ゲームプレイの分析 クラウドはゲームプレイの分析にも活用されています。プレイヤーがどこでゲームオーバーになっているか、どこで道に迷っているかをデータとして蓄積・分析することで開発のクオリティを向上させています。
リモート環境によるテストプレイ リモートのテストプレイ でのクラウド 活用についても解説されました。テスターを外部で雇う際、直接アプリのデータを渡さず、クラウド上で稼働させたゲームをWebブラウザ上でプレイさせることで、ゲーム内データやコードなどの情報漏洩を防ぐことができます。
文字や透かしを入れることでスクリーンショットによる情報漏洩も抑制している
クラウド上のテストプレイでは、アクションゲームなど動的なゲームでフレームレート が担保できるかが危惧されるが、60fps、レイテンシー60msを保った環境を提供できているとのこと
QAテストの自動化 さまざまなクラウド活用の中で、マイクロソフトが特に注力したのがQAテストの自動化です。人間と同じインターフェースでbotがテストを行えるようにしたことで、テストの頻度を上げることができています。
テスターを複数用意する必要があるマルチプレイのテストも自動化されている
専用のインターフェースも設計されており、スタジオを横断して使えるようになっている。一般的なゲームエンジン でも、ゲームコードを変更せずに自動化されたテストプレイ機能を組み込める
何度も使うタイプの自動テストは、再利用していくことでテストの信頼性も向上していきます。そのため、多くのスタジオ間では自動テストのソリューションが共有されていて、『Gears 5』 や『Forza Horizon 5』 といったマイクロソフトの大型タイトルでも本機能が活用されています。
自動テストもテスターがパラメータを変更することで、複数種類のテストに対応できるようになっている
コードテストの自動化 マイクロソフトでは、テストプレイの自動化だけではなく、ゲームコードのテスト自動化も行っています。講演内では、GDC 2019で行われた『Sea of Thieves 』のコードの自動テストを『マインクラフト 』に適用した件についての事例が紹介されました。
『Sea of Thieves』 はゼロから作ったタイトルのため、ゲームコードの自動化ロジックは組み込み易いですが、すでにコードベースが膨大となる『マインクラフト』 にテスト機能を組み込むのは大変な作業となったとのこと。
「どうやってコードテストの自動化を書けばいいのか?」と現場では喧々諤々があったなか、「テストを諦めるのではなく、テストを書きやすくするようにする」と方針を決めていきます。技術的な負債を直していきながら、徐々に自動テストを組み込みやすい環境を構築していきました。
このような過程で組み込んだ自動テストは現場の開発者らを巻き込むことでさらにスケールし、開発後半には簡単にテストが実施できるようになっています。
コードテストの自動化はGitHub ActionsやAzure DevOpsといったクラウド上で実行する ことができ、これによって「開発の最後に会社に泊まり込みをする、いわゆるクランチが起きないような未来にしていきたい」と下田氏は語りました。
クリエイティブのためのクラウド活用
ゲーム開発におけるクラウド活用について、下田氏は「クリエイティブな部分での利用」にも言及しました。
デジタルツインを目指す『Microsoft Flight Simulator』 その事例のひとつとして、リアルな飛行機操縦体験が可能な『Microsoft Flight Simulator』 シリーズが挙げられました。
数十年に渡るシリーズのなかで、ドットから3Dに表現が進化し、空模様や海の表現が精密に描かれるようになっていく様子が紹介された
ゲーム技術の歴史を大まかに振り返るスライドも。ワイヤーフレーム の時代からDirectXの誕生以降、リッチな3D表現が容易に実装できるようになっている
最新作となる2020年版『Microsoft Flight Simulator』 では、ゲームの中に現実の情報を取り込むデジタルツインの要素もあります。本作におけるシミュレーションの範囲は飛行機や世界の都市だけではなく、天気までも含まれています。実際の地図データから3Dモデル を起こしていたり、リアルな天気情報をゲームに反映させたりと、現実に近いルックを実現しています。
地図をベースとした3D化は、Bingによる2Dマップ のデータをAIに機械学習をさせ、3Dモデルを生成しています。
AIによるスピーチ生成 コンピューターによる顔認識や、テキストからスピーチを生成するAPIも活用が進んでいます。マイクロソフトでは事前トレーニング済みのAIサービス群を展開しており、既に数多くのプロダクトで利用されています。
AIによるスピーチ生成の事例として、2020年版の『Microsoft Flight Simulator』内での音声会話が挙げられた。事前に収録した音声ではなく、ゲーム中にリアルタイムで生成されたテキストを、事前に声優の声から機械学習させた音声で読み上げている
画像奥の女性が英語で話した内容をその場で自動翻訳を行い、手前にいるMR上の3Dモデルが彼女の声で日本語スピーチをおこなう事例。彼女自身は日本語は喋れないが、彼女の声を機械学習をさせておくことで日本語での音声を出力させることができる
こうした音声まわりの自動生成は、喋る人物のリップシンクにも対応。音に合わせた口の動きもリアルタイムで生成している
AIによるローカライズ 世界に8か所あるマイクロソフトの研究機関であるMicrosoft Researchでは、1,000人を超える研究者が20以上の分野の研究を行っています。この中ではゲーム開発に関わるAI研究も盛んに行われており、実際にゲーム開発を行うXBOX Game Studiosとタッグを組むことで研究が活性化されています。
こうした研究の成果の例として、Azure Cognitive Services のひとつであるAzure Content Moderator があります。ローカライズに対応した言語の中から、個人データや性的表現などゲーム内で問題となる単語を調査するのにAIを活用するという内容で、画像や動画から肌の多さなどをチェックしたり、OCR(光学的文字認識)によりテキストを抽出してチェックしたりする事も可能です。
「少なくともローカライズの前裁きはこれを使い、最終的はチェックを人間が行うという使い方が想定できる」(下田氏)
Azure Cognitive Servicesの使用、あるいは既存環境からの移行を効率的におこなうためにAzureのエンジニアが支援をするFastTrack for Azureというプログラムも用意されている
クラウド活用を応用したケースで、バーチャルイベント やメタバースといった試みも。「やはり今のゲームはすごくクオリティが高い。これをゲーム以外の用途にも使いたい。」(下田氏)
Luminous Productionsが取り組む、Azureを使ったアセットビルドシステムの構築
講演後半ではLuminous Productionsのプジェミスワフ氏が登壇し、現在開発中のタイトル『FORSPORKEN 』を例に、マイクロソフトのクラウドコンピューティングサービスであるAzureを使ったゲーム開発について解説しました。
『FORSPORKEN』 は “アーシア”と呼ばれる異世界のオープンワールドを駆け抜けながら魔法で戦うアクションRPGです。 “アーシア”のワールドマップを開発するにあたって要求されたのは「広くて高密度であること」と「繰り返しを感じさせないロケーションの豊かさ」 という内容でした。
『FORSPORKEN』開発におけるアセットビルドの自動化 ワールドマップ開発において「アセット 制作を人の手で行うと工数がかかってしまう」ということで、自動化できるところは可能な限り自動化が行われています。 一例として、ワールドマップに木や草をルールを元に自動生成したり、地形のポリゴンを自動生成したりするWorld Procedural と呼ばれる工程が紹介されました。
World Proceduralで木や草が自動生成されるのを俯瞰カメラ で見た様子。どんどん環境が出来上がっていく
ゲームのマップの規模の大きさも紹介。大規模マップだからこそアセット自動生成の重要性が強調される
LOD やLight Probe、そしてナビゲーションメッシュ なども自動化されています。プジェミスワフ氏が「自動化の対象となるアセットの数が非常に多い」と強調する通り、アセットビルドに使用されるサイズは2TBに及んでいるとのこと。
オンプレミスサーバからクラウドサーバへ 膨大なデータサイズが引き起こす問題の一例として、イテレーション(制作、確認、改善という一連の開発サイクル)の長さが指摘されました。たとえばアーティストがデータをVCS(バージョン管理システム、『FORSPORKEN』では「Perforce」を使用)にアップロードしたことをトリガーに、JenkinsがWorld Proceduralのビルド を実行します。ビルドが完了すると、そのデータをVCSにアップロードし、アーティストが最後にビルド結果を確認するプロセスがあります。
ところが、この一連の構成だと、長い時にはビルドに2週間もの時間がかかってしまう問題がありました。
サーバで動かさなければいけないアセットのビルドプロセスは数が多く、社内に多くのサーバを用意する必要がありました。オンプレミスサーバ(社内サーバ)の台数が増えればその分管理コストが増大する上、大量に処理させたい時にすぐに台数を増やせないといったスケーラビリティに関する問題にも直面したそうです。
これらの問題を解決するために、Luminous ProductionsではサーバをオンプレミスからAzureへ移行し、新しいアセットビルドのシステム構築を検討することになりました。「クラウドで動かせば、必要な時間に必要なだけリソースが増えますし、今より柔軟な使い方ができます」(プジェミスワフ氏)。
実際にAzureに移行するにあたって、「DirectXが使える GPU」「オンプレミスサーバと同等のパフォーマンス」「Jenkinsなど既存システムのまま使える統合のしやすさ」「コスト」「スケーラビリティ」「セキュリティ 」 といった要件が重要視されました。
クラウド環境の最適化 Azureへの移行において、最初はシンプルなサーバ構成を検討しました。具体的には、仮想マシン(VM)ごとに専用のAzure Diskを用意し、Jenkinsのマスターに統合して出力結果をPerforceに送る形式です。 しかし、この構成では、月に約125万円(金額は見積額)と莫大なコストがかかることになりました。専用のAzure Diskが高コストの原因になってしまい、TB単位のデータを裁くにはストレージが足りなかったためです。
この際、コストやスケーラビリティ、セキュリティの問題を解決するために、「稼働させるインスタンスタイプの見直し」「専用Azure Diskを共有ストレージにする」「コントロールサーバの実装」という3つの改善策が挙げられました。
「インスタンスタイプの見直し」として、仮想マシンを常時起動から必要な時だけ起動するスポット仕様に切り替えました。これだけで69%のコスト削減ができました。
「専用Azure Diskを共有ストレージにする」については、仮想マシンごとにAzure Diskをひとつ繋ぐ構成からゲームデータの入った共有ストレージとなる独自ファイルサーバを用意し、複数の仮想マシンから利用する構成に切り替えました。
この構成変更により、ロード時間に関しても、Azure上のHDDやSSDを利用していた時よりも大幅に短縮することができました。
独自ファイルサーバでおこなったパフォーマンスのチューニングに関する資料
コントロールサーバの役割はスポットインスタンスの管理、共有ストレージのSync・Submitのタイミングのコントロールと、Jenkinsのジョブに応じてスポットインスタンスの数をコントロールすることです。主にC#アプリケーションとして実装し、Azureと既存のシステムを統合して構成しています。
最終的にできあがった構成。クラウドのAzure側にスポット仮想マシンと共有ファイルサーバ、Azure Diskを設定し、Luminous Productions側がそれらをコントロールするサーバとJenkinsのマスター、Perforceデータソースをまとめる構成となった
このような改善対策を施した結果、当初は約125万円もかかったコストが、最大で約20万円と約82%削減ができました。
BADケースは、Azure側に余剰リソースが無くスポットインスタンスの価格が高騰していた時。それでも約50万円と大きくコストを削減することができている
ビルドに掛かる日数も改善。従来は10日近く掛かっていたところを、クラウドならではのスケーラビリティを効かせて16台使用した結果1日でビルドが完了するようになりました。さらに、16台を使用したとしても、コスト感はそこまで変わらなかったとのことです。
VM1台分だとオンプレミスサーバの時よりパフォーマンスが悪くなっているが、クラウドの強みとして「コストをそこまで上げずに処理台数を増やし、パフォーマンスを上げる」ことができている
プジェミスワフ氏は全体の総括として、「アセットビルドをクラウド環境に移行したことでビルドにかかるコストの削減に成功した」と語り、講演を締めくくりました。
『FORSPOKEN』公式サイト 進化し続けるマイクロソフトのゲーム開発環境最新動向(2022) ~ 最先端スタジオ・Luminous Productionsが『FORSPOKEN』で取り組んだ開発効率化への道~- CEDEC2022
マイクロソフトによるCEDEC2022講演
本講演の他にも、マイクロソフトによるCEDEC2022講演がYouTubeで公開されています。
日本マイクロソフト株式会社 増渕 大輔氏
オンラインゲームのバックエンドサービスとして Microsoft Azure を上手に活用する方法をご紹介します。
モバイルからコンソールでの大規模なゲームからインディーゲームまで、世界規模で多くのプレイヤーを獲得しているゲームサービスを参考に、Microsoft Azure の設計や運用にノウハウ、はまりやすい課題と解決例などをお話いたします。Azureを利用したことがない方にとっても、オンラインサービスの設計として参考にある情報をお届けします。
"No Man’s Sky" から"Forza Horizon 5" まで。国内外の成功タイトルが使う Microsoft Azure
受講スキル
コンシューマ・モバイル・PC問わず、オンラインゲームのバックエンド開発に関心がある方
得られる知見
オンラインゲームのバックエンドの設計や運用ノウハウ
"No Man’s Sky" から"Forza Horizon 5" まで。国内外の成功タイトルが使う Microsoft Azure 講演動画
「ジャンル複合ライティング」というスタンスで活動。ビデオゲームを中核に、映画やアニメーションをはじめ、現代美術から格闘技、社会など数多くのジャンルを横断した企画やテキストを執筆している。