Playable! 更新履歴
v1.2.0 - 2024-02-21
ドキュメント
追加
Get Started > テンプレートプロジェクトへの導入
にGeneral Agent によるテストプレイ
を追加しました。
変更
- 各ツールの変更に合わせ、ドキュメント全体を更新しました。
- 各ツールのファイル構成、新規ゲームへの対応手順 などが変更されています。
Get Started > テンプレートプロジェクトへの導入
以下のドキュメントも変更されています。
Game-Python Bridge
UE Plugin
UE プラグイン側に変更はありません。
Python Module
修正
- 接続処理の前に Bridge.receive() 関数を呼び出した場合に AttributeError 例外が発生する不具合を修正しました
- 上記の場合には OSError 例外が送出されるようになります。
Map Scanner
追加
- Unreal Engine 以外のゲームエンジンを考慮できるようにし、Unity 製のゲームを扱えるようにしました。
- Map Scanner で利用するには、Unreal Engine と同様に、ゲーム側にプラグインを導入していただく必要があります。
変更
- GUI のボタンの見た目を変更し、ボタンだと分かりやすいように変更しました。
map_scanner_server.py
の GUI のボタン名を変更しました。- 「セーブデータ」ボタンを「データを保存」に変更しました。
- 「ロードデータ」ボタンを「既存のデータを読み込み」に変更しました。
map_scanner_server.py
にスキャンの推定残り時間を表示するようにしました。- 推定残り時間は直近のタスク処理時間から計算した概算値で、予測精度は高くありません。
map_scanner_client.py
の GUI のボタン名を変更しました。- 「サーバー接続」ボタンを「サーバーに接続する」に変更しました。
- Unity 製のゲームへの対応に伴い、全体の構造を見直しました。
- 座標系や距離単位の異なるゲームに対応する為に全体の構造を見直しています。
_map_list.yaml
のフォーマットを変更しました。ゲームエンジンの指定などが新規に追加されています。custom/__init__.py
の書き換えのみで対象とするゲームを切り替えられるようにしました。
- Unity 対応のサンプルゲーム用のコードを追加しました。(
Python/custom/unity_demo
) _map_list.yaml
のフォーマットを Collision Checker と共通化しました。
Collision Checker
追加
- Unreal Engine 以外のゲームエンジンを考慮できるようにし、Unity 製のゲームを扱えるようにしました。
- Collision Checker で利用するには、Unreal Engine と同様に、ゲーム側にプラグインを導入していただく必要があります。
変更
- Windows で扱えるパスの最大長は 259 文字という制限があるため、
result_viewer.py
で読み込む一部のファイルを絶対パス指定から相対パス指定に変更しました。 - Unity 製のゲームへの対応に伴い全体の構造を見直しました。
- 座標系や距離単位の異なるゲームに対応する為に全体の構造を見直しています。
_map_list.yaml
のフォーマットを変更しました。ゲームエンジンの指定などが新規に追加されています。custom/__init__.py
の書き換えのみで対象とするゲームを切り替えられるようにしました。
- Unity 対応のサンプルゲーム用のコードを追加しました。(
Python/custom/unity_demo
) _map_list.yaml
のフォーマットを Map Scanner と共通化しました。result_viewer.py
の GUI のボタンの見た目を変更し、ボタンだと分かりやすいように変更しました。svrun_client.py
に簡易的な_map_list.yaml
のチェック処理を追加しました。
修正
_map_list.yaml
のenv_path
にスペースが含まれているとsvrun_client.py
が正しく動作しないという問題がありましたので、スペースが含まれているパスも扱えるように修正しました。
Playthrough Tester
追加
- Unreal Engine 以外のゲームエンジンを考慮できるようにし、Unity 製のゲームを扱えるようにしました。
- Playthrough Tester で利用するには、Unreal Engine と同様に、ゲーム側にプラグインを導入していただく必要があります。
- ゲームエンジンの差異を吸収するユーティリティ関数を
lib/utils/navi_tools.py
に追加しました。- get_location()
- get_player_location()
- get_rotation()
- get_player_rotation()
- get_camera_rotation()
- Unity のサンプルゲーム用のコードを追加しました。(
unity_demo
)
変更
- Unity 製のゲームへの対応に伴い、alfort 向けのコードでゲームエンジンの差異を吸収するユーティリティ関数を利用するように修正しました。
lib/utils/navi_tools.py
に定義されている以下の関数をゲームエンジンの差異を吸収するように変更しました。- get_dist_and_direction_2d()
- get_dist_and_direction_3d()
- GUI のボタンの見た目を変更し、ボタンだと分かりやすいように変更しました。
Item Collector
修正
settings.json
で日本語を含むパスが指定されると、正しく内容を読み込めないバグを修正しました。_map_list.yaml
のフォーマットを Map Scanner と共通化しました。
General Agent
追加
- 新規ゲーム対応機能 (主に Third Person テンプレート対応を想定)
- 新規ゲーム対応モード (--add-new-game|-ang) を追加しました。
- 座標変換係数設定機能を追加しました。
- サンプルゲーム (Alfort) 対応
- 「看板を読む」コマンドを追加しました。
- 看板の座標を object 定義ファイルに追加しました。
変更
- 汎用性の向上
- command / object 定義ファイルを統合し、yaml 形式としました。
- 新機ゲーム対応機能に伴う細かい変更を行いました。
修正
- メモリ不足時の Astar 経路探索に失敗する問題を修正しました。
その他のツール
map_param_calc.py
追加
- ゲームと連携して、プレイヤー現在位置や現在のマップ名を取得するようにしました。
- Map Scanner などのツールで利用する
_map_list.yaml
を編集する機能を追加しました
修正
- 画像を変更しようとする際にエラーが発生する問題を解消しました。
v1.1.0 - 2023-12-31
ドキュメント
追加
- General Agent の導入に伴い以下のページを追加しました。
- docs/general-agent/
変更
- General Agent の導入に伴い以下のページに記述を追加しました。
- docs/index.md
- docs/getting-started/index.md
- docs/integration-sample/start-guide.md
General Agent
追加
- 新規ツールとして General Agent を追加しました。
v1.0.1 - 2023-09-15
ドキュメント
追加
- Playable! ツールの組み込み練習として、Unreal Engine の Third Person テンプレートプロジェクトに対し、以下の作業を試すためのチュートリアル資料を追加しました。
- Game-Python Bridge の組み込み
- Map Scanner の導入
- Collision Checker の導入
- Playthrough Tester の導入
- Simple Auto Gameplay のドキュメントにおいて、欠けていた情報を追記しました。
- Python 仮想環境の構築方法
- ツールの起動方法
変更
- 各ツールの変更に伴い、該当するドキュメントを修正しました。
- 具体的な内容は各ツールの更新履歴を参照してください。
- 一部の定義名の表記が適切でない部分を修正しました。
- Game-Python Bridge の対応する Unreal Engine のバージョンを更新し、Unreal Engine 5.2 までに対応しました。
- Unreal Engine 5.2 以降でコンソールコマンドを利用する際の操作 (キーのデフォルト値) が変更されたため、該当する文章を修正しました。
Game-Python Bridge
UE Plugin
- 変更はありません。
Python Module
- 変更はありません。
Map Scanner
追加
- ソースコードに不足していたコメントや DocString を追加しました。
変更
- Scan Result Viewer の仕様変更を行いました。
- 起動時にデフォルトで地形データの可視化が ON になるようにしました。
- 起動時のカメラ座標が
settings.yaml
で指定した「スキャン範囲の原点」になるようにしました。 - 空間上に地形データの描画更新が行われる境界線を表示するようにしました。
pip install
時に Game-Python Bridge も一緒にインストールするようにしました (必ずドキュメントサイトの環境構築手順に従ってください)。- 一部コードのファイル名やクラス名の形式を、他 Playable! ツールと統一しました。
core
フォルダはbase
フォルダになり、alfort
フォルダ内のコードで継承されるファイルやクラスにはbase_
やBase
の接頭語を付けました。alfort
フォルダ内のコードについて、core
フォルダ内のコードを継承しているファイルやクラスにはcustom_
やCustom
の接頭語を付けました。
settings.yaml
の key 名をスネークケースに統一しました。- スキャン時に生成されるパラメータファイル
_map_list.yaml
に、ボクセルサイズおよび各マップの探索開始座標が記載されるようになりました。
修正
Python/base/server_global.py
>reset_global()
で、最新の numpy では廃止されているdtype
を使用している箇所を修正しました。
削除
- 未使用のコードを削除しました。
Collision Checker
変更
pip install
時に Game-Python Bridge も一緒にインストールするようにしました (必ずドキュメントサイトの環境構築手順に従ってください)。- 一部コードのファイル名やクラス名の形式を、他 Playable! ツールと統一しました。
alfort
フォルダ内のコードについて、基底クラスを継承してカスタマイズする必要があるファイルやクラスにはcustom_
やCustom
の接頭語を付けました。Python/utils/common_func.py
はPython/utils/util_modules.py
になりました。
- ソースコードにハードコーディングされていた以下のパラメータを
_map_list.yaml
から読むようにしました (ドキュメントサイトのマニュアルに従って、一部パラメータは同ファイルに手書きする必要があります)。Python/result_viewer.py
> 各マップのゲーム内名称リストMAPNAME_LIST
Python/result_viewer.py
>get_startpoint()
に定義していた各マップの初期座標Python/svrun_client.py
> ゲームバイナリのパスを指定する実行オプション--envpath
のデフォルト値Python/make_colfile.py
> テスト対象となるマップ ID のリストmap_list
Python/map_data/map_data.py
> スキャンデータのボクセルサイズCELL_SIZE
_map_list.yaml
内の一部パラメータ名が変わりました。- セーブデータやコリジョンファイルなどを用意する際、ファイル名に
{マップ ID}__
の接頭語を追加する必要がなくなりました。 Python/svrun_server.py
、Python/svrun_client.py
、make_colfile.py
の実行時オプションが変わりました。詳しくはドキュメントサイトの操作マニュアルを参照してください。result_viewer.py
とcoltest_checker.py
で作成される、設定内容を保存するファイルの命名規則、および拡張子を統一しました。result_viewer.py
の GUI 上から、異なるテストバージョンのテスト結果表示を選択できるようにしました。- 新規ゲームへの導入手順を減らすために、一部関数やクラスの仕様を調整しました。
修正
requirements.txt
に記載している依存モジュールの漏れや誤りを修正しました。result_viewer.py
の落下点リストにおける「ここに移動」をクリックした際、適切な場所にワープされず、青矢印の移動経路も正しくないバグを修正しました。- テスト結果に落下点や怪しい箇所が一つも存在しない時、
result_viewer.py
で落下点や怪しい箇所を可視化しようとするとエラーになるバグを修正しました。
Item Collector
追加
- ソースコードに不足していたコメントや DocString を追加しました。
変更
pip install
時に Game-Python Bridge も一緒にインストールするようにしました (必ずドキュメントサイトの環境構築手順に従ってください)。- 一部コードのファイル名やクラス名の形式を、他 Playable! ツールと統一しました。
core
フォルダはbase
フォルダになり、alfort
フォルダ内のコードで継承されるファイルやクラスにはbase_
やBase
の接頭語を付けました。alfort
フォルダ内のコードについて、core
フォルダ内のコードを継承しているファイルやクラスにはcustom_
やCustom
の接頭語を付けました。libs
フォルダはutils
フォルダになりました。
- ソースコードにハードコーディングされていた以下のパラメータを
_map_list.yaml
から読むようにしました (ドキュメントサイトのマニュアルに従って、一部パラメータは同ファイルに手書きする必要があります)。Python/utils/util_modules.py
(旧:Python/libs/tools.py
) >「ゲーム座標 ⇔ スキャンデータ座標」間の座標変換係数pos_set
Python/item_collector.py
> スキャンデータのボクセルサイズCELLSIZE
Python/item_collector.py
> 各マップのゲーム内名称リストMAP_NAME_TABLE
Python/item_collector.py
> 各マップ用のセーブデータ名MAP_SAVEDATA_TABLE
- 各マップに存在するアイテムの座標を列挙したファイルの名前が
{マップ ID}_Treasure.json
から{マップ ID}_item_list.json
に変わりました (同ファイルをゲームプロジェクトから作成する際、新しい方の名前で保存してください)。 - GUI 上で「フィールド移動で回収」「デバッグ移動で回収」「アイテム未入手」「回収失敗」に割り振られている色が、円グラフと凡例で異なっていたので統一しました。
- GUI の凡例部分のデザインを調整しました。
削除
- 未使用のコードを削除しました。
Playthrough Tester
変更
pip install
時に Game-Python Bridge も一緒にインストールするようにしました (必ずドキュメントサイトの環境構築手順に従ってください)。- 共通して使用できるコードを基底クラスに、ゲーム毎にカスタマイズが必要なコードを継承クラスとして分離しました。
base
フォルダ内には基底クラスとなるコードが置かれています。alfort
フォルダ内のコードで継承されるファイルやクラスにはbase_
やBase
の接頭語がついています。alfort
フォルダ内には継承クラスとなるコードが置かれています。base
フォルダ内のコードを継承しているファイルやクラスにはcustom_
やCustom
の接頭語がついています。
- セーブデータが存在しないゲームでも少ない変更作業で動くよう、一部関数やクラスの仕様を調整しました。
修正
- GUI 上の手本ラベル欄において、一部の漢字が正常に表示されないバグを修正しました。
- 手本の再生に失敗したと判定された後、同じ手本、もしくは次の手本の先頭からリトライする処理が正しく動かず、プレイヤーが停止状態となるバグを修正しました。
削除
- 不要なコードやファイルを削除しました。
その他のツール
Simple Auto Gameplay
追加
- 必要なモジュールを一括でインストールするための
requirements.txt
を追加しました。 ドキュメントサイトの環境構築手順に従って使用してください。
map_param_calc.py
変更はありません。
サンプルゲーム
変更
- Item Collector の変更に伴い、
Content/Morikatron/ActorDetecter/TreasureBoxDetecter
が出力するファイル名を変更しました。