システム概要
本ページの内容は Unreal Engine 向けに向けたものです。
Unity に向けた内容のご紹介ページは現在作成中です。
概要
Playable! Game-Python Bridge(GPB)は、「既にある程度完成しているゲームをゲーム側にできるだけ変更を加えずに外部のプログラムから操作出来るようにする」という指針のもと開発しています。 これはテスト作業がゲーム開発の中盤以降になることが多いと想定しているためです。
GPB では、自動プレイのシステムとゲーム本体とのやり取りを以下の二点に絞ることで、 ゲームプログラム本体に影響を与えることなく、人間のプレイと同等とみなせる自動プレイを実現します。
- ゲーム内の情報を吸い上げる (Read Only でゲーム本体に影響を与えない)
- 入力デバイスのエミュレーションでゲームを操作する (ゲーム側は人間の操作として扱える)
また、外部プログラムの通信と入力デバイスエミュレーションは UE プラグインを導入するだけで動作するようになっています。 これにより、自動プレイに必要なゲーム内情報を収集する処理をゲームプログラムに追加するだけで、ゲームを外部プログラムから制御可能になります。
自動プレイの流れ
GPB を利用した自動プレイは以下のような流れで進行していきます。
- ゲームの状態を外部プログラムと同期する
- 外部プログラムが現在の状態から行動を決定する
- 外部プログラムがゲームに疑似入力を行う
- 入力に基づきゲームを進行させる
- 1 に戻る
GPB の機能
GPB は現在以下の入力デバイスのエミュレーションに対応しています。
その他のデバイスについては、要望に応じて順次対応していく予定です。
詳細は各ページをご確認ください。
また、外部プログラムからゲームプログラムに任意のデータを送信する機能もあります。
そのほか、外部からゲームを操作する上で最低限必要となる以下の機能は、GPB で標準サポートしています。
- ゲームの終了(Quit) … ゲーム側で
QuitGame
が呼び出されゲームが即時終了します - コンソールコマンド … Unreal Engine のコンソールコマンドをセットすることが出来ます
詳細はこちらをご確認ください。
ゲームごとに必要な対応
ゲームプログラムに必要な対応
ゲームはタイトルごとに様々な違いがあり、共通の方法であらゆるゲームの自動プレイを実現することは難しいと考えられます。 そのため、GPB ではゲームごとに個別の対応(ゲーム内情報の取得をすることで自動プレイを実現する想定です。
Unreal Engine のコンテンツ側で行うべき対応作業はこちらをご覧ください。
外部プログラムに必要な対応
GPB は現在 Python 向けのモジュール(playable-gpb
モジュール)として提供しています。
playable-gpb
モジュールは Unreal Engine コンテンツを制御するための基本機能がまとまっており、
このモジュールを利用することでゲームの操作を簡単に行うことが出来ます。
モジュールの詳細はこちらをご覧ください。
Python 以外のプログラミング言語のサポートは現在行っておりません。
参考資料
自動プレイ全般
- 無料で始める!「龍が如く」を面白くするための高速デバッグログ分析と自動化(CEDEC 2017)
- 『ベヨネッタ 2』におけるゲーム品質を上げる為の自動化 ~オートプレイと継続的なパフォーマンス計測~(CEDEC2016)
- 正確なパフォーマンス情報を毎日蓄積!RE ENGINE タイトルを支える自動計測レポート (CEDEC2018)