画面遷移グラフ

本ツールの画面遷移グラフ機能について説明します。

画面遷移グラフは実験的機能として提供しています。

はじめに

画面遷移グラフは、ゲームの各画面間の移動経路(遷移経路)をグラフ化したもので、事前に自動生成しておき、自動プレイの際に利用します。

グラフの形式として有向グラフを利用しています。有向グラフを利用することで、画面間の遷移関係の表現が容易になり、最短経路の探索が高速に行うことが可能になります。

有向グラフの一般的な説明については 有向グラフとは を参照してください。

画面遷移グラフを利用することで、LLM への問い合わせ回数を減らし、自動プレイのスピード化・省コスト化を目指しています。

本機能は開発途上であり、現段階では実験機能として提供しています。

画面構成

多目的ウィンドウにある Transition Graph (Experimental) タブ(画面遷移グラフ操作タブ)の画面構成について説明します。

image

Graph Data Path

画面遷移グラフデータの格納ディレクトリパス

settings.yaml > graph_data_path

Select

ディレクトリ選択ダイアログにより上記パスを選択

Visited Action Rate

画面遷移グラフ自動生成の進行状況:実行済みアクションの割合

Target Rate

画面遷移グラフ自動生成の進行状況:終了条件の実行済みアクションの割合 settings.yaml > check_end_visited_rate

Cluster Threshold

画面クラスタリングに用いる画面類似度の閾値を設定 settings.yaml > cluster_threshold

Is Clone Action Results from Similar UI

同じクラスにアクション結果をクローンするかどうか settings.yaml > is_clone_action_results

Search Graph

画面遷移グラフ自動生成の開始

Save Graph

画面遷移グラフの保存

Load Graph

画面遷移グラフの読み込み

Clear Graph

画面遷移グラフのクリア

画面遷移グラフ描画エリア

画面遷移グラフの描画・編集

画面遷移グラフの生成

自動プレイで画面遷移グラフを利用するには、事前に画面遷移グラフを生成しておく必要があります。

グラフ生成

以下に画面遷移グラフを生成する手順を説明します。

  1. ゲームを起動・接続した状態にしておきます。
  2. Graph Data Path フィールドの Select ボタンで画面遷移グラフデータを保存するディレクトリを選択します。
    通常はデフォルトのままで構いません。
  3. Search Graph ボタンで画面遷移グラフの生成を開始します。
  4. グラフ生成が開始されると、プログレスダイアログが表示され、画面遷移グラフ描画エリアにグラフに登録された画面とアクションが逐次描画されます。
    image
    • 登録された画面の左上には当該画面の「画面 INDEX」が描画されます。
    • 画面上のボタン等のアクションの場所には背景色付きの円形が描画されます。
    • 背景が赤色のアクションは「未実行」の意味です。
    • 背景が緑色のアクションは「実行済み=遷移先画面あり」の意味で、円形の中央に遷移先の「画面 INDEX」が描画されます。
    • 背景が灰色のアクションは「実行済み=遷移先画面なし」の意味です。
  5. プログレスダイアログの Cancel ボタンで生成を中止することが可能です。
    生成中止した後も Search Graph ボタンで続きから再開することが可能です。
  6. Save Graph ボタンで生成したグラフデータを保存します。
    保存先は Graph Data Path で選択したディレクトリです。
  7. Load Graph ボタンで生成済みのグラフデータをロードすることも可能です。
    この場合も、Search Graph で途中からグラフ生成を再開することが可能です。

グラフ編集

画面遷移グラフ描画エリア上で、グラフを直接編集することが可能です。

ただし、編集内容が実際のあり得る画面遷移と異なる場合などは、グラフデータが壊れてしまう可能性もありますので、編集する際はご注意ください。

  1. マウスのスクロールホイールにより、描画エリアを拡大・縮小します。
    image
  2. 任意のアクション(円形)上で右クリックするとサブメニューが表示されます。 image
    • サブメニュー上部には当該アクションのオブジェクトパスが表示されます。
    • Disconnect ボタンで「未実行状態」に変更可能です。
    • Inactive ボタンで「実行済み=画面遷移なし」に変更可能です。
    • Target Index List には画面遷移先の「画面 INDEX」のリストが表示されます。
    • Set Connect ボタンで「実行済み=画面遷移あり」に変更可能です。この際、ボタン左側の入力フィールドの数値が画面遷移先の「画面 INDEX」になります。

パラメータチューニング

効果的な画面遷移グラフを生成するためには、利用するゲームに合わせてパラメータチューニングが必要になります。

以下にチューニングのポイントを説明します。

画面識別情報

画面識別に利用する情報を調整します。

グラフ生成時、自動プレイ時に有効

  • 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
    強制終了を実行するまでの待ち時間(秒)

画面遷移グラフの利用

自動プレイ時に画面遷移グラフを利用する手順を以下に説明します。

自動プレイにて画面遷移グラフを利用するには、以下の設定が必要です。

Settings(設定ウィンドウ)

Transition Graph (Experimental) タブ

画面遷移グラフ関連
image

  • 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)とは、頂点(ノード)と辺(エッジ)から構成されるグラフの一種で、各辺に方向が付けられているものを指します。これにより、辺は一方通行の道として機能し、グラフのある頂点から別の頂点に進む際の方向を示しています。

有向グラフの基本構成要素

  1. 頂点(ノード):
    • 点として表される。
    • グラフ内の各位置を示す。
  2. 辺(エッジ):
    • 頂点間を結ぶ線として表される。
    • 方向がある(矢印として描かれる)。
    • 辺の方向により、移動可能なルートが決まる。

特徴

  • 有向辺:
    • (A → B) という表現があり、頂点Aから頂点Bへの一方向の移動を示す。
  • 入次数と出次数:
    • 入次数(In-degree): ある頂点に向かって入ってくる辺の数。
    • 出次数(Out-degree): ある頂点から出ていく辺の数。

用途

  • ネットワーク分析: 例えばウェブページのリンク構造(PageRankアルゴリズム)や、ソーシャルネットワークでのフォロー関係。
  • タスクの依存関係: あるタスクが他のタスクの前に実行されなければならない場合の依存関係のモデル化。
  • 交通システム: 道路ネットワークやフライトネットワークにおける一方通行の道やフライトルート。

有向グラフの例

A → B
↓   ↑
C → D

この図では、頂点Aから頂点Bへ、頂点Aから頂点Cへ、頂点Cから頂点Dへ、頂点Dから頂点Bへの方向が示されています。

有向グラフは、多くの現実の問題やシステムをモデル化するのに非常に有用です。理解しておくことで、ネットワークの分析や最適化に役立ちます。