アクター情報の取得
ゲームの詳細な情報を取得する作業(ゲーム内情報の取得 #2)に入る前に、 Map Scanner に関係する作業を完了させるため、先にアクター情報の取得の実装を行います。
自動テストの実行にはいくつかのアクター情報の取得が必要になります。 特に、レベル遷移の情報はほぼ必須となります。
以下では、レベル遷移の情報の取得と、それ以外の情報に分けて解説します。
ゲームごと、目的ごとに対象とすべきクラス、収集する情報は様々です。
個別の案件ごとに適切に書き換えて利用していくのが良いでしょう。
また、ユーティリティウィジェットのような形でアクター情報を取得できるようにしておくと便利です。
レベル遷移のヒットボックスのリストアップ
複数のレベル (マップ) で構成されているゲームでは、何らかの方法でレベル間の移動を実現しています。 例えばサンプルゲームではレベル上の特定のエリアに到達すると、別のレベルの指定された座標にワープするという仕様になっています。
このようなレベル遷移の仕組みは、マップ上に配置されたヒットボックス (接触するとイベントが発生する不可視オブジェクト) と プレイヤーが接触することで発動する仕様になっていることが多いです。
Map Scanner ではこのヒットボックスを扱うことは出来ませんが、 自動テスト中にレベル間の移動を行うようにする/行わないようにするためには、 この領域がどこに存在しているかを自動テストのプログラムが把握しておく必要があります。
その他のアクターのリストアップ
また、実現したい自動テスト(特に Playthrough Tester)にあわせて、レベル遷移の情報も収集する必要があります。 たとえば、宝箱や鍵のかかった扉などのアクターの情報を取得する必要があります。
サンプルゲームでの実装例
レベル遷移のヒットボックスのリストアップ
サンプルゲームではレベル上に配置されたアクターの位置やサイズ、向きをリストアップし、 ファイルに保存するエディターユーティリティウィジェットを作成しています。
これを各レベルで実行し、結果を各自動テストプログラムに提供することで、 自動テストプログラムが静的に配置されているゲーム内情報を扱えるようにしています。
Content/Morikatron/ActorDetector/HitBoxDetector
実行画面
実装
その他のアクターのリストアップ
サンプルゲームでは以下のアクターの情報を取得するエディターユーティリティウィジェットを作成しています。
Content/Morikatron/ActorDetector/TreasureBoxDetecter
… 宝箱Content/Morikatron/ActorDetector/LockedDoorDetecter
… 鍵のかかった扉