map_param_calc
ゲームのマップ画像上に各種ツールの情報をプロットするための座標変換パラメーターを計算するツールです。 Collision Checker, Item Collector などで利用します。
操作マニュアル
ツールの起動
- 本ツールは Playable! 用に構築された任意の仮想環境上で動きます。Anaconda Prompt を起動後、構築済みの Playable! 用仮想環境に切り替えてください。例えば、以下のコマンドを実行して Collision Checker 用の仮想環境に切り替えます。
conda activate collisionchecker # itemcollector, playthrough なども可
- 本ツールの実行プログラムは、
playable_toolkit_{バージョン名}/playable-subtools/tools/map_param_calc/
に存在します。以下のコマンドを実行してカレントディレクトリを切り替えてください。cd {playable_toolkit のディレクトリ}/playable-subtools/tools/map_param_calc
python map_param_calc.py
を実行し、ツールを起動します。
起動が完了すると以下のウィンドウが表示されます。
ゲームの起動
最初にツール左上を操作し、Game-Python Bridge を組み込んだゲームを起動します。
- [選択] ボタンを押し、実行するゲームの exe ファイルを指定します。
- 通信に使用する TCP ポートを指定してください
- ゲームエンジンの種別を指定します。 (現状 Unreal Engine と Unity を選べます)
- [ゲームを起動] ボタンを押します。
この操作でゲームが起動しますので、目的のレベル/シーンまでゲームを進めてください。
マップ画像の読み込み
次にツール左下を操作し、マップ画像を読み込みます。
- [選択] ボタンを押すとファイル選択ダイアログが出るので、計算対象となるマップ画像を選択してください。
_map_list.yaml
の読み込み
このツールには、Map Scanner や Collision Checker、General Agent で利用する _map_list.yaml
と連携し、必要なパラメータを追記する機能があります。
ツール右下を操作し、YAML ファイルを読み込んでください。
- [選択] ボタンを押すとファイル選択ダイアログが出るので、対象となる YAML ファイルを選択してください。
この操作は省略可能です。
地図とゲーム内位置のマッピング
- ゲーム内の位置
- 上記に対応するマップ上の位置
のセットを 2 セット用意し、その 2 点の情報をもとに、ゲーム内の座標 <-> 地図画像の座標変換係数を算出します。
- ゲームを操作し、プレイヤーの現在位置を変更します。 (出来るだけ 地図の左上に位置する わかりやすい場所が良いでしょう)
- プレイヤー位置に相当する地図画像の位置を右クリックして、コンテキストメニューから [「ポイント 1」にセット] ボタンを選択します。
- 再度ゲームを操作し、プレイヤーの現在位置を変更します。 (出来るだけ 地図の右下に位置する わかりやすい場所が良いでしょう)
- プレイヤー位置に相当する地図画像の位置を右クリックして、コンテキストメニューから [「ポイント 2」にセット] ボタンを選択します。
選択する 2 点の座標は左上と右下である必要はありませんが、十分な離れている必要があります。
座標変換係数の計算と結果の確認
ポイント 1 と ポイント 2 をセットした状態で、ツール右側の [このマップの変換係数を計算] ボタンを押すと計算を行います。
- YAML ファイルを読み込んでいる状態だと、現在のレベル/シーンに対応する
map_params
の情報を探してツール上に表示します。- 該当するレベル/シーンが存在しない場合は、ボタンを押すことで新規作成することができます。
- 計算をした後は、地図上にプレイヤー位置を表示するようになっています。地図上のプレイヤー位置が正しいかを確認してください。
- 計算結果はツール上だけでなくコンソールにも出力されます。
----result----
plot_coefficient = (-0.00015890402249789558, 227.0855509440104), plot_bias = (817.3281992255834, -3290.4197998046875)
map_min = (5143533.727954606, 19.025516074644127)
map_max = (-734228.1141810727, 14.489780552422573)
--------------
YAML の保存
座標変換が適切に行われていることを確認したら、ツール右下の [この情報で YAML を更新] ボタンを押します。 ボタンを押すことでファイルが更新されます。
更新後に、異なるレベル/シーンの地図画像を読み込み、そのマップの変換係数を計算していくこともできます。
更新した _map_list.yaml
はエディターなどで適宜修正していただくことになると思います。
ゲームの終了
[ゲームを終了] ボタンを押すことで、起動しているゲームを終了させることができます。
動作確認環境
- Python 3.8/3.9
- DearPyGui 1.9.0
License
- "Noto Sans Japanese" licensed under the SIL Open Font License