2015年7月21日火曜日

ゲームの自動操作装置(6):画像解析部

ゲームの自動操作装置(5):キャプチャ環境 からの続き


画像の解析処理は以下のような流れになる

・スクリーンキャプチャ
 Windowsの標準APIを用いてPC上の画面をキャプチャする
 これで画面のビットマップイメージが取得できる
 キャプチャソフトの配置座標、ウィンドウサイズをあらかじめ決めておけば
 このビットマップイメージを切り取ることでゲーム画面の情報を取得できる


・画像の解析/状態の取得
 取得したゲーム画面を解析して現在の状態の取得を行う
 各状態(画面)特有のオブジェクトに対してその有無をチェックする方法をとった
 
 例:
  ・フィールド移動中にミニマップが表示される
  ・戦闘中には必ずHP表示ウィンドウが出る
  ・カジノで定型メッセージによって次の操作が促される
   Etc

 チェックしたいオブジェクトをあらかじめ準備しておく
 ゲーム画面のプリントスクリーンから矩形に切り取ってビットマップファイル化しておけばOK
 このとき、切り取ったオブジェクトの座標、矩形の縦横ドット数をメモしておく
 
 キャプチャ画面のビットマップに対して、上記オブジェクトのビットマップとの比較を行う
 比較の方法は何でもよい
 一番簡単なのは各ピクセルのRGB成分の値を取得し、その差の二乗の平均値をとる方法である
 まったく同じ画像ならばこの値は0となり、画像の差が大きいほど値は大きくなる
 マッチングのしきい値未満ならばオブジェクトを検知とする


※注意点
 ・キャプチャソフトの設定について必ずメモしておくこと
 ・できればバッチファイル等で設定/特定の座標へのウィンドウ表示を再現可能にしておくこと
  アスペクト比や明るさ・コントラストの設定が変わってしまうと機能しなくなる

 ・マッチングのしきい値を適正な値にすること
   高くしすぎれば誤検知が増える
   低くしすぎれば未検知が増える


ゲームの自動操作装置(7):画像解析部のコード へ続く

0 件のコメント:

コメントを投稿