「Bungie Farm」という大規模な分散処理環境
以前、別件で調べ物をしていた時にBungieが社内で運用する「Bungie Farm」という大規模な分散処理環境のスライドを発見しました。
Bungie Farmに関するスライド
※Download articleで、PPTファイルが落とせます。
最初はてっきり「俺たちの環境スゲェー!分散環境マンセー」的な内容かと思って読んでいたのですが、実際はもっと謙虚で「俺たちは苦労してゼロから分散環境作ったけど、最近、良いミドルウェア出てるから、それを上手く使えばそんなに苦労しないよ。」って感じでした。
詳細は、スライドをご覧いただくとして、自分に分かる範囲で読み解いてみました。
Bungie Farmって何?
Bungie Farmでやる事
- バイナリ ビルド (binary builds)
- ゲームの実行ファイルとツール
- ソースの静的解析
- ライトマップ レンダリング (lightmap rendering)
- Precomputed lighting
- 影の焼付け
- コンテント ビルド (Content builds)
Halo3制作期間内でのジョブ処理
- 期間内で、約50,000件のジョブを処理
- バイナリ ビルド 11,000 回以上
- ライトマップ レンダリング 9,000 回以上
- その他のジョブ 28,000 回以上
エンドユーザエクスペリエンス
- エンドユーザは、Webインターフェースからジョブを投げ、結果はメールで受け取る
- もちろん、各種作業についての進捗も、Webインターフェースからモニタリングできる
Bungie Farmが出来るまで
この辺りまでが、Bungie Farmの概要です。
そして最後に、Your Farmと題して、これから分散処理環境を作る方のために、いくつかのメッセージと、ミドルウェアの紹介をしていました。
Your Farm.
- Bungieは、いくつかのタイトルで成果をあげてきた環境を構築してきました。しかし現状では、自動化・分散処理などの恩恵を得るために大規模なFarmを必要としません…。たぶん、自分の手で全体のシステムを書く必要さえありません。
- 現在、このような問題を解決する為に設計された、ミドルウェアがあります。もし自分が、もう一度ゼロからFarmを構築するとすれば、これらのミドルウェアの評価をしているでしょう。Bungie Farmを作り始めた時、ミドルウェアの大半は存在しなかったか、十分熟していませんでした。
- 下記にあげるのは、現在利用可能なミドルウェアです。
PipelineFX Qube (レンダーファームの管理ソフト)
Incredibuild (分散ビルド環境)
ココで紹介されていた、ミドルウェアについては、Incredibuild以外は、あんまり知らないのですが、この辺りのツールの活用により、分散環境を作る時の手助けになるようです。
スライドの最後にもありましたが、ビルドプロセスは、まず第一にシステムの完成度なので、まずは1,2台のPCで処理を自動化させ、ゆっくりシステムを発達させる事が重要だとも書かれていました。
そんなわけで、Bungie Farmの概要を読み解いてみました。いつもはなんとなく読んでいる英語のスライドですが、こんな感じでキッチリ書いたの初めてなので、誤訳や内容に対しての突っ込みあれば、助かります。ドキドキ…。