Unreal Engine の ブループリント ビジュアル スクリプティング システムは、ノードベースのインターフェースを使用して Unreal Editor 内からゲームプレイ要素を作成するゲームプレイ スクリプティング システムです。一般的な多くのスクリプト処理言語と同様に、このシステムは、Engine でオブジェクト指向 (OO) のクラスやオブジェクトを定義するために使用します。UE4 を使う場合、ブループリントを使用して定義したオブジェクトは通常、単純に「ブループリント」と呼びます。
非常に柔軟かつパワフルなシステムで、一般的にプログラマーしか使用できなかったコンセプトとツールを、デザイナーが事実上すべて使えるようになります。さらに、Unreal Engine に導入されている C++ でブループリント特有のマークアップを使用すれば、プログラマーはデザイナーが展開する基本システムを作成することができます。
つまり、ブループリントがアンリアル スクリプトに取って替わるということでしょうか?どちらとも言えません。 過去にアンリアル スクリプトを使用したゲームプレイ プログラミングやその他すべてのゲームプレイ要素は、今でも C++ 言語で処理することができます。同時に、ブループリントはアンリアル・スクリプトの代替ではないものの、 アンリアル スクリプトで処理していた以下の目的のほとんどを達成することができます。
- クラスの拡張
- デフォルト プロパティの格納および修正
- クラスのサブ オブジェクト (例えばコンポーネント) のインスタンス化の管理
ゲームプレイ プログラマーは、自分達が設定したベースクラスで作成したブループリントで使用および拡張できる便利な関数とプロパティを 公開できるようになることが期待されます。
下表は、ネイティブコードと ブループリント の比較だけでなく、エンジンの前のバージョンからの推移しやすいように、 アンリアル スクリプト (アンリアル エンジン 3 より)、 C++、ブループリントにおいて各種アスペクトがどのように処理されるのかを 比較しています。
アンリアル スクリプト (UE3) | ブループリント (UE4) | C++ (UE4) |
---|---|---|
.uc file | Blueprint Asset | .h/.cpp files |
UClass | UBlueprintGeneratedClass | UClass |
extends [ClassName] | ParentClass | : [ClassName] |
Variable | Variable | UProperty() |
Function | Graphs/Events | UFunction() |
defaultproperties{} | Class Defaults | native constructor |
Default Components | Components List | native constructor |
ブループリントのタイプ
ブループリントは、新しいタイプの作成からレベル イベントのスクリプト化、他のブループリントによって使用されるインターフェースまたはマクロの定義まで、 それぞれ独自の特別な使用方法を指定する幾つかのタイプの 1 つです。
Blueprint クラス
ブループリント クラス は、コンテンツ クリエーターが既存のゲームプレイ クラスに機能を簡単に追加できるアセットで、しばしば省略して ブループリント と呼ばれます。 ブループリントはコード入力ではなく、アンリアル エディタで視覚的に作成します。コンテンツ パッケージにアセットとして保存されます。 これらは実質的に、他のアクタ タイプと同様に動作するインスタンスとしてマップに配置することができる 新規のクラスまたはアクタのタイプを定義することができます。
データ専用ブループリント
データのみのブループリント は、親から継承したコード (ノードグラフ形式)、 変数、そしてコンポーネントのみを格納するブループリント クラスです。継承したプロパティは微調整や修正が可能ですが、新規のエレメントは追加できません。 基本的にこれらはアーキタイプの代わりで、デザイナーがプロパティや設定アイテムを変化させるために使用します。
データのみのブループリントはコンパクトなプロパティ エディタで編集されますが、ブループリントエディタ の機能をくまなく使用してコード、変数、またはコンポーネントを単に追加するだけで 完全なブループリントへ変換することができます。
Level ブループリント
Level ブループリントは、レベル全体のグローバルイベント グラフとしての役割を果たす、特別なタイプの ブループリント です。 プロジェクトの各レベルには、Unreal Editor 内で編集可能な独自の Level ブループリントがデフォルトで作成されます。 ただし、新規の Level ブループリントはエディタ インターフェースによって作成されます。
レベル全体に関連するイベントもしくはレベル内のアクタの特定インスタンスは、 関数呼び出しまたはフロー制御オペレーションという形式でアクションのシーケンスを実行するために使用されます。 Unreal Engine 3 のキズメットの機能と酷似しているため、 Unreal Engine 3 を熟知しているユーザーには馴染みのあるコンセプトです。
Level ブループリント は、マチネ に対する制御メカニズム、 およびレベル内に配置されるアクタにイベントをバインドするための制御メカニズムを提供します。
ブループリント インターフェース
ブループリント インターフェース (Blueprint Interface) は、実装されていない名前だけの 1 つ以上の関数のコレクションで、 他のブループリントへ追加することができます。インターフェースが追加されたブループリントには、必ずこれらの関数が格納されます。インターフェースの 関数には、追加されるそれぞれのブループリントで機能性が与えられます。一般のプログラミングの インターフェースのコンセプトと基本的に一緒で、共通のインターフェースを通じてさまざまなタイプのオブジェクトの 共有やアクセスが可能となります。簡単に言うと、ブループリント インターフェースはブループリントの相互共有やデータの送信を可能にします。
ブループリント インターフェースは他のブループリントと同様に、エディタを使用してコンテンツ クリエーターが作成します。 しかしある程度の制限があり以下の作業はできません。
- 変数の追加
- グラフの編集
- コンポーネントの追加
ブループリント マクロ ライブラリ
ブループリント マクロ ライブラリ (Blueprint Macro Library) は マクロ または内蔵グラフのコレクションを保持するコンテナで、 別のブループリントにノードとして配置することができます。実行とデータ移行のための入出力の両方が付いていて、 よく使うノードのシーケンスを格納できるため、時間を短縮できます。
マクロは参照されるすべてのグラフで共有されますが、 コンパイル時の折りたたまれたノードのように、グラフへ自動的に展開されます。つまり、ブループリント マクロ ライブラリではコンパイルが必要ありません。ただし、マクロへの変更は、 これらのグラフを含んだブループリントが再コンパイルされた時に そのマクロを参照するグラフのみに反映されます。
ブループリント ユーティリティ
ブループリント ユーティリティ は Blutility とも呼ばれるブループリントで、 エディタの実行や機能の拡張に使用します。これらは UI のボタンとしてパラメータなしで イベント をエクスポーズすることができます。 ブループリント にエクスポーズされた全ての機能を実行する能力があり、現ビューポートで選択されたアクタ一式を実行します。
ブループリントの仕組み
ブループリントの機能はさまざまな要素で定義します。その中にはデフォルトで存在する機能もあれば、 必要な時に追加できる機能もあります。これらの機能により、コンポーネントの定義、初期化の実行、 設定操作、イベントへの対応、操作の構造化およびモジュール化、 プロパティの定義などが可能になります。
Components ウィンドウ
コンポーネントを理解すれば、ブループリント エディタ 内の [Components] ウィンドウを使ってコンポーネントをブループリントに追加することができるようになります。これにより、 CapsuleComponents や BoxComponents や SphereComponents 経由でのコリジョン ジオメトリの追加、 StaticMeshComponents または SkeletalMeshComponents の形でのレンダリングされたジオメトリの追加、 MovementComponents を利用した動作の制御を実現します。コンポーネント リストに追加されたコンポーネントは、 インスタンス変数に割り当てることによって、コンポーネントのイベントグラフや別のブループリントからコンポーネントへのアクセスを可能とします。
コンストラクション スクリプト
イベント グラフ
関数
関数 は、ブループリントで他のグラフから実行または呼び出しができる 特定の ブループリント に属しているノードグラフです。関数には、ノードによって指定され、単一の実行出力ピンを含む関数名がつけられた エントリーポイントがあります。関数が別のグラフから呼び出されると、出力実行ピンが有効になり、 接続されたネットワークが実行されます。
変数
変数 とは、ワールド内のオブジェクトやアクタの値または参照を保有するプロパティです。これらの プロパティには、それらを含む ブループリント から内部でアクセスすることができます。また、 レベルに配置されたブループリントのインスタンスで作業をしているデザイナーが値を変更を加えられるように、 外部からアクセスすることもできます。
ブループリントのモード
ブループリントの モード は、ウィンドウの表示状態を決定します。Level ブループリントにはグラフモードだけしかありませんが、Blueprint クラスには次の 3 つのモードがあります。
- デフォルト モード - ブループリントのデフォルトを設定するモードです。
- コンポーネントモード - ブループリントを構成するコンポーネントを追加、除去、そして修正するモードです。