4.23今回はBuildGraphについてです。UE4がカバーしきれていない作業(例えば、パッケージ後に必要なファイルのコピー等)がある場合バッチファイルやシェルスクリプトになれたエンジニアであれば、スクリプトを自前で書いて解決するかと思います。BuildGrapghの機能を利用するとXMLで手順を記述し自動で作業を行ってくれます。バッチファイルでいいんじゃないかと思うかもしれませんが...BuildGraphがよくわからんという理由で使わないのも負けた気がするのでちょっと調べてみました。BuildGraphとは?UnrealBuildTool,AutomationToolやエディタから実行可能な処理を利用し、独自にカスタマイズしたビルドを実行することができます。XML形式で以下のように記述します。(option)オプション引数-Target=[開始する]開始するノードを指定します。※ノードについては後で解説します。-Set:[option名]=[パラメータ]オプションの設定-Clean過去のビルドをクリーニング処理する-ListOnlyノードを表示するノードの処理は行われないので、どのノードが実行されるか確認を行いたい場合に使えます。サンプルの場所は以下の階層にあります。\Engine\Build\Graph\Examplesまず、XMLを自作する前にどのようなことが出来るか、サンプルを動かしてみると良いかもしれません。各エレメントについて解説BuildGraphで使用される各エレメントを紹介します。<Agent>複数のノードをグループ化することができます。ローカルPCでビルドする場合、この定義は無視されますが、指定しなければなりません。なければ、このエレメントは無視されます。<Node>ビルドで行う処理をひとまとめに管理するものです。複数ある場合はセミコロンで区切られます。このノードが他のノードに対して利用可能にするタグ付けされたファイルセット複数ある場合はセミコロンで区切られますこのパラメータで指定されたタグは、他のノードからタグ付けされたファイルリストを参照出来るようになります。場合、このノードはWariningの通知を出しません。デフォルトはtrueです。なければ、このエレメントは無視されます。独自のBuildGraphを作る場合、ノード動作のイメージが湧きにくいかと思いますので例を挙げます。以下のビルド処理があるとします。・プロジェクトのエディタのコンパイル・プロジェクトのゲームのコンパイル・パッケージ化できれば、パッケージ化前に以下の作業は済ませておきたいとします。・最新のプログラムでゲーム側のビルドは済ませる必要がある・アセットのクックするにはエディタのビルドを済ませる必要があるこの場合「パッケージ化」のパラメータRequiresに「プロジェクトのエディタのコンパイル」と「プロジェクトのゲームのコンパイル」の2つのノード名を指定するとで、Requiresのノードの処理が終了後、「パッケージ化」の処理が走ります。そのため、古いエディタやゲームのexeを使用せずに最新の状態のパッケージが作成できます。このような作りにしておけば、エディタビルドだけ必要な場合は「プロジェクトのエディタのコンパイル」のノード名を指定すればエディタビルドのみを行うこともできます。このように、一つのXMLを作成し一部を流用することがBuildGrapghの特徴でもあります。<Aggregate>ノードのグループを単一の名前で指定することができます。Nodeは関連付けと処理がセットなのですが、関連したノードだけ実行したい場合はこちらを使ってください。BuildGrapghのTargetオプションで指定する際に使用します。グループなどがあります。なければ、このエレメントは無視されます。<Property>プロパティを指定してパラメータを管理することができます。設定するプロパティの名前。なければ、このエレメントは無視されます。<Option><Property>と同様にパラメータを管理することができますが、こちらはコマンドラインから-Set:[option名]で指定ができます。設定するオプション名。実行する場合に表示するオプションの説明。なければ、このエレメントは無視されます。XMLファイルのスクリプトをこのファイル内で使用できるようにします。汎用的なBuildGraphをまとめたりする場合に使うと良いでしょう。スクリプトに相対的)。なければ、このエレメントは無視されます。デフォルトで定義済みのタスクが定義されています。あるため、今回は知ってて得する定義済みタスクの一部を紹介したいとおもいます。<Compile>UnrealBuildToolsを利用しコンパイルを行います。アンリアルのプロジェクトで管理するEditorやゲームのコンパイルを行います。引数が渡されると、ターゲットはクリーンアップされます。コンパイルで生成されたファイルに指定したタグ付けされます。なければ、このエレメントは無視されます。Tag="#GameBinaries_Win64"/><Command>AutomationTool.exe(/Engine/Build/BatchFiles/RunUAT.batを利用している処理)を引数指定で利用することができます。※極端な話、BuildGraphも実行できます。なければ、このエレメントは無視されます。Console編~※UnrealEngine4が提供する必要なビルド処理を把握していない場合は、独自に実装するよりこちらを使ったほうが安心です。内部で「”」を利用できないので利用したい場合は&quot;を使用してください。<Comandlet>UE4Editor-Cmd.exeを引数指定で利用できます。なければ、このエレメントは無視されます。/><Spawn>外部のプログラムを実行することができます。なければ、このエレメントは無視されます。ErrorLevel="4"/><Log>メッセージをログに表示させます。指定した場合、指定されたメッセージの後に、指定されたファイルのリストが表示されます。trueを指定した場合、Filesで指定したファイルの内容が出力されます。なければ、このエレメントは無視されます。まとめBuildGrapghは、今回紹介した内容以外にも色々と機能が提供されているので、コマンドの追加、シェルスクリプト、手動等で対応していた部分を自動化にできそうです。PREV[UE4]アルファ付きキャプチャー画像の簡単作成NEXT[UE4]パッケージした日時をゲーム中に取得できるようにしてみた。