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
中国翻译
한국어
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 プロジェクトを作成するのであれば、プロジェクト ディレクトリの構造は次のようになります。
プロジェクト ディレクトリの内部には、プロジェクトに属する UnrealScript のすべてを含む Classes
フォルダが置かれなければなりません。このフォルダが、プロジェクトに属するあらゆるスクリプトを保存すべき場所なのです。
上記の MyProject
UnrealScript プロジェクトのためのプロジェクト ディレクトリは、最終的に次のようになります。
プロジェクト フォルダと Classes
フォルダができると、プロジェクトが厳密な意味で作成されたことになり、新たなスクリプトを作成したり、 Classes
フォルダ内へ追加したりできるようになります。
プロジェクトを追加する
プロジェクト ディレクトリは作成されましたが、エンジンは依然としてプロジェクトの存在を認識する必要があります。ゲームで使用するプロジェクトをビルドする時に、プロジェクトをコンパイルできるようにするために必要となります。エンジンは、プロジェクトのリスト (EditPackages
配列) を使用して、どのプロジェクトが含まれていて、コンパイルすべきかを判断します。エンジンにプロジェクトを追加するには、 DefaultEngine.ini を編集して、 新たなプロジェクトが EditPackages
配列に含まれるようにします。 DefaultEngine.ini ファイルは、ゲームのディレクトリの Config
フォルダにあります。たとえば、「UDK」のための config ファイルは、次のディレクトリに置かれています。
注意 : プロジェクトは、 [*]Engine.ini ファイルではなく、 DefaultEngine.ini ファイルに追加されます。([*] にはゲームの名前が入ります。例 : UDKEngine.ini)。理由は、ゲームのための .ini ファイルがエンジンによって上書きされることがあるからです。デフォルトの .ini ファイルであれば、エンジンに上書きされることは決してありません。デフォルトの .ini ファイルは、手動でのみ編集されます。すなわち、変更は「永久」的なものであり、けっして偶然失われることはありません。
EditPackages
配列のエントリは、 .ini ファイルの [UnrealEd.EditorEngine]
セクションに追加されなければなりません。たとえば、 UTGame
と UTGameContent
のサンプルプロジェクトをゲームに追加するには、DefaultEngine.ini において次のようなエントリを使用します。
[UnrealEd.EditorEngine] +EditPackages=UTGame +EditPackages=UTGameContentプロジェクトが追加される順番は、きわめて重要です。理由は、それによってプロジェクトのコンパイルされる順番が決まるからです。しかし、なぜそれほど重要なのでしょうか? クラスが、他のクラスまたはタイプを参照できるのは、それらが同一のプロジェクトにあるか、既にコンパイルされている他のプロジェクトにある場合だけです。上記の
UTGame
と UTGameContent
を用いて説明すると、次のようになります。 UTGame
プロジェクトにあるクラスが、 UTGameContent
パッケージのクラスを参照しようとする場合、コンパイラはそのクラスの存在を知らないため、エラーを吐くことになります。このことはまた、関係のあるクラスや互いを参照するクラスが通常同一のプロジェクトに置かれなければならない理由にもなっています。このことは、一種の循環的な関係が生じたときにはっきりします。すなわち、あるプロジェクトにあるクラスが、別のプロジェクトのクラスを参照するとともに、2 番目のプロジェクトにある、完全に分離されているクラスが、1 番目のプロジェクトにあるさらに別のクラスを参照しようとする場合です。これらの参照のうち片方はうまくいきますが、もう片方は失敗します。プロジェクトがどのように再命令しても、片方は常に失敗します。これらクラスのすべてを同一のプロジェクトに配置すれば、この問題は完全に解決されます。
プロジェクトをコンパイルする
エンジンがプロジェクトを認識しており、プロジェクトに最低 1 つのスクリプトが含まれていれば、スクリプトがコンパイルされて、プロジェクトのためのパッケージが作成されます。スクリプトをコンパイルする方法は、次のようにいくつかあります。- Make コマンドレット
- ゲームまたはエディタを起動することによって行われる自動コンパイル
- Unreal Frontend
Make コマンドレット
Make コマンドレットは、スクリプトをコンパイルし、パッケージを作成するゲームの実行ファイルの中に含まれているプログラム (コマンドレットと呼ばれる) です。メインのゲーム実行ファイルにmake
を渡すことによって実行することができます。「Unreal」エディタを実行する際、 editor
を実行ファイルに渡すのとほぼ同じやり方です。これは次のどちらかによって行うことができます。
-
コマンドラインから実行ファイルを起動し、
make
スイッチを渡す。C:\UDK\[Version]\Binaries> UDK.exe make
-
実行ファイルへのショートカットを作成し、
make
スイッチをtarget
に追加する。
自動コンパイル
ゲームまたはエディタが起動した場合は必ず、EditPackages
リスト内にある全プロジェクトがチェックされて、新しいスクリプトが存在するか否かが調べられます。つまり、 Classes
フォルダ内に新しいスクリプトや更新されたスクリプトがないか調べられるのです。この確認は、プロジェクトのためのパッケージが作成された時間とファイルの変更時間の比較に基づいて実行されます。新しいスクリプトが存在した場合は、プロンプトが現れて、スクリプトを再ビルドするかどうかを尋ねてきます。
オプション | 説明 |
---|---|
Yes | スクリプトがコンパイルされます。先に説明した Make コマンドレットが使用されます。 |
No | 新しいスクリプトはすべて無視してゲームまたはエディタを起動します。既存のパッケージが使用されることになります。 |
Cancel | 操作全体を中止します。スクリプトはコンパイルせず、ゲームまたはエディタも起動しません。 |
UnrealFrontend
「Unreal Frontend」 のアプリケーションによって、スクリプトをビルドすることができます。これは、単一の操作として実行することもでき、またテスティングもしくは配布のためにゲームをビルドおよびパッケージ化するパイプラインの一部としても実行できます。 「Unreal Frontend」を使用してスクリプトをビルドするには、[ Script ] (スクリプト) ボタンをクリックして、スクリプト コンパイル メニューを表示します。 以下のオプションから 1 つ選択します。オプション | 説明 |
---|---|
Compile Scripts | 新たなスクリプトまたは更新されたスクリプトが存在するあらゆるプロジェクトのスクリプトをコンパイルします。 |
Full Recompile | 変更があったか否かに関わらず、 EditPackages リストに入っているあらゆるプロジェクトを強制的にコンパイルします。 |