UDN
Search public documentation:

UnrealPackagesJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

Unrealパッケージ

ドキュメントの概要: UnrealEngine3に含まれるパッケージファイルの説明。_

ドキュメントの変更ログ: Warren Marshall により作成。Richard Nalezynski? により管理。

はじめに

Unrealエンジンにおける パッケージ は、資産を含んでいるファイルという概念で使用されています。

コンパイルされたUnrealScriptから、静的メッシュやマテリアルまで、あらゆるものが資産であると言えば、おわかりになるでしょう。マップ/ゲームに追加できるものならすべて、パッケージに加えることができます。Unrealパッケージは、UnrealEdを介して最も容易に扱うことができる、バイナリデータの塊です。 汎用ブラウザ を使用して、パッケージに資産をインポートし、資産をあちこちに移動した後、その結果できたパッケージを再び保存できます。

一般にレベルには資産を含んでいません。その代わり、パッケージ ファイル内にある資産への参照を含んでいます。これによって、多くのレベルにまたがって資産を共有することができるだけでなく、アーティストはパッケージ内の資産の変更を1回で行えます。すると、その資産を参照しているレベルが自動的に更新されます。レベルファイルに資産を直接埋め込むことも可能です。しかし、この方法は一般に避けられています。レベルファイルのサイズが膨れあがる上に、別のレベルとの共有が不可能になるためです。

UnrealScript クラスは唯一のパッケージ内にコンパイルされます。また同様に UnrealScript パッケージはコンテンツとレベルパッケージに参照を含んでいます。

パッケージの種類

パッケージは様々な拡張子を持つことができますが、パッケージ内はすべて同じ形式になっています。Unrealエンジンは、何がパッケージに入っているかに注意を払いますが、拡張子が違っていても特別な処理を行いません。しかし、ほとんどのライセンス取得者が従うべき一般的な取り決めがあり、次の通りです。:

拡張子 内容
U コンパイルされたUnrealScriptコード。UCCコンパイラによって生成されたもので、いかなる資産も含みません。
UDK レベルのデフォルト拡張子。
UPK 資産のコレクションを示す一般的拡張子です。

ライセンス取得者は、独自のレベル拡張子を Licensee File Extensions? から登録できます:

グループ

パッケージには、複数の階層のグループを入れることができます。グループは、ハードドライブ上のディレクトリ構造内にあるフォルダと考えるとよいでしょう。グループは、ユーザーがパッケージのコンテンツを理解するためにのみ使用されます。エンジンはグループを使用していようがいまいが関知しません。

Unreal は、マルチレベル グルーピング構造をサポートしています。しかしながら、いくらでも深い階層を作成することができますが、通常最高でも 3 つか 4 つのレベルに保っておくことが推奨されます。そうでないと、コンテンツ ブラウザ パッケージ ツリーの使用が困難になります。以下は、アーマー アセットを整理するのに使用される複数のグループの例です。

CB_Packages.PNG

この場合のパッケージは Pickups (ハードドライブ上では[pickups.upk]となります)です。パッケージ内には、数多くのグループがあって、グループは中にある資産を整理するために使用されています。たとえば、現在選択されている項目の場合、そこに到達するまでのパスは Pickups.Armor.Materials となります。これは、ハードドライブへアクセスすることに類似しています(すなわち、[c:\pickups\armor\materials])。同じ概念で、フォルダにファイルを入れることができるように、各グループに資産を入れることができます。

命名規則

資産とパッケージに命名する場合、全体で一意の名前を使用することを強く推奨します。複数のものに同じ名前をつけると、エンジンがロード/参照対象を正確に解決することができず、間違ったものを見つけてしまう場合があります。その結果、問題がわかりにくくなり、デバッグ作業が悪夢になってしまいます。

資産/パッケージに一意の名前をつけることで、この問題を完全に避けてください。とはいっても、グループ名としては好きな名前を何でもつけることができます。また、グループ名は直接参照されることも、検索されることもないため、一意である必要はありません。

組織

コンテンツ パッケージは通常、ビルドの Content (コンテンツ) ディレクトリに格納されています。それらは、テクスチャや UI シーンなどのさまざまなタイプのコンテンツを表すサブディレクトリを含んでいる場合があります。これは、あくまでの使用者にとって読みやすく、メインテナンスしやすくするためです。

コンテンツ パッケージは、ビルドの Maps (マップ) ディレクトリに格納されています。

コンパイルされた UnrealScript パッケージは、ビルドの Scripts (スクリプト) ディレクトリに格納されています。

命名規則とパッケージの整理に関する詳細な情報は、Unreal Engine 3 アート アセット パイプライン ページを参照してください。

制限事項

パッケージファイルに表示される資産の数に制限はありませんが、パッケージ全体のサイズ上限は2GBです。その上限を超えると、パッケージが特定のプラットフォームにて読み込みをしない原因となります。

管理

さらに、異なるチーム メンバーによって作業されるさまざまなタイプのコンテンツを含む場合、パッケージは大きくなる場合があります。これは、ソース コントロールで各改訂に格納されるような非常に大きなファイル コピーを作成することがあります。これらの問題を避けるには、持っているパッケージのセットをスキャンして、どれが 200-300MB よりも大きいかを識別するような方策を考えてください。これらの大きなパッケージを分割してください。ディスク使用量という面では、これが大いに手助けとなります。

クッキングは、必要とされるすべてのデータをシークフリー パッケージに組み入れる作業をします。さらに、コンテンツ イテレーションがより少ない開発サイクルの後のほうで、パッケージをより大きなものに組み合わせることが非常に簡単です。これをするには、1 つのパッケージから他のパッケージへアセットの名前を変更するだけです。これは、新しいロケーションを指すリダイレクタ オブジェクトを作成します。古いコンテンツ ロケーションへのすべての参照を新しいロケーションを指すようにリマップするために FixupRedirects コマンドレットを実行するまで、古い (空の) パッケージを削除することはできません。

読み込み

Native パッケージが読み込まれることで、native C++ クラスに影響を与えるパッケージ内で定義されたデータがコードの実行中に (defaultproperties を介して) 使用されます。C++ やスクリプトで定義されたクラスがあり、それらは常に同期する必要があります。

パッケージ 読み込みは非常に複雑なシステムで、ほとんどのライセンシーは実際に対応しなければいけないことはありません。

Exports はパッケージ内に存在するオブジェクトです。

Imports はその他のパッケージ内のオブジェクトへの参照です。

従って、もしマテリアル MatX がパッケージ A にあり、パッケージ A 内の TexY、そしてパッケージ B 内の TexZ を参照するとしたら、以下のようになります。 :

Package A:
        Exports:
                MatX
                TexY
        Imports:
                B.TexZ

Package B:
        Exports:
                TexZ

エディタは、設定ファイル内の EditPackagesPackagesToBeFullyLoadedAtStartup キーにリストされている native スクリプト パッケージとそれらすべての参照を読み込みます。

パッケージ (エディタ、またはゲーム) を読み込むと、すべての参照を解決するために、オブジェクトを他のパッケージから読み込みます。参照されたパッケージ内のすべてのオブジェクトが読み込まれるわけでは ありません 。他のパッケージから必要最小限を読み込みます。

エディタ内では、Content ブラウザ リファレンス内で灰色でリストされているパッケージは、部分的にしかロードされません。なぜなら、それらは他のパッケージをロードした結果、ロードされたからです。完全に読み込むには、パッケージを右クリックします。ゲームのコンテンツ ディレクトリは、エディタを起動するたびにパッケージのスキャンを自動的にされます。見つかったパッケージは、Content ブラウザのパッケージ ツリーに表示されます。

また、Content ブラウザの左下にあるフォルダ アイコンをクリックすることで、外部パッケージ (エンジンの検索パスで見つからなかったパッケージ) を読み込むことができます。しかしながら、レベルや他のパッケージで外部のパッケージからアセットを参照しないことが強く推奨されます。これは、ゲームやコマンドレットを実行した際に、これらのアセットが見つからないからです。