2021年5月2日日曜日

Autopilotを実装する上での厄介な話

 ゲームをAutopilotしようとすると、次の操作に進むための待ち合わせは画面上の変化になるかと思います。ステータス的な状態を色で表現してくれていれば、赤くなったら、赤っぽくなったら薬草を使うといったことになるかと思います。

 先日紹介したUltimate Fishing Simulatorでも、釣れた後の売る、リリースする、の選択ダイアログの表示により、釣れたことを判定しています。

 普通じゃん、と安易に考えてはいけません。極端な例ですが、2種類の釣れた場面の画像を並べてみました。釣れた魚のサイズで2パターンの見せ方がある?ということではありません。例えば釣り終わった判定で[Sell]の緑ボタンを検出しようとします。位置が2か所ある以外にもう一つ大きな違いがあります。それは背景の色(=明るさ)によってボタンの色も微妙に違ってくるということです。拡大して確認しないとわかりませんが、背景が透けているような演出になっています。画像では夜に釣れた時のほうが、緑色の[Sell]ボタンが明るい色に見えないでしょうか?実際には昼間に釣れたほうの[Sell]ボタンのほうが明るくなっています。昼間の[Sell]ボタンの緑要素(RGBの0~255の値)は179、夜の[Sell]ボタンの緑は175になります。ボタンの背景色である緑色が半透明になっていて、背景の明るさに影響を受けているということです。ゲーム的には視覚効果なのかと思います。

 じゃあ緑が175以上って判定すればいいじゃんと思うかもしれませんが、それだと空の色のほうがよっぽど緑要素が大きいので誤判定になってしまいます。ここが難しいところです。半透明ではないダイアログを表示してくれれば、色判定でもパターン検出でもできるのですが・・・ 


簡単な回避策としては以下2点。
  1. このゲームは、釣りをする時間帯を自由に変更できます。そのため、常に夜になるように操作することで問題を回避できます(どう夜にするかはまあおいといて)。
  2. もう1つ、最近のゲームにはよくある設定ですがこのUltimate Fishing Simulatorにもある、画質設定を暗めに設定するという方法があります。このゲームには、明るさ、明暗さ、ガンマの3点指定するオプションがありますので、ゲームの状況を判別できる程度に暗く設定しておくと、時間帯に関係なく夜っぽくなりボタンの色の濃さが安定するので、色判定が安定します。
とまあこんなことを考えてやっているといろいろノウハウが身について面白いですよって話です。


0 件のコメント:

コメントを投稿