- Architect of Ruin 開発チームは当初、BevyエンジンとRustで開発を始めたが、実務上の問題から UnityとC#へ移行した
- RustとBevyの長所があるにもかかわらず、協業、高水準の抽象化の必要性、頻繁なAPI変更、AI学習効率の低下、モッディングの限界などが課題になった
- Unityを試験的に導入して3つの中核機能を移植し、3日で成功裏に検証、6週間で全体の移植を完了した
- 移行後は コード量が減り、開発速度が向上し、エコシステムのツール活用まで可能になって、開発満足度が大きく高まった
- RustとBevyへの愛着は今も大きいが、プロジェクトに必要な要件を満たすために現実的な選択をしたことを強調している
BevyとRustでの初期開発
- BevyのECSモデルとRust特有の コンパイル時チェック を楽しみながら、素早いリファクタリングと安定性を体験した
- タイルマップ、スケルタルアニメーション、カスタムレンダリングパイプライン などをBevyで直接実装した
- Bevyコミュニティ の情熱と活発な議論の文化から多くの刺激を受けた
Emergent Problems: 予想以上に深刻だった問題
- 協業の問題: Rust初心者 のチームメンバーにとってRustの複雑さが 学習障壁 となり、貢献のスピードが落ちた
- 高水準の抽象化不足
- ゲームプレイのアイデアをコードに素早く落とし込むのが難しい という問題があった
- 迅速なプロトタイピング に必要な柔軟性が不足していた
- 頻繁なAPI変更: Bevyの急速な発展による APIの不安定さ と アップデートごとに発生するリグレッションバグ に疲弊した
- AI学習支援の不足: C#とUnityはAI支援による学習が進んでいた一方、RustとBevyは情報が不足しており生産性低下 を招いた
- モッディングの限界: Rust/Bevy環境 では安定した スクリプティング と ABI互換性 の確保が難しいと判断した
移行の決断: Unity実験
- Unreal、Unity、Godot、Bevy継続、自社エンジン開発を比較分析した
- Unityが学習しやすさ、生産性、協業のしやすさ、モッディング可能性 の面で最も高い評価を得た
10%実験
- タイルマップ、キャラクター(Spine)、UI構築 の3つの中核作業を3週間以内でテストした
- 結果として 3日で3つの課題を完了 し、移行を決定した
移植の過程と結果
- 6週間ですべてのシステムとコンテンツをUnityで再実装 した
- コード量の減少、ボイラープレートの削減、開発速度の向上 を実感した
- AI学習支援が向上し、Unityエコシステムのツール(AStar Pathfindingなど)も積極的に活用できるようになった
その後
- Architect of Ruin は現在 Unityベース で開発中であり、素早いアイデア反映と高い生産性 を維持している
- RustとBevy への深い敬意は変わらないが、プロジェクトに適した選択 が必要だったことを強調している
- 今後はUnityベースの実装詳細や移植経験をさらに共有する予定だ
結論
- 開始時に公正な選択肢評価ができていなかった ことを認めている
- 時間を投じて方向を変えたが、結果的にはより多くの時間を得られたと評価 している
- 開発ビジョンの実現には 本能を超えた現実的な判断 が重要だと気づいた
3件のコメント
Rustをスクリプト言語として使うGUIエンジンはたぶんありそうですが、プロダクションレベルで使われているものがあるかは分かりませんね。Rustでゲームを作ることについては、ときどき失敗事例?が上がってきますが、うーん……失敗事例が出てくるのはそういうものだとしても、成功事例の話はあまり聞こえてこない気がして、その点がちょっと気になりますね。うまく使っている人たちもどこかにはいるのでしょうけど
逆に、うまく使っている人はみんなこれくらいは書いているだろうと思って、投稿していないだけではないでしょうか?
Hacker Newsの意見
Rustでゲームプロジェクトを進めて失敗した事例がまた出た。残念なことだ
商用ゲームエンジンがゲーム開発を支配している理由についての良い教訓のように聞こえる
RustをC++の代替としては好きだが、ほとんどのプロジェクトにC++が適しているとは思わない
Rustでのゲーム開発はフロンティア開拓のようなもので、多くの作業が必要だ
Rustは好きだが、高速な反復が難しい
プロジェクトでRustの代わりにGoへ切り替えたところ、反復速度が上がった
Rustエコシステムの高い変動性は予想外の欠点だ
ある開発者はCでゲームエンジンを作り、Luaでゲームを開発している
SapiensというゲームがSteamで成功裏にリリースされたRustで作業するのは、ほとんどの場合より難しい
プロジェクトの目標は、コーディングをしない兄弟でも貢献できるようにすることだった