Choose your operating system:
Windows
macOS
Linux
ゲームプレイのスクリプトを作成する場合、ブループリントを使えばネイティブ C++ コードの書き出しやコンパイルをせずに UClasses を作成することが可能です。つまり、ネイティブ CPP プログラマーのような専門知識がなくても使えるので、 ブループリントはゲーム開発を行うチームに最適です。ブループリントは仮想マシン (VM) であり、ネイティブ CPP 関数の呼び出しが可能なため、 プログラマー以外の人でも問題なく使いこなせることができるのです。ただ残念なことに、ブループリントをネイティブ C++ コードに変換する VM に依存するため負荷がかかります。 そのため、Blueprint ノードからネイティブ C++ 関数へ変換することでフレームあたりのゲーム パフォーマンスに影響が出ることはご想像の通りです。
ブループリントの実行負荷が VM で気にならない程度であれば VM オーバーヘッドは許容範囲となりますが、 ゲームの実行速度をできるだけ速くするためには (特にハードウェア性能に制限があるデバイスを出荷する時)、Unreal Engine の Blueprint Nativization ツールが役に立ちます。
この Blueprint Nativization ツールは、エピックの新しい VR タイトル「 Robo Recall 」の開発において大活躍しました。
VM オーバーヘッドを削減する
Blueprint Nativization (ブループリントのネイティブ化) の主な目的は、プロジェクトのブループリントからネイティブ C++ コードを生成して、プロジェクトのランタイムでの VM オーバーヘッドを削減することです。一般的に、 Blueprint クラスはすべて、新しく生成された C++ クラスに置き換えられ、 クック処理 中にプロジェクトにコンパイルされます。 テキスト エディタから変換した C++ コードは読み取り可能ですが、コードは再利用可能 (または「読みやすく」) フォーマット化されていません。
Player Character プループリントとネイティブ化されたコードの比較です。
このページで、プロジェクトのブループリントのネイティブ化を行います。ブループリントのみプロジェクトであれば理解しやすいタスクです。まず始めに、 Blueprint Nativization の有効無効を切り替えるユーザー インターフェース (UI) を探しましょう。
ブループリントのネイティブ化を有効にする
プロジェクトを初めて作成する時、Blueprint Nativization はデフォルトで無効になっています。Blueprint Nativization 設定は、 Unreal Editor の [Project Settings (プロジェクト設定)] メニューの左欄で [Packaging] を選択し、 [Project - Packaging] メニューの [Blueprints] ドロップダウン メニューの中にあります。
[Blueprint Nativization Method (ブループリントのネイティブ化方法)] ドロップダウン リストから [Disable] を選択すれば、開発中はいつでも Blueprint Nativization を無効にすることができます。
ドロップダウン リストを見ると分かりますが、以下の 2 つのオプションが選択できます。
-
Inclusive Nativization
-
Exclusive Nativization
Inclusive ネイティブ化メソッド
[Inclusive] を選択すると、プロジェクト内でサポートされている Blueprint クラスがすべてネイティブ化されます。
[Inclusive] ネイティブ化メソッドが選択されると、 Unreal Automation Tool (UAT) は パッケージ化プロセス 中にサポート対象の以下の Blueprint アセットをネイティブ化することに注目してください。
-
Blueprint クラス
-
ブループリント関数ライブラリ
-
ブループリント インターフェース
-
Anim ブループリント
-
Widget ブループリント
-
ユーザー定義の構造体
-
ユーザー定義の Enum
この時、Level ブループリントと Bluepint マクロは Blueprint Nativization ツールのサポート対象外なので、ネイティブ C++ コードには変換されません。
ブループリントを変換対象から除外する
Blueprint Nativization ツールが Blueprint ノードをネイティブ C++ コードに変換すると、 出来上がった実行ファイルには、変換をサポートするための端末命令、依存、埋め込みメタデータが追加されます。
従って、 Inclusive Blueprint Nativization メソッドを選んだ場合、 実行ファイルのサイズが肥大化し、出荷対象プラットフォームが容量オーバーになる可能性があることに留意してください。これはとても重要です。
変換プロセスから除外したいブループリントを指定すれば、実行ファイル サイズの肥大化の緩和が可能になります。ブループリントを変換対象から除外するには、
プロジェクトの
DefaultEditor.ini
ファイルを開いて、
[BlueprintNativizationSettings]
ヘディングを以下のコンフィギュレーション プロパティで作成します。
-
所定のタイプの Blueprint アセットを排除するには、
ExcludedBlueprintTypes
コンフィギュレーション プロパティを設定します。
例えば、+ExcludedBlueprintTypes=/Script/UMGEditor.WidgetBlueprint
の場合、Widget Blueprint アセットは変換されません。 -
特定の Blueprint アセットを排除するには、
ExcludedAssets
コンフィギュレーション プロパティを設定します。
例えば、+ExcludedAssets=/Engine/Tutorial/SubEditors/TutorialAssets/Character/TutorialCharacter
だと Tutorial Character Blueprint アセットは変換されません。
Blueprint アセットは、パッケージ化プロセスの一部としてクックされる場合のみネイティブ化されることに注意してくだださい。従って、クック処理する Blueprint アセットあるいはマップを何も指定しないと、 Unreal Engine は Content ディレクトリの中にあるすべてのものをクックします。 Inclusive メソッドを選択して、使っていない Blueprint がネイティブ化されていたら、 [Exclusive] Blueprint Nativization Method を選択した方がよいかもしれません。
Exclusive ネイティブ化メソッド
限られたハードウェア リソースのデバイス向けに出荷される大きめのプロジェクトの場合は、 Exclusive Blueprint Nativization Method を選択することをお勧めします。
[Inclusive] メソッドは、ターゲット ハードウェアのアプリケーションをホストする容量を実行ファイルが超える危険のない小さ目のプロジェクトに利用できます。 一方、 [Exclusive] Blueprint Nativization Method にも以下のような利点があります。
-
実行フィアルの最終サイズを制限する
-
未使用の Blueprint アセットの変換を能動的に防ぐ
-
変換対象の Blueprint アセットの明示的な選択が可能である
例えば以下のような (ただしこれに制限されない)、計算に負荷のかかるブループリントに対しては、Exclusive Blueprint Nativization Method を選択することを推奨します。
-
ノードの多いブループリント
-
ループの最適化が必要なブループリント
-
複雑な演算処理を実行するブループリント
ネイティブ化するブループリントを選択する
Blueprint アセットを含むプロジェクトを作っていない場合、いずれかのプロジェクト テンプレートを使用して新規作成してください。ここでは説明しやすいように
Third Person (サードパーソン)
Project テンプレートを使用しています。
Exclusive Blueprint Nativization Method を使ってネイティブ化したい Blueprint アセットを選択するには、以下の手順を行います。
-
[Edit] メニューを開いて、 [Project Settings... (プロジェクト設定)] を選びます。
-
[Project Settings (プロジェクト設定)] メニューを開いたら、 [Packaging] をクリックして [Project Settings - Packaging] メニューを選択します。
-
[Blueprints] サブメニューから [Blueprint Nativization Menu] ドロップダウン リストをクリックします。
-
[Exclusive] オプションから Exclusive Blueprint Nativization Method を選択します。
-
サブメニューの下の方にある矢印で展開して、空の配列を表示します。
この配列には、ネイティブ化を明示的に選択できる Blueprint アセットのリストが入ります。
-
[Project Properties] メニューを終了して、Blueprint アセットが入っているフォルダを開きます。
-
ネイティブ化したい Blueprint アセットを開きます。
-
ブループリント エディタ を開いたら、 [Class Settings] ボタンをクリックします。
-
この Blueprint アセットにネイティブ化対象の印をつけるために、 [Details (詳細)] パネルの [Packaging] サブメニューにある [Nativize (ネイティブ化)] チェックボックスをクリックします。
-
このアセット用の ブループリント エディタ を終了する前に、 [Save] ボタンを必ずクリックしてください。
-
Exclusive メソッドによるネイティブ化の対象に選んだ Blueprint アセットを確認するには、 [Project Settings] メニューを開いてネイティブ化の印をつけた Blueprint アセットのリストが入っている配列を表示します。
これで Exclusive Blueprint Nativization Method を使ったプロジェクトのクックとパッケージ化処理の準備ができました。
ネイティブ化するブループリントをビルドするために必要なすべてのサポート対象の依存性もネイティブのためにフラグ付けされることに注目してください。
ネイティブ コードの場所
ネイティブ コードは
[ProjectDirectory]\Intermediate\Plugins\NativizedAssets
にあります。
追加のリソース
Blueprint Nativization に関する追加情報は、以下の Feature Hifhlight ビデオで紹介されています。