【CEDEC 2010】10カ月でPS3タイトルを開発するために・・・『龍が如く』の実例 | GameBusiness.jp

【CEDEC 2010】10カ月でPS3タイトルを開発するために・・・『龍が如く』の実例

その他 その他

「毎年リリースすることが宿命づけられたタイトル」といわれる『龍が如く』シリーズ。「毎年」とはいっても実質的な開発期間は10ヶ月間しかありません。しかも、クオリティは維持するどころか、さらなる向上が求められるのです。そのような過酷な状況下で、いかにしてタ
  • 「毎年リリースすることが宿命づけられたタイトル」といわれる『龍が如く』シリーズ。「毎年」とはいっても実質的な開発期間は10ヶ月間しかありません。しかも、クオリティは維持するどころか、さらなる向上が求められるのです。そのような過酷な状況下で、いかにしてタ
  • 「毎年リリースすることが宿命づけられたタイトル」といわれる『龍が如く』シリーズ。「毎年」とはいっても実質的な開発期間は10ヶ月間しかありません。しかも、クオリティは維持するどころか、さらなる向上が求められるのです。そのような過酷な状況下で、いかにしてタ
  • 「毎年リリースすることが宿命づけられたタイトル」といわれる『龍が如く』シリーズ。「毎年」とはいっても実質的な開発期間は10ヶ月間しかありません。しかも、クオリティは維持するどころか、さらなる向上が求められるのです。そのような過酷な状況下で、いかにしてタ
  • 「毎年リリースすることが宿命づけられたタイトル」といわれる『龍が如く』シリーズ。「毎年」とはいっても実質的な開発期間は10ヶ月間しかありません。しかも、クオリティは維持するどころか、さらなる向上が求められるのです。そのような過酷な状況下で、いかにしてタ
  • 「毎年リリースすることが宿命づけられたタイトル」といわれる『龍が如く』シリーズ。「毎年」とはいっても実質的な開発期間は10ヶ月間しかありません。しかも、クオリティは維持するどころか、さらなる向上が求められるのです。そのような過酷な状況下で、いかにしてタ
  • 「毎年リリースすることが宿命づけられたタイトル」といわれる『龍が如く』シリーズ。「毎年」とはいっても実質的な開発期間は10ヶ月間しかありません。しかも、クオリティは維持するどころか、さらなる向上が求められるのです。そのような過酷な状況下で、いかにしてタ
  • 「毎年リリースすることが宿命づけられたタイトル」といわれる『龍が如く』シリーズ。「毎年」とはいっても実質的な開発期間は10ヶ月間しかありません。しかも、クオリティは維持するどころか、さらなる向上が求められるのです。そのような過酷な状況下で、いかにしてタ
  • 「毎年リリースすることが宿命づけられたタイトル」といわれる『龍が如く』シリーズ。「毎年」とはいっても実質的な開発期間は10ヶ月間しかありません。しかも、クオリティは維持するどころか、さらなる向上が求められるのです。そのような過酷な状況下で、いかにしてタ
「毎年リリースすることが宿命づけられたタイトル」といわれる『龍が如く』シリーズ。「毎年」とはいっても実質的な開発期間は10ヶ月間しかありません。しかも、クオリティは維持するどころか、さらなる向上が求められるのです。そのような過酷な状況下で、いかにしてタイトルを世に送り出しているのか。その内幕が明かされました

本セッションは「開発環境編」「基礎技術ライブラリ編」「デバッグ編」の3部から成り、扱われる内容は2008年以降に発売されたPS3タイトルに関するものです。

■「PCでの代替開発がミソ」―開発環境編

「開発環境の改善は、いかに時間を削るかにある」と株式会社セガ第一CS研究開発部の加来徹也氏はいいます。そのためにポイントとなるのは、リソース管理の高速化、ビルド時間の短縮、PCでの代替開発、そしてコーディングしやすい環境づくりの4つだといいます。

『龍が如く』の開発では、数100GBの膨大なリソースがLANを通じてやりとりされます。その対応としては、高性能なサーバーやサーバーネットワークが導入されています。コストを惜しまず、信頼性の高いものを選ぶことによって、結果的に時間が短縮されるのです。

また、独自のリソース管理ツール『TiVersion』を作成。これは最大5ノードとP2P接続を行うもので、サーバーの負荷を軽減します。職種に応じて必要なファイルが異なるため、このツールでは必要なファイルだけを選択的にコピーする機能もあるとのこと。ただし、バックアップなどはサーバーで管理するため、バージョン管理については、基本的な機能しかないといいます。

『龍が如く4』では、ソースコードが約120万行あったそうです。そこでビルド時間の短縮が重要になってきますが、これについては早い段階から分散ビルドのシステムを導入しているといいます。結果、ビルド時間が10分の1に短縮されたといいます。同様に64bitOSを導入したことで、リンク時間も短縮されたとのことです。

3つ目の「PCでの代替開発がミソ」と加来氏。PS3開発機の起動には数十秒かかり、積もり積もると膨大な時間になります。またキメ細やかにデバッグを行いたいという意図と、そもそも開発機自体のコストがばかにならないことから、PCでの代替開発を推し進めているとのことです。

そして、コーディングしやすい環境づくり。『龍が如く』開発チームでは、プログラマに課せられるコーディングのルールは、非常に緩いといいます。一定基準内であれば、自由にコーディングできることから、個人の実力が発揮できると同時に、モチベーションの維持になっているともいいます。

また、チーム内のコミュニケーションと育成にも気が配られています。『龍が如く』に関わるプログラマは35名。上は23年目から下は新人までいます。そこで、ビリヤードやダーツといったゲーム中の「プレイスポット」部分を新人に任せることで、若手の育成につとめています。パーティションを作らず雑談しやすい環境であることも重要で、質問・報告が気軽に行えているといいます。

■「PCでPS3ゲームを開発するために」―基礎技術ライブラリ編

ここでバトンが同研究開発部の厚孝氏に渡され、話は開発用マルチプラットフォームライブラリに関するものへと展開します。ここでいう「開発用」とは、製品のリリースを目的としたものではなく、あくまで開発向上を目的としたものであることを意味しています。「PCでPS3の開発を行うためのライブラリ」と言い換えることもできるといいます。

こうしたライブラリに求められる要件としては、PC・PS3共通のソース記述ができる、共通のメモリ使用量である。挙動が同じでバイナリデータも同一のものが使用できる。Directx9でも動作する…というものがありました。

ソース記述については共通の型を用意。プラットフォームやコンパイラに依存せず、同じ型は同じものとして扱えるようにします。特長的なのは、vf128といわれるベクトルフロート型の変数で、この型を引き継いだ戻り値に使用することで効果が得られるといいます。
また、コンパイラ依存の記述はマクロで吸収します。たとえば強制インラインの書き方はPC(Visual C++)とPS3(DCC)とで異なり、データ整列では定義の前に書くのと後ろに書くという違いがあります。こうした違いをマクロで対応するというわけです。

さらに、内部クラスのメモリ使用量を合わせる工夫がなされています。メモリ使用量の大きいプラットフォームに合わせ、アプリケーション使用メモリを同一に扱えるようになっているのです。

APIやハードの違いを吸収し、PC上での挙動をPS3と同等にするための例としては、実際のソースコードがスクリーン上に映され、PC上でもPS3と同様の描画パスを実行できることが示されました。「高速かといわれると微妙だが、同じ挙動を実現している」といいます。

『龍が如く』のチームでは、シェーダの作成をプログラマが行います。シェーダの総数が増えすぎるのを抑制する意図と、冗長なシェーダを事前に排除しようという目的があるといいます。シェーダソースコード自体は共通で書けるようになっており、PC、PS3に加え、DCCツール用のシェーダも同じソースコードで動くとのこと。シェーダのコンパイラは、コンパイラの違いを吸収するフロントエンドを用意。Visual StudioからPC用のfxc.exeとPS3用sce-cgc.exeそれぞれのコマンドライン呼び出しを行えるといいます。

また、そのシェーダが何をやっているのか名前から判断できるよう、ルール化された名前で取り扱うようにしています。当初はデザイナーから抵抗があるかも知れない考えたものの、すぐに慣れてもらえたといいます。「曖昧な言い方で発注がこなくなったので、作業の効率化が進んだ」という利点もありました。

最適化については、PCとのマルチプラットフォーム環境は維持する、ゲーム開発者にはできるだけ負担をかけない、効果の大きい最適化を施す、この3つの指針に従い進められました。

『龍が如く』では、雑多な町並みを表現するためにオブジェクト数やマテリアル数が多くなり、場面によっては描画コマンドの発行回数が12000回にのぼります。そのままではGPU描画の前に、PPUセットアップ処理が間に合わなくなるため、時間のかかるPPUの処理をSPUで行ったといいます。実際にSPUに移した処理の例として、モーション処理、シーンのカリング処理、頂点シェーダのセット、フラグメントシェーダのコンスタントパッチなどが挙げられました。

■「プロジェクト運用を支援する技術」―デバッグ編

ここからは同研究開発部・時枝浩司氏による、『龍が如く』のデバッグ環境に関する話になります。『龍が如く』には、デバッグのためのおもな機能として、視点を変更するデバッグカメラ、実行フェイズを一時停止するデバッグストップ、各種パラメータを変更するデバッグウィンドウ、シナリオを選択するシナリオセレクタ、どこでもセーブ・ロード、スクリーン・ムービーキャプチャーが備わっているといいます。

なかでもよく使われるのがディップスイッチと呼ばれる機能で、町中を歩いている人物キャラクターのパスを表示することなどができます。『龍が如く』はリソース量が多く、一度に持っておくことはできないため、エリアごとに持っています。いま、どのエリアのリソースを読んでいるのか、または読み込もうとしているのか。そうした情報も色分けして表示されます。

デバッグに割り当てられた期間は開発後期と重なっているうえ、短いものです。そこで無駄をなくすと同時に、非デバッグ期間の有効活用、休日・深夜時間の有効活用が心がけられているといいます。

具体的な例としては、ゲームアプリケーションのデイリーリリースが挙げられます。開発の初期段階から、一日に1回、最新バージョンが開発チームにリリースされるのです。

朝10時までの中間データをコンバート、エラーが出たものについては差し戻し。問題がなければ実機データとプログラムソースをビルドし、チェック。ここでも問題が見つからなければ実行ファイルをリリースするという手順です。

2重チェックをすることで問題のあるデータをプロジェクト全体に伝播させるのを防ぐことができる一方、規則正しいスケジュールで動けるというメリットもあるとのこと。「プログラマの遅刻はない」と時枝氏はいいます。

また特徴的なデバッグ手法として、オートテストがあります。これは時枝氏が「デバッグ機能の集大成」というもので、ゲームパッドの入力をランダムで行うことで、プログラム上の異常個所を見つけるツールです。これを休日・深夜に実行することで、人手をかけずにデバッグを行うことができるのです。

オートテストには、サーバーから何のテストを行うかのファイルを取得、最新版にアップデータしたのち実行。エラー発生時には自動的にメールが送信されるという機能が備わっています。開発チームのメンバーは退社時にこれを動かし、出社したら終了させます。これにより、約80台の開発PCでの自動デバッグが実現しました。

「事前準備で可能な限り高速化しましょう」と時枝氏。「メンバーが仕事しやすい環境を整え、プロジェクトを安定させる努力をすることも大事です」とセッションを締めくくりました。
《土井大輔》

関連ニュース

特集

人気ニュースランキングや特集をお届け…メルマガ会員はこちら