ENGINEを採用したバイオハザード7がリリースされてから5年以上が経過しました。ENGINEの実績を振り返りつつ、現在の運用フロー、今後のビジョンについて紹介します。公開された動画を一部改変してスライド化しております。Switchのロゴは任天堂の商標です。Inc.のサービスマークです。ENGINE」を開発している技術研究統括によるカプコン公式アカウントです。これまでの技術カンファレンスなどで行った講演資料を公開しています。Switchのロゴは任天堂の商標です。Inc.のサービスマークです。ENGINEのこれまでについて紹介します。ENGINEはカプコンの内製のゲームエンジンになります。2014年に開発が開始され、2017年に初の採用サイトルであるバイオハザード7がリリースされました。ENGINEを採用したタイトルは順次増加し、サポートするプラットフォームも広がっています。2017年にバイオハザード7がリリースされました。ENGINE採用タイトルがリリースされています。ENGINEを採用したタイトルが順次リリースされる予定です。ENGINEがサポートするプラットフォームも拡大しています。/Linuxやクラウドプラットフォームにも対応しています。高いパフォーマンスと安定性についてです。ENGINEでは内製エンジンのメリットを活かし、タイトルとエンジン開発者が緻密に協力しています。タイトルに合わせた最適化を行うことで高解像度で高フレームレートを実現しています。ENGINEはブロッキングロードを完全に廃止しました。シークタイムを最小化する動的なスケジューリングによって、ロード時間の短縮を実現しています。独自のガベージコレクションアルゴリズムを採用することで、定期的なカクツキは最小限に抑えられています。タイトルの評価を下げることがないようにしています。ENGINEの高い開発効率についてです。ENGINEは高速なイテレーションを実現し、開発サイクルを効率的に回すことができます。全てのタイトルコードをC#言語で統一することで、ビルド時間とクラッシュバグを大幅に削減できます。することなく即座に変更を反映できるホットリロードにも対応しています。コンバート済みのアセットを共有できるネイティブキャッシュによって、アセットのコンバート時間を削減できます。全てのリソースがリロードに対応しており、ゲームを再起動することなく即座にアセットの変更を反映できます。ランタイムとツールのプロセスが分かれていることで、ターゲットプラットフォーム上で即座にゲームを実行可能です。アセットの依存関係を完全にトレースすることができ、事前準備なく自動的にパッケージを作成できます。このような様々な効率化により、余力をタイトルの品質向上に充てることが可能です。次にモジュラー構造についてです。ENGINEでは、レンダリングやモーションといった機能をモジュールという単位に分割しています。自由に組み合わせてタイトルごとにエンジンを構成できます。クラウドサーバー上で動かすことで多人数のマルチプレイを実現しています。利用したCPSのエミュレーションモジュールを組み込むことで、ゲーム内のゲームセンターを実現しています。最後に下位互換性についてです。ENGINEで作成されたタイトルは、全て最新のエンジンで動作するようになっています。作られたタイトルを、PS5のレイトレーシングのような最新機能を活用してアップグレードすることができます。活用することができます。ENGINEの今について紹介します。ENGINEを採用するようになりました。ENGINEが対応するプラットフォームも増え続けています。カタログタイトルも増え続けています。エンジンの利用者も増え続け、それに伴って日々の問い合わせも増え続けています。不具合の報告と、修正対応も増え続けています。このためエンジンの運用体制をいかに効率化するかが重要になってきました。ENGINEの運用を効率化するために行った様々な取り組みについて紹介します。初めに、RELauncherの導入と見える化について紹介します。ENGINEとプロジェクトを繋ぐHUBになるツールです。情報にアクセス可能です。RELauncherのホーム画面はこのようになっています。左側のタブで、複数のプロジェクトを切り替えることができます。中央には最新のエンジンのリリースノートや、連絡事項、プロジェクトのスケジュール等が表示されます。上のボタンからは、プロジェクトを取得したり、新しく作成することができます。右上のリンクからはエンジンのソースコード、マニュアルやツール等にアクセスできます。切り替えることも可能です。RELauncherのプロジェクト画面はこのようになっています。中央には、選択したプロジェクトの最新状況が表示されます。Launchボタンからは、エンジンの更新と起動ができます。起動するエンジンのリビジョンを任意に切り替えることも可能です。右上のリンクからは、各プロジェクトのNASサーバー、Hansoft、WEBページやツール等にアクセスできます。次にエンジンの安定性と互換性を担保する方法について紹介します。欲しいということです。一般的には、機能の追加や更新を行うと不具合も必ず発生します。ENGINEの方針として全てのリリース済みタイトルとの互換性を維持する必要があります。変更のたびに全てのタイトルの動作を確認するのは現実的ではありません。このような課題を解決するために、エンジンの品質を担保する仕組みが必要になりました。そこでREQAと呼ぶ、エンジンの安定性と互換性を維持するための一連のテストフローを導入しました。デイリーパッケージビルドです。これにより、アセットのコンバートやビルドの問題を検出できます。自動プレイを行います。これにより、クラッシュやメモリリークの問題を検出できます。同時に、QAチームによる人力でのパッケージのスルーチェックを行います。チェックし、製品と比較して見た目や動作に差がないかを確認します。最新のエンジンを利用し通常作業を行います。これにより、エンジンのツール、エディタや、最新プロジェクトの動作に問題がないかをチェックします。REQAを通してエンジンが配布されるまでの流れです。エンジンのソースコードはMasterとReleaseの二つのGitブランチで管理されています。エンジン開発者はMasterブランチに対して都度コミットを行います。次の日に、作成されたパッケージの自動プレイと、QAチームによるパッケージのスルーチェックが行われます。同時に、カナリアテストとして一部のタイトル開発者が最新のエンジンで通常作業を行います。重大な問題が見つかった場合は、リリースは見送られます。Gitリセットして最新エンジンを配布します。軽微な問題はReleaseブランチにHotFixを入れて配布します。画像はREQAの運用状況になります。これまでの平均のテスト成功率は約30%です。言い換えれば、毎日7割の確率で新しい不具合が入っていると言えます。これまでの平均のリリース率は50%になります。2日に一度の頻度で、安定した最新エンジンを配布できていると言えます。軽微な不具合はHotfixを入れて配布することで、リリース率の改善につながっています。次に不具合調査の時間を削減する方法を紹介します。実際に不具合の調査を始めるまでにはいくつもの手順があります。調査対象となるブランチのエンジンをビルドします。次に、不具合が発生したプラットフォームの機材を準備し、報告があった状況までゲームをプレイして、不具合を再現させます。このように、実際に1つの不具合調査を始めるまでには多くの準備と時間が必要になります。削減することが生産性に直結します。物理的な解決方法として、エンジン開発者全員にハイエンドPCを配布しました。ストレージは最低10TBのSSDが搭載されています。分散ビルドで15分以上かかっていたエンジンのビルドが5分以下まで短縮できました。全てのプロジェクトのアセットを保持できます。次にデバイスファームを導入しました。不具合調査などで必要になった時に機材を確保し、不要になった時に機材を解放する仕組みです。これにより、全員が全プラットフォームの機材を持つ必要がなくなりました。次に開発用のクラウドセーブを導入しました。ゲーム上でセーブを行うと、自動的にセーブデータが開発用サーバーに転送されます。ユーザーの間でセーブデータを簡単に共有できるようになりました。スナップショット機能を利用することで、任意のセーブデータを永続的に保存することもできます。セーブデータのスナップショットを作成し、スナップショットIDを記載すれば、直ぐにその状態を再現できます。不具合の再現までの手間を削減することができます。次にパッケージマネージャーを導入しました。インストールできます。パッケージを作成した時のエンジンのビルド環境も復元できます。最後に、REProfilerを導入しました。REProfilerはパッケージに直接接続できるプロファイルツールです。ゲーム中の全てのシーン階層や、全てのインスタンスのフィールドを表示し、プロパティなどをリアルタイムに変更できます。リソースやメモリ、パフォーマンスのプロファイルなどデバッグに必要な様々なプロファイル機能を持っています。REProfilerを接続することで、パッケージから直接不具合調査を行うことができるようになりました。このように、ハイエンドPCや様々なツールを導入することで、不具合調査にかかる時間を短縮することができました。次にエンジンの問い合わせ対応や、案件の管理方法について紹介します。タイトルのQAについては、不具合ごとにHansoftで管理されますが、内容はTeamsに転載され、担当者にメンションされます。Teamsはリアルタイム性が高く、コミュニケーションには非常に便利です。流れやすい、検索機能が弱い、タスク管理には使えないなどの問題もあります。そこで、TeamsViewと呼ぶツールを導入しました。RELauncherに統合されたTeamsベースのタスク管理ツールになります。クローラーが全てのTeamsの内容を社内のサーバーにキャッシュします。スレッドのフィルタリングといったことが可能になりました。管理することができます。外部ツールとステータスを同期することもできます。ENGINEのこれからについて紹介します。ENGINEを運用してきた中で、いくつかの課題が見えてきました。プロジェクト規模の拡大と多様化です。