画面遷移グラフ
本ツールの画面遷移グラフ機能について説明します。
画面遷移グラフは実験的機能として提供しています。
はじめに
画面遷移グラフは、ゲームの各画面間の移動経路(遷移経路)をグラフ化したもので、事前に自動生成しておき、自動プレイの際に利用します。
グラフの形式として有向グラフを利用しています。有向グラフを利用することで、画面間の遷移関係の表現が容易になり、最短経路の探索が高速に行うことが可能になります。
有向グラフの一般的な説明については 有向グラフとは を参照してください。
画面遷移グラフを利用することで、LLM への問い合わせ回数を減らし、自動プレイのスピード化・省コスト化を目指しています。
本機能は開発途上であり、現段階では実験機能として提供しています。
UI ラベリング機能
画面遷移グラフ上の画面及びアクションに任意のラベル(名前)を設定することで、自動プレイにおいて設定した名前をそのまま使用することが可能になります。
設定方法については グラフ編集 を参照してください。
画面構成
多目的ウィンドウにある 画面遷移グラフ (Experimental)
タブ(画面遷移グラフ操作タブ)の画面構成について説明します。
グラフデータ
画面遷移グラフデータの格納ディレクトリパス
settings.yaml > graph_data_path
選択
ディレクトリ選択ダイアログにより上記パスを選択
実行済みアクションの割合
画面遷移グラフ自動生成の進行状況:実行済みアクションの割合
終了条件
画面遷移グラフ自動生成の進行状況:終了条件の実行済みアクションの割合 settings.yaml > check_end_visited_rate
クラスタリング閾値
画面クラスタリングに用いる画面類似度の閾値を設定 settings.yaml > cluster_threshold
探索開始
画面遷移グラフ自動生成の開始
グラフの保存
画面遷移グラフの保存
グラフの読み込み
画面遷移グラフの読み込み
グラフを消去
画面遷移グラフのクリア
画面遷移グラフ描画エリア
画面遷移グラフの描画・編集
画面遷移グラフの生成
自動プレイで画面遷移グラフを利用するには、事前に画面遷移グラフを生成しておく必要があります。
グラフ生成
以下に画面遷移グラフを生成する手順を説明します。
- ゲームを起動・接続した状態にしておきます。
グラフデータ
フィールドの選択
ボタンで画面遷移グラフデータを保存するディレクトリを選択します。
通常はデフォルトのままで構いません。探索開始
ボタンで画面遷移グラフの生成を開始します。- グラフ生成が開始されると、プログレスダイアログが表示され、画面遷移グラフ描画エリアにグラフに登録された画面とアクションが逐次描画されます。
- 登録された画面の左上には当該画面の「画面 INDEX」が描画されます。
- 画面上のボタン等のアクションの場所には背景色付きの円形が描画されます。
- 背景が灰色のアクションは「未実行」の意味です。
- 背景が水色のアクションは「実行済み:遷移先が同一クラスター内画面」の意味で、円形の中央に遷移先の「画面番号(INDEX)」が描画されます。
- 背景が緑色のアクションは「実行済み:遷移先が他クラスター画面」の意味で、円形の中央に遷移先の「画面番号(INDEX)」が描画されます。
- 背景が赤色のアクションは「実行済み:遷移先画面なし」の意味です。
- プログレスダイアログの
Cancel
ボタンで生成を中止することが可能です。
生成中止した後も探索開始
ボタンで続きから再開することが可能です。 グラフの保存
ボタンで生成したグラフデータを保存します。
保存先はグラフデータ
で選択したディレクトリです。グラフの読み込み
ボタンで生成済みのグラフデータをロードすることも可能です。
この場合も、探索開始
で途中からグラフ生成を再開することが可能です。
グラフ編集
画面遷移グラフ描画エリア上で、グラフを直接編集することが可能です。
ただし、編集内容が実際のあり得る画面遷移と異なる場合などは、グラフデータが壊れてしまう可能性もありますので、編集する際はご注意ください。
- マウスのスクロールホイールにより、描画エリアを拡大・縮小します。
- 任意のアクション(円形)上で右クリックするとサブメニューが表示されます。
- サブメニュー上部には当該アクションのオブジェクトパスが表示されます。
アクション名(変更可能)
: 当該アクションに任意の名前(ラベル)を設定します。デフォルトではオブジェクトパスの最後の部分が設定されています。リンク先画面をフォーカス
: リンク先画面をフォーカスします。ここからグラフの探索を開始
: 当該アクションから画面遷移グラフの生成を再開します。次の画面だけを追加
: 次の画面だけを追加します。連続して以降の要素を探索し続ける
: 次の画面以降も生成を継続します。
リンクの修正
: リンクに関する各種状態を変更します。未探索状態に変更
: 当該アクションを「未実行状態」に変更します。遷移先なしに変更
: 当該アクションを「実行済み:遷移先なし」に変更します。リンク先を追加
: リンク先を追加します。※実際のゲームにおいて遷移可能な画面を設定してください。現在のリンク先
: 現在のリンク先の画面番号(INDEX)の配列です。追加したいリンク番号
: リンク先に追加する画面番号(INDEX)を入力してください。
- 任意の画面(スクリーンショット)上側のラベル部分(数字と文字列)で右クリックするとサブメニューが表示されます。
- サブメニュー上部に当該画面のシーン名が表示されます。
画面名(変更可能)
: 当該画面に任意の名前(ラベル)を設定します。デフォルトではシーン名が設定されています。自動プレイでこの画面まで遷移
: 当該画面まで実際のゲームの画面を遷移します。方法は以下の 2 種類から選択します。画面遷移グラフによる自動プレイ
: 画面遷移グラフを利用して画面遷移します。途中グラフが途切れている場合はその場所で処理が中止されます。LLMによる自動プレイ
: LLM を利用した自動プレイにより画面遷移します。
この画面を削除
: 画面遷移グラフ上から当該画面を削除します。
- どの画面からもリンクされていない画面がある場合は、画面ラベルの右側に警告マークが表示されます。
パラメータチューニング
効果的な画面遷移グラフを生成するためには、利用するゲームに合わせてパラメータチューニングが必要になります。
以下にチューニングのポイントを説明します。
画面識別情報
画面識別に利用する情報を調整します。
グラフ生成時、自動プレイ時に有効
- hash_texts
画面識別情報に画面のテキスト情報を含めるかどうか - hash_texts_action_num
画面識別情報に画面のテキスト情報を含めるかどうかのアクション数の閾値 - hash_ui_name
画面識別情報に画面名を含めるかどうか - hash_action_pos
画面識別情報にアクションの座標情報を含めるかどうか - hash_action_text
画面識別情報にアクションのテキスト情報を含めるかどうか
画面遷移完了判定
画面遷移が完了したことを判定するためのパラメータを調整します。
グラフ生成、自動プレイ時に有効
- wait_max_time
画面安定状態を待つ最大時間(秒) - wait_stable_interval
画面安定状態をチェックする間隔(秒) - wait_stable_in_a_row
画面安定状態をチェックする回数
行き先判定
LLM による行き先判定に利用する情報を調整します。
自動プレイに画面遷移グラフを利用する際、最初に LLM を利用して遷移先画面を判定するのですが、その際に LLM に送信する情報です。
LLM に送信可能なトークン数に上限があること、画面遷移グラフ上に存在する全ての画面の情報を一回の送信に含める必要があることから、送信する情報の内容を最適化する必要があり、判定精度に影響します。
自動プレイ時に有効
- graph_texts
LLM による行き先判定に用いる情報に画面のテキスト情報を含めるかどうか - graph_action_text
LLM による行き先判定に用いる情報にアクションのテキスト情報を含めるかどうか
画面クラスタリング
画面クラスタリングのパラメータを調整します。
画面識別情報の調整をしてもなお、同一画面が別画面として識別される可能性があります。それを可能な限り避けるため画面識別情報の類似度により画面をクラスタリングします。
グラフ生成時、自動プレイ時に有効
- cluster_threshold
画面クラスタリングに用いる類似度の閾値 - is_clone_action_results
同じクラスにアクション結果をクローンするかどうか
経路探索
画面遷移の経路探索の方法を調整します。
グラフ生成時、自動プレイ時に有効
- search_unvisited_action_mode
- random: ランダム動作を行う
- nearest: 最も近いクラスタを選択する
- action_most: 最もアクションが多いクラスタを選択する
- unvisited_action_most: 最も未訪問アクションが多いクラスタを選択する
- search_visited_action
訪問済みアクションのトグルフラグを使用するかどうか - get_action_random
ランダムアクションを取得するかどうか - one_to_many
有向グラフで 1 対多のエッジを許容するかどうか
生成終了判定
グラフ生成の終了判定のパラメータを調整します。
手動操作でもグラフ生成を終了することは可能ですが、グラフ生成には時間がかかるため、放置するなどの便宜のために用意しています。
グラフ生成時に有効
- check_end
画面遷移グラフ自動生成の終了判定を行うかどうか - check_end_visited_rate
終了判定に用いる実行済みアクション数の割合の閾値 - check_end_action_count
終了判定に用いる発見済みアクション数の下限
繰り返し判定
同じ画面遷移パターンの繰り返し判定のパラメータを調整します。
稀に、かつ、不可避的に同じ画面遷移パターンを繰り返すことがあり、それを可能な限り回避するために用意しました。
グラフ生成時、自動プレイ時に有効
- check_repeat
繰り返し判定を行うかどうか - check_repeat_max_pattern_length
繰り返し判定に用いる繰り返しパターンの長さの上限 - check_repeat_max_repeat_count
繰り返し判定に用いる繰り返し回数の閾値
ゲーム強制終了
ゲームプロセスの強制終了処理のパラメータを調整します。
ゲーム再起動時に、プラグイン経由の終了コマンドでは終了しないゲームの場合に利用します。
画面遷移グラフの自動生成では、画面遷移に行き詰った場合に、ゲームを再起動し、グラフ生成を再開するのですが、ゲームプロセスが残るとメモリ消費が増えてしまう可能性があるため、本機能が用意されています。
主にグラフ生成時用ですが、ツールの動作全般で有効
- force_terminate
ゲームプロセスが通常終了しない場合に強制終了するかどうか - wait_time_for_force_terminate
強制終了を実行するまでの待ち時間(秒)
画面遷移グラフの利用
自動プレイ時に画面遷移グラフを利用する手順を以下に説明します。
自動プレイにて画面遷移グラフを利用するには、以下の設定が必要です。
設定 ウィンドウ
画面遷移グラフ (Experimental) タブ
画面遷移グラフ関連
- Use Graph / 画面遷移グラフを利用する
自動プレイの際に画面遷移グラフを利用するかどうか - Auto Add Graph / 自動プレイ時に自動で画面遷移グラフを追加登録する
自動プレイの際に未知の画面をグラフに追加するかどうか
settings.yaml(ツール設定ファイル)
graph(画面遷移グラフ関連)
# settings.yaml
graph:
is_use_graph: false
is_use_auto_add_graph: false
- is_use_graph
自動プレイの際に画面遷移グラフを利用するかどうか - is_use_auto_add_graph
自動プレイの際に未知の画面をグラフに追加するかどうか
有向グラフとは
有向グラフ(ゆうこうグラフ、Directed Graph)とは、頂点(ノード)と辺(エッジ)から構成されるグラフの一種で、各辺に方向が付けられているものを指します。これにより、辺は一方通行の道として機能し、グラフのある頂点から別の頂点に進む際の方向を示しています。
有向グラフの基本構成要素
- 頂点(ノード):
- 点として表される。
- グラフ内の各位置を示す。
- 辺(エッジ):
- 頂点間を結ぶ線として表される。
- 方向がある(矢印として描かれる)。
- 辺の方向により、移動可能なルートが決まる。
特徴
- 有向辺:
- (A → B) という表現があり、頂点Aから頂点Bへの一方向の移動を示す。
- 入次数と出次数:
- 入次数(In-degree): ある頂点に向かって入ってくる辺の数。
- 出次数(Out-degree): ある頂点から出ていく辺の数。
用途
- ネットワーク分析: 例えばウェブページのリンク構造(PageRankアルゴリズム)や、ソーシャルネットワークでのフォロー関係。
- タスクの依存関係: あるタスクが他のタスクの前に実行されなければならない場合の依存関係のモデル化。
- 交通システム: 道路ネットワークやフライトネットワークにおける一方通行の道やフライトルート。
有向グラフの例
A → B
↓ ↑
C → D
この図では、頂点Aから頂点Bへ、頂点Aから頂点Cへ、頂点Cから頂点Dへ、頂点Dから頂点Bへの方向が示されています。
有向グラフは、多くの現実の問題やシステムをモデル化するのに非常に有用です。理解しておくことで、ネットワークの分析や最適化に役立ちます。