メインコンテンツまでスキップ
バージョン: 1.2.0

Unreal Engine プラグイン

Game-Python Bridge の Unreal Engine プラグイン、「Playable-COMBridge」について説明します。

利用方法

Playable-COMBridgeプラグインをプロジェクトのPluginsディレクトリ以下に配置してください。

その状態で.uprojectを開くとPlayable-COMBridgeのビルドが行われ、当該プロジェクトでプラグインが利用できるようになります。

Playable-COMBridge が依存するプラグイン

Playable-COMBridgeは以下のプラグインに依存しています。

Playable-COMBridge のブループリント関数

Get Connection Param from CommandLine

指定したコマンドライン引数から接続情報を取得します。
この処理は各レベルのレベルブループリントのEventBegeinPlayで呼ぶことを想定しています。

Image

例えば上記の場合、ビルドしたゲームを

sample.exe -ServerAddress=127.0.0.1 -TCPPort=8080 -Commpress=True

のように起動することで接続先 IP アドレスと TCP ポート番号を指定することが出来るようになります。

インプット

  • Server Address Option … サーバーアドレスを格納しているコマンドライン引数 (デフォルト値: ServerAddress)
  • Port Number Option … TCP ポート番号を格納しているコマンドライン引数 (デフォルト値: TCPPort)
  • Enable Compress Option … ゲーム内情報の圧縮を行うかを決めるコマンドライン引数 (デフォルト値: Compress)

アウトプット

  • Server Address … コマンドライン引数から取得したサーバーアドレス
    ※ 見つからなかった場合は "localhost" となります。
  • Port Number … コマンドライン引数から取得した TCP ポート番号
    ※ 見つからなかった場合は 8000 となります。
  • Enable Compress … コマンドライン引数から取得したゲーム内情報の圧縮フラグ
    ※ 見つからなかった場合は false となります。

Initialize

Playable-COMBridge の初期化及び通信処理の開始を行います。 この処理は各レベルのレベルブループリントの EventBegeinPlay イベントで呼ぶことを想定しています。

Image

注意

現在、レベルを遷移時にネットワーク接続が維持しないようにしています。制御したい全てのレベルで最初に Initialize を実行する必要があります。

インプット

  • IPAddress … 接続先 IP アドレス (デフォルト値: localhost)
  • Port … 使用する TCP ポート (デフォルト値: 8000)
  • Wait (Experimental) … 機械学習向けに用意された、Unreal Engine 側が Python の処理を待つ機能のフラグ
  • Compress … ゲーム内情報を LZ4 圧縮するか否かのフラグ
注意

Waittrueにした場合、ゲーム内の情報を Send した際に内部でSet Game Pausedによるポーズ処理が行われ、外部プログラム側からデータが送られてくると同関数でポーズ解除をする仕組みになっています。 ゲームが別途Set Game Pausedを呼び出すと整合が取れなくなりますのでご注意ください。

アウトプット

Send

接続先にゲーム内の情報を送信します。
Python 側の処理のしやすさも考慮し、秒間 15-30 回程度の頻度で送信するのが良いと思います。

Image

インプット

  • Json String … Json 形式の文字列(String)です。 BlueprintJson などで作成してください。

Get Gamepad State

ゲームパッドの状態を JSON 文字列として取得します。

Image

インプット

  • Player Index … 対象とするプレイヤー番号

アウトプット

  • Return Value … 現在のゲームパッドの状態を格納した JSON 文字列
備考

この文字列は外部プログラムから Unreal Engine 側に送信するゲームパッド情報と同一なので、操作のリプレイをしたい場合などに有効です。

COMDK Json Utility のブループリント関数

BlueprintJson プラグインはブループリントで JSON を作成することが出来ますが、煩雑になりやすく沢山のデータを格納しようとすると面倒です。

そこで GPB では、基本的なパラメータの格納を簡潔に記述できるようユーティリティ群を用意しています。

Bool To JSON

bool 値を JSON Object に格納します。

Float To JSON

float 値を JSON Object に格納します。

Integer To JSON

int 値を JSON Object に格納します。

String To JSON

文字列を JSON Object に格納します。

Vector To JSON

Vector を以下のような Json Value に変換します。

"FieldName":{ "X":00.00, "Y":00.00, "Z":00.00 }

Rotator To JSON

Rotator を以下のような Json Value に変換します。

"FieldName":{ "Roll":00.00, "Pitch":00.00, "Yaw":00.00 }

ユーザー定義のデータのハンドリング

ユーザー定義のデータは下記のようにすることで取得可能です。

Image

ユーザー定義データは JSON 形式の 文字列 として取得することが出来ますので、BlueprintJson などを使ってデータを取得するようにしてください。

外部プログラムからデータを送信する方法はこちらを参照してください。