Content Pipeline その1 その問題点

ゲームにはコンテントが必要

ゲーム製作で欠かせない要素として、プログラミングの他にコンテント作成があります。コンテントとは、3Dモデル、テクスチャ、フォント、サウンド、ゲームのパラメーターといったものの総称です。このコンテントを作るツール、例えばテクスチャならフォトショップ、3DモデルならMayaなどといったツールをDCC(Digital Content Creation)ツールと呼びます。DCCツールというと、高いお金を払って買うものと思われがちですが、自分で撮ったお気に入りの写真をゲームで使えば、その写真を撮るのに使ったデジカメはある意味DCCツールといえる訳です。さらに言えば、ゲームで使われるメッセージなどをWindowsに付いてくるメモ帳を使えば、それも立派なDCCツールとなるわけです。

 

コンテントは必要だけど管理が面倒

次に、作ったコンテントをゲームで実際に使います。DirectXやMDXではテクスチャやXファイルをファイルから直接読み込むことができ、XNAでもWindows版ではテクスチャをファイルから読み込むことができますが、モデルに関してはXファイルを直接読み込むことはできません。今までDirectX等でゲームを作っていた人の中には 「なんでTexture.LoadFromFileメソッドがXbox360上で使えないの?」 といった疑問を抱く人もいると思います。XNAでコンテントファイルから直接読み込めないようになっているのには以下の理由があります。

 

  1. 拡張性がない
  2. コンテントファイルにはゲームに不必要なデータが含まれている
  3. 読み込み時に余分なリソースを必要とする
  4. コンテント・マネージメント

 

1つ目の拡張性については、ファイルからの読み込みの場合、決められたファイルフォーマットから、決められたデータフォーマットへの読み込みしかできません。ですから、サポートされていないファイルフォーマットをゲーム上で使うには、ファイルフォーマット変換するツールを作る必要があります。ゲーム製作ではDCCファイルにゲーム独自のメタデータを追加することが良くあるので、仮にフォーマット変換ツールを作ったとしても、このメタデータが使えない場合もあります。

 

2つ目については、コンテントファイルフォーマットはコンテントを作りやすいように設計されていて、画像ファイルではEXIF、3Dモデルファイルなどではツールの環境データなどのゲームに不必要なデータが含まれていたりします。

 

3つ目は、2つ目と同じように、ゲームで使うデータフォーマットはコンテントファイルフォーマットと違って、各プラットフォームで最適に動作するように設計されています。ですから、ファイル読み込み時にゲームに適したデータフォーマットへの変換が発生するので、その処理に時間が掛かるのと、変換用のメモリを必要とします。また、ゲーム用のデータフォーマットはプラットフォームの違いによっても変わってきます(例えばWindowsとXbox360ではエンディアンの違いなど)。これらの変換処理が複雑化するほど、読み込み時間も長くなる、つまり、ロード時間が長くなるのでゲームを快適に遊べなくなってしまいます。

 

そして4つ目は、たとえファイルからデータを直接読めたとしても、開発環境を含めたコンテント・マネージメントのしくみ無しでは快適なゲーム開発環境が実現できないということです。例えば、Xbox360上でゲームを作っている場合、必要なファイルはネットワークを介してファイル転送する必要がありますが、コンテント・マネージメントがない場合、ファイル転送を手作業でしなければいけません。手作業だとファイルを転送し忘れたり、転送場所を間違ったりと、人為的ミスが発生してしまいます。また、大量のコンテントファイルがある場合、全てのファイルを転送したりすると時間の無駄にもなります。

 

以上のように、ゲームでコンテントを使用するには様々な問題があり、これらの問題を解決し、XNAの目標であるゲーム開発者がゲーム開発に集中できる環境の提供を実現するために設計されたのがコンテント・パイプラインです。

次回からは、数回に渡ってコンテント・パイプラインの仕組みを紹介していきます。