メインコンテンツまでスキップ
バージョン: 1.3.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 圧縮するか否かのフラグ
注意

Waitをtrueにした場合、ゲーム内の情報を 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 などを使ってデータを取得するようにしてください。

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