Ayelet StudioはSpeedrunCIを作ったチームです。つまり、これは私たち自身の話です。私たちはChennaiにある約30人のスタジオで、11世紀の南インドを舞台にしたアクションアドベンチャー、Son of ThanjaiをUnreal Engine 5で開発しています。SpeedrunCIは、自分たちのビルドの問題を解決した社内ツールとして始まりました。今も毎日、このゲームをSpeedrunCIでビルドしています。
開示:SpeedrunCIはAyelet Studioが開発しています。以下の数値は私たち自身による計測です。
- スタジオ
- Ayelet Studio(インド・Chennai)
- チーム
- 約30人
- ゲーム
- Son of Thanjai(アクションアドベンチャー)
- エンジン
- Unreal Engine 5
- プラットフォーム
- PS5、Xbox Series X|S、PC
- 導入前
- Jenkinsと1台のビルドマシン
Son of Thanjaiのフルビルドを、同じマシンで計測。SpeedrunCIの初回ビルドは、キャッシュが温まるまで時間がかかります。
力の半分は、Jenkinsを動かし続けることに消えていた
多くのスタジオと同じく、私たちもJenkinsから始めました。数週間のうちに、BuildGraphをシェルコマンドとして呼び出し、環境変数や共有フォルダで状態を受け渡し、原因をよく理解できていない失敗を回避するためにフラグを足すようになっていました。
フルビルドには3時間以上かかりました。3つのプラットフォームは1台しかないビルドマシンで順番に実行されたため、3つすべてを出荷するには3倍の時間がかかりました。テクスチャを1枚変えただけでフルリビルドが走ることもあり、何かが失敗しても、ログには200ステップの処理のどこかで何かが壊れたとしか書かれていませんでした。
パイプラインをデバッグできるのは1人だけでした。アーティストは夕方に作業をプッシュし、それが無事だったかを翌朝に知ることになります。3人のエンジニアは念のため、コミットのたびに事前にローカルビルドを実行していました。1日最大9時間ものコンピュート時間を、CIの結果を予測することすらできないビ ルドに費やしていたのです。
「プロデューサーとしての私の仕事は、ビルドがどういう状況で、誰が止まっているかを把握することに尽きます。以前はそれを知るだけで3.5時間かかり、ビルドが壊れれば丸1日を失っていました。今はSpeedrunCIのおかげでチーム全員が毎日ビルドし、私はすべてのビルドを実行した瞬間から確認できます。ビルドの問題でマイルストーンが遅れることもなくなりました。」
機能ごとに
プラットフォームごとのパイプラインを並行して
Win64、PS5、Xbox Series X|Sはそれぞれ専用のパイプラインを持ち、同じコミットから開始されます。1台のマシンで順番待ちをするのではなく、複数のランナーで同時に実行されます。以前の3時間の待ち時間の大半は、この順番待ちによるものでした。
ゲームを理解するキャッシュ
SpeedrunCIは、コンパイル済みのコード、クック済みのアセット、シェー ダーと派生データを実行間でキャッシュし、変更が影響する部分だけを再ビルドします。同じハードウェアで3時間32分と27分の差を生んだのはこれです。実行する必要のないステップを、実行しなくなったのです。
問題の場所を指し示す失敗
ビルドが失敗するときは、どこか1つのステップで、そのステップのログと、きっかけとなったコミットとともに失敗します。SpeedrunCIはログを読み、確認すべきファイルと行を添えて修正案を提示します。赤いビルドの修正にかかるのは、午前中いっぱいではなく数分です。
Unreal Editorの中からビルド
アーティストやデザイナーは、エディタのツールバーにあるSpeedrunCIプラグイン(Fabで無料)からビルドを開始します。リアルタイムのステータスはエディタ内で確認でき、コマンドを知っているたった1人を探し回る必要はもうありません。
チーム全員が手に取れる成果物
完成した約20 GBのコンソールビルドは、それを作った実行からそのままダウンロードできます。Google Driveのリンクも、どれが最新のビルドかを尋ねる必要もありません。
全員に見えるビルドステータス
プロデューサーとQAは、すべてのビルドを実行した瞬間から、ダッシュボードとチームチャットで確認できます。スタンドアップでパイプラインについて尋ねる人はもういません。
ホスト型Loreリポジトリ
Ayelet Studioは、SpeedrunCIのホスト型Loreリポジトリを本番環境で運用した最初のスタジオです。
ビルドが話題にならなくなった
- アーティストのコミットは1日1回から2回に増えました。誰かに言われたわけではなく、夜間ビルドを恐れなくなったからです。
- エンジニアは「念のため」のローカルビルドをやめました。CIが信頼できるビルドになったからです。
- 専任のビルドエンジニアはいません。キャッシュ、並列実行、オーケストレーションはSpeedrunCIの役目です。
- プロデューサーは誰にも聞かずにすべてのビルドの状況を把握できるので、ビルドの問題でマイルストーンが遅れることはなくなりました。