UDN
Search public documentation:

CustomUnrealScriptProjectsJP
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

UE3 ホーム > UnrealScript > カスタムの UnrealScript プロジェクト


カスタムの UnrealScript プロジェクト

概要

新たなゲームプレイ要素と他アイテムを「Unreal Engine」のゲームに追加するには、これらの要素を定義する UnrealScript を作成する必要があります。これらのスクリプトは、その後、プロジェクトに追加されてコンパイルされることによって、ゲームで使用できるようにします。UnrealScript は、異なるプロジェクトに分けられて整理されます。さらに、これらのプロジェクトはパッケージの中にコンパイルされます (プロジェクト 1 つにつき 1 つのパッケージに)。したがって、今後プロジェクトとパッケージという用語は、同様の意味で使われます。

エンジンはデフォルトでプロジェクトをいくつかもっています。たとえば、Core プロジェクトには、基本 Object クラスと他の基本レベルクラスが含まれています。Engine プロジェクトには、ゲームの大部分を構成するクラスが含まれています。通常、これら既存のプロジェクトに含まれているクラスを改変したり、これらのプロジェクトに新たなクラスを追加したりする必要はないはずです。そうすることが不可能であるということではありません。すなわち、改変する場合には充分注意すべきであり、通常は、これらプロジェクトの 1 つに新たに加えることができるクラスであれば、新たなプロジェクトに加えることが可能であり、そのほうが合理的であるということです。

ゲームを構成するプロジェクトの数には制限がありません。通常、1 つのゲームに固有なクラスを構成するプロジェクトは、1 つ (またおそらくは 2 つ) のメインプロジェクトに含まれることになります。( [#AddProject][プロジェクトを追加する] では、これがなぜ有益なことであるのかについて説明をしています)。標準的なやり方では、ゲーム名またはゲームの短縮した名前ないしはコード名をもつプロジェクトを作成します。たとえば、「Unreal Tournament」のゲームでは、UTGame を使用し、「Gears of War」のゲームでは GearGame を使用します。

プロジェクト ディレクトリを作成する

UnrealScript のプロジェクトは、関係するスクリプトの集合に過ぎません。したがって、UnrealScript のプロジェクトを作成するということは、それらスクリプトのリポジトリ (換言すれば、プロジェクト ディレクトリ) を作成することになります。すべての UnrealScript プロジェクト ディレクトリは、 ../Development/Src フォルダの中に置かれなければならず、また、プロジェクトと同一の名前をもたなければなりません。

MyProject という名前の UnrealScript プロジェクトを作成するのであれば、プロジェクト ディレクトリの構造は次のようになります。

projectdirectory.jpg

プロジェクト ディレクトリの内部には、プロジェクトに属する UnrealScript のすべてを含む Classes フォルダが置かれなければなりません。このフォルダが、プロジェクトに属するあらゆるスクリプトを保存すべき場所なのです。

上記の MyProject UnrealScript プロジェクトのためのプロジェクト ディレクトリは、最終的に次のようになります。

projectdirectory_classes.jpg

プロジェクト フォルダと Classes フォルダができると、プロジェクトが厳密な意味で作成されたことになり、新たなスクリプトを作成したり、 Classes フォルダ内へ追加したりできるようになります。

プロジェクトを追加する

プロジェクト ディレクトリは作成されましたが、エンジンは依然としてプロジェクトの存在を認識する必要があります。ゲームで使用するプロジェクトをビルドする時に、プロジェクトをコンパイルできるようにするために必要となります。エンジンは、プロジェクトのリスト (EditPackages 配列) を使用して、どのプロジェクトが含まれていて、コンパイルすべきかを判断します。エンジンにプロジェクトを追加するには、 DefaultEngine.ini を編集して、 新たなプロジェクトが EditPackages 配列に含まれるようにします。 DefaultEngine.ini ファイルは、ゲームのディレクトリの Config フォルダにあります。たとえば、「UDK」のための config ファイルは、次のディレクトリに置かれています。

configdirectory.jpg

注意 : プロジェクトは、 [*]Engine.ini ファイルではなく、 DefaultEngine.ini ファイルに追加されます。([*] にはゲームの名前が入ります。例 : UDKEngine.ini)。理由は、ゲームのための .ini ファイルがエンジンによって上書きされることがあるからです。デフォルトの .ini ファイルであれば、エンジンに上書きされることは決してありません。デフォルトの .ini ファイルは、手動でのみ編集されます。すなわち、変更は「永久」的なものであり、けっして偶然失われることはありません。

EditPackages 配列のエントリは、 .ini ファイルの [UnrealEd.EditorEngine] セクションに追加されなければなりません。たとえば、 UTGameUTGameContent のサンプルプロジェクトをゲームに追加するには、DefaultEngine.ini において次のようなエントリを使用します。

  [UnrealEd.EditorEngine]
  +EditPackages=UTGame
  +EditPackages=UTGameContent
  

プロジェクトが追加される順番は、きわめて重要です。理由は、それによってプロジェクトのコンパイルされる順番が決まるからです。しかし、なぜそれほど重要なのでしょうか? クラスが、他のクラスまたはタイプを参照できるのは、それらが同一のプロジェクトにあるか、既にコンパイルされている他のプロジェクトにある場合だけです。上記の UTGameUTGameContent を用いて説明すると、次のようになります。 UTGame プロジェクトにあるクラスが、 UTGameContent パッケージのクラスを参照しようとする場合、コンパイラはそのクラスの存在を知らないため、エラーを吐くことになります。このことはまた、関係のあるクラスや互いを参照するクラスが通常同一のプロジェクトに置かれなければならない理由にもなっています。このことは、一種の循環的な関係が生じたときにはっきりします。すなわち、あるプロジェクトにあるクラスが、別のプロジェクトのクラスを参照するとともに、2 番目のプロジェクトにある、完全に分離されているクラスが、1 番目のプロジェクトにあるさらに別のクラスを参照しようとする場合です。これらの参照のうち片方はうまくいきますが、もう片方は失敗します。プロジェクトがどのように再命令しても、片方は常に失敗します。これらクラスのすべてを同一のプロジェクトに配置すれば、この問題は完全に解決されます。

プロジェクトをコンパイルする

エンジンがプロジェクトを認識しており、プロジェクトに最低 1 つのスクリプトが含まれていれば、スクリプトがコンパイルされて、プロジェクトのためのパッケージが作成されます。スクリプトをコンパイルする方法は、次のようにいくつかあります。

  • Make コマンドレット
  • ゲームまたはエディタを起動することによって行われる自動コンパイル
  • Unreal Frontend

Make コマンドレット

Make コマンドレットは、スクリプトをコンパイルし、パッケージを作成するゲームの実行ファイルの中に含まれているプログラム (コマンドレットと呼ばれる) です。メインのゲーム実行ファイルに make を渡すことによって実行することができます。「Unreal」エディタを実行する際、 editor を実行ファイルに渡すのとほぼ同じやり方です。これは次のどちらかによって行うことができます。

  • コマンドラインから実行ファイルを起動し、 make スイッチを渡す。

    C:\UDK\[Version]\Binaries> UDK.exe make

  • 実行ファイルへのショートカットを作成し、 make スイッチを target に追加する。

    make_shortcut.jpg

自動コンパイル

ゲームまたはエディタが起動した場合は必ず、 EditPackages リスト内にある全プロジェクトがチェックされて、新しいスクリプトが存在するか否かが調べられます。つまり、 Classes フォルダ内に新しいスクリプトや更新されたスクリプトがないか調べられるのです。この確認は、プロジェクトのためのパッケージが作成された時間とファイルの変更時間の比較に基づいて実行されます。新しいスクリプトが存在した場合は、プロンプトが現れて、スクリプトを再ビルドするかどうかを尋ねてきます。

autocompile.jpg

オプション 説明
Yes スクリプトがコンパイルされます。先に説明した Make コマンドレットが使用されます。
No 新しいスクリプトはすべて無視してゲームまたはエディタを起動します。既存のパッケージが使用されることになります。
Cancel 操作全体を中止します。スクリプトはコンパイルせず、ゲームまたはエディタも起動しません。

UnrealFrontend

「Unreal Frontend」 のアプリケーションによって、スクリプトをビルドすることができます。これは、単一の操作として実行することもでき、またテスティングもしくは配布のためにゲームをビルドおよびパッケージ化するパイプラインの一部としても実行できます。

「Unreal Frontend」を使用してスクリプトをビルドするには、[ Script ] (スクリプト) ボタンをクリックして、スクリプト コンパイル メニューを表示します。

ufe_script_menu.jpg

以下のオプションから 1 つ選択します。

オプション 説明
Compile Scripts 新たなスクリプトまたは更新されたスクリプトが存在するあらゆるプロジェクトのスクリプトをコンパイルします。
Full Recompile 変更があったか否かに関わらず、 EditPackages リストに入っているあらゆるプロジェクトを強制的にコンパイルします。

「Unreal Frontend」の使用法に関する詳細は、 Unreal Frontend のページに掲載されています。