5 ポイント 投稿者 GN⁺ 2025-04-29 | 3件のコメント | WhatsAppで共有
  • 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件のコメント

 
aer0700 2025-04-30

Rustをスクリプト言語として使うGUIエンジンはたぶんありそうですが、プロダクションレベルで使われているものがあるかは分かりませんね。Rustでゲームを作ることについては、ときどき失敗事例?が上がってきますが、うーん……失敗事例が出てくるのはそういうものだとしても、成功事例の話はあまり聞こえてこない気がして、その点がちょっと気になりますね。うまく使っている人たちもどこかにはいるのでしょうけど

 
qwqwhs 2025-04-30

逆に、うまく使っている人はみんなこれくらいは書いているだろうと思って、投稿していないだけではないでしょうか?

 
GN⁺ 2025-04-29
Hacker Newsの意見
  • Rustでゲームプロジェクトを進めて失敗した事例がまた出た。残念なことだ

    • Rustでメタバースクライアントをほぼ5年間開発しているが、時間がかかりすぎている
    • 別の人はC#/Unityで似たようなプロジェクトを2年以内に進めた
    • Rustの3Dゲーム開発のユーザーベースは非常に小さい
    • RustでAAAタイトルを開発した事例はなく、性能問題を解決した人もいない
    • 使用中のスタックはRend3/Egui/Winit/Wgpu/Vulkanで、Vulkanを除けばバグが多い
    • イベントループを所有しようとするさまざまなクレートが多すぎる
    • クレートが数か月ごとにリファクタリングされ、APIが壊れることが多い
    • Rustではデリファレンスが難しい
    • Rustには単一所有者とデリファレンスのための一貫した方法が必要だ
    • Rustのトレイトはオブジェクトではなく、オブジェクト階層を構成するのに適していない
  • 商用ゲームエンジンがゲーム開発を支配している理由についての良い教訓のように聞こえる

    • ゲームを作るためにやるべきことは多いが、その大半はすでに解決済みの問題だ
  • RustをC++の代替としては好きだが、ほとんどのプロジェクトにC++が適しているとは思わない

    • 多くの人はRustのほうが効率的だと思って選んでいるようだ
  • Rustでのゲーム開発はフロンティア開拓のようなもので、多くの作業が必要だ

    • Rustはまだ準備ができていない
  • Rustは好きだが、高速な反復が難しい

    • Bevyを使ってみたが、Godotに戻った
  • プロジェクトでRustの代わりにGoへ切り替えたところ、反復速度が上がった

    • コードはより脆くなるが、プロジェクトの性質上は正しい選択だと思う
  • Rustエコシステムの高い変動性は予想外の欠点だ

    • クレートは頻繁に放棄されるが、これはRustを主に使いたがる人が多いからだと思う
  • ある開発者はCでゲームエンジンを作り、Luaでゲームを開発している

    • ゲームエンジンとゲームが明確に分離されている
    • Sapiens というゲームがSteamで成功裏にリリースされた
  • Rustで作業するのは、ほとんどの場合より難しい

    • これは個人的な経験に基づく意見だ
  • プロジェクトの目標は、コーディングをしない兄弟でも貢献できるようにすることだった

    • 常に最新版へアップグレードし続けなければならないと感じる
    • Unityを使うスタジオは、特定のバグが修正されない限り、バージョンを頻繁には上げない