操作マニュアル
ツールの構成
このツールには 3 つの基本ファイルが含まれています。
配布しているツールにはサンプルゲームに対応したスクリプトが含まれています。 これを参考に自動テストを行いたいゲームプロジェクトに対応するスクリプトを作成ください。
map_scanner_server
サーバープログラムです。 設定したマップ情報からスキャンタスク(指定した広大なマップを細分化した、狭い領域のスキャン)を作成しクライアントに割り当て、 クライアントがスキャンした結果を収集、整理して立体地形データを構築します。
map_scanner_client
クライアントプログラムです。 サーバーから与えられたスキャンタスクを実行し、その結果をサーバーに送信します。
map_scanner_searcher
マップ経路探索の事前計算ツールです。 スキャンによって得られた立体地形データを用いて経路探索の事前計算を行い、 Collision Checker や Item Collector などに必要なデータファイルを生成します。
操作手順
ツールの起動
下記を参考に実行環境に応じたプログラムを実行してください。
依存関係のインストール
本ツールは以下の Python モジュールを使用しています。
- Playable! Game-Python Bridge
- こちらを参考にモジュールをインストールしてください。
それ以外の依存モジュールは requirements.txt
を利用することで一括インストールできます。
cd Python
pip install -r requirements.txt
Python プログラムの実行
- サーバープログラムを実行したい PC で
map_scanner_server.py
を実行 - 「ゲームの実行ファイル」からゲームプログラムのパスを指定
- クライアントプログラムを実行したい PC で
map_scanner_client.py
を実行
クライアントプログラムは、サーバープログラムと同一の PC でも実行可能です。
ツールの起動には少々時間がかかりますので、しばらくお待ちください。
ツールが起動すると以下のウィンドウが表示されます。
サーバープログラム
クライアントプログラム
サーバーとクライアントの接続
- 複数のコンピュータを用いてスキャンを実行する場合、map_scanner_server と map_scanner_client の IP アドレスを
map_scanner_server を実行しているコンピュータの IP アドレスに設定し、ポート番号を統一してください。
- 同一のコンピュータで map_scanner_server と map_scanner_client を動かす場合にはデフォルトの設定をそのまま使用してください。
- map_scanner_server 側でスキャンしたいマップを選択し、[サーバーを起動する] をクリックしてください。
- 操作後、以下のような画面が表示されます。
- map_scanner_client 側で [ゲームファイルを選択] をクリックしてゲームファイルを指定してください。
- [サーバー接続] ボタンをクリックし、サーバーに接続してください。
- 成功した場合は以下のような画面が表示されます。
- クライアントがサーバーに接続すると、サーバー側では以下のように接続したクライアントの情報が表示されます。
- 成功した場合は以下のような画面が表示されます。
スキャンの実行
map_scanner_client 側で同時実行するゲームの数を指定します。
実行するゲームの数は [スレッドを増やす] ボタンをクリックするごとに増やすことができ、
ゲームが起動すると自動的にサーバーからタスクを受け取り、スキャンを実行していきます。
ウインドウモードはゲーム側設定ファイル WindowsNoEditor\[ProjectName]\Saved\Config\WindowsNoEditor\GameUserSettings.ini
で変更可能です。
FullscreenMode=1
にするとフルスクリーンにて起動します。FullscreenMode=2
にするとウインドウモードで起動します。
スキャン処理の並列数
map_scanner_client は一度に複数のゲームを起動してスキャンタスクの並列処理を行っていきます。
同時実行するゲームの数は以下を参考に最適な値を指定してください。
- 並列数が多いほどスキャンは短時間で完了しますが、より多くのマシンパワーを必要とします。
- CPU がボトルネックになると思いますので、まずは CPU コア数の半分程度からお試しください。
- ゲームを起動した状態でリソースマネージャーを⽴ち上げ、CPU 負荷率を監視しながら並列数を適切に調整してください。
ツールの終了
map_scanner_server 側の「残タスク」が 0 になり、すべてのスレッドでスキャンされたタスクが None
になるとスキャンは完了します。
スキャンが完了したら手動でスキャンデータを保存して、サーバー側、クライアント側ともにツールを閉じてください。
データのセーブとロード
- map_scanner_server 側の「セーブデータ」ボタンをクリックすることで現在のスキャン結果を保存することができます。
- セーブを行うと、ツールのルートディレクトリに
map_data
ディレクトリが作成され、その中に_map_list.yaml
と対応するマップのスキャンデータを保存します。 - スキャン途中でも「セーブデータ」をクリックすることでスキャンデータと完了したタスクリストを保存することができます。
- セーブを行うと、ツールのルートディレクトリに
- map_scanner_server 側の「ロードデータ」ボタンをクリックすると、保存済みのスキャンデータを読み込み、現在のスキャンデータをロードしたデータに置き換えます。
スキャン結果を用いた探索の事前計算
最後に、スキャンによって得られた立体地形データを使って経路探索の事前計算を行います。
- 先ほどスキャンしたマップに対応する レベル遷移のヒットボックス情報ファイル (後述) を、スキャンデータと同じフォルダに配置
- 例:
PL_010VIL_hitbox.json
を/map_data/PL_010VIL/
以下に配置
- 例:
- map_scanner_searcher を起動
- マップを選択して、[search_map] ボタンをクリック
- 完了まで待機(「スキャンデータを探索中…」のダイアログが消えるまで)
探索が完了すると、対応するマップフォルダの下に探索結果のデータが保存されます。