2021年4月29日木曜日

Autopilot for Ultimate Fishing Simulator model float

 RPAツール(今回はUWSC)で、Ultimate Fishing Simulatorの完全自動化を実現しました。一晩中自動で釣りをしてくれることでしょう(やってないけど)。 まずはYoutubeにアップした動画をご覧になってください。


 キャストした後のドラグのピコピコっとした動きがサイバーな感じしませんか?特に意味はないのですが、カチカチ切り替えられるところを一定のリズムで切り替えるといい感じかなと思って切り替えています。
 そもそも何言ってんだ?という方向けに簡単に解説します。RPAとはRobotic Process Automationの略で、PC上での操作を自動化するための仕組みになるかと思います。簡単なところではExcelマクロがありますが、帳票の内容を別のシステムに入力する作業を自動化するといった機械的な作業を効率化するために利用するものです。
 そういったツールをゲームに適用するとどうなるかという話ですが、ゲームの状況に応じた操作をすることで自動でゲームを進めることができます。特にRPG的な同じ作業を繰り返すゲームには有効です。1点重要なところですが、オンラインゲームではこういった方法でゲームを進めることは禁止されていますので、絶対にしないでください。運営側での検出は簡単だと思いますので翌日にはBANされることでしょう。Ultimate Fishing Simulatorはオンラインゲームではありませんが、月間ランキングといった要素があるので、ご迷惑とならないよう自作ステージでの確認に留めています。


 次にどんな風にゲームに適用するかですが、方法は2種類。決まったタイミングでキーやマウス操作をして進める方法と、何等かの条件が満たされたら次に進む、です。画面遷移や何か操作した次の操作が確実であれば、決まったスピードでキー入力やマウスクリックをするだけで進みますね。アイテムの購入を例とすると、お店に入る→種類を選ぶ→商品を選ぶ→個数を入力→購入ボタンをクリックで購入できそうですよね。操作は固定なので画面を見なくてもできそうではないですか?こういうパターンはとても簡単です。操作した内容を再生するだけです。もう1つは何か条件を満たしたら次の操作を行うパターンで、今回は画面上の特定座標の色を見て想定する状態になったか判定しています。
 それでは、釣りゲームに必要となるポイントと、Ultimate Fishingどのように実現しているかご説明します。

キャスト:

キャストは簡単です。左クリックを押している時間で距離が変わりますので、適当に1秒、2秒押したままとするだけです。ゴルフゲームのようにタイミングが必要なければ、決まった時間ボタンを押したまま、または一定間隔で2度目を押すぐらいで良いと思います。

合わせ:

どの釣りゲームでも難しいと思います。今回はリールから糸を出す(スペースキー)、巻き上げる(左クリック)を一定間隔で行うことで、その時魚が餌に食らいついていたら自動的に合わせが行われるこのゲームの仕様を利用しています。浮き釣りであれば浮きの動きを見るべきかと思いますが、このゲーム、浮きの拡大画像が小さすぎて画像解析で判定することはできませんでした。

巻き上げ:

簡単そうに思われると思いますが、ここが一番難しいです。テンションを意識して巻き上げないとバレてしまうのでゲーム毎に工夫が必要です。Ultimate Fishingの場合、テンションに合わせてバーの長さと色が変わります。その色を判定して、リールを巻く、放置、糸を出す、テンションをゼロにするの4段階の対応をしています。かなり短い間隔で処理してますのでバレることは全くありません。

巻き上げ完了:

釣れたことをどう判定するか?という話です。このゲームでは、釣れた後、確保するかリリースするかを選択するボタンが出ます。その色がユニークであるため、ボタンの位置(座標)にその色が現れたかどうかで判定しています。釣れた魚の大きさで、ボタンの位置が2パターンに分かれますので2か所のポイントの色をチェックしています。小物が釣れた時は画面下部にボタンが出ますが、その時は「take screen shot1」と出ます。掬い上げるのに網が必要となる大物は画面上部にボタンが出ます。その時は「take screen shot2」と出ます。よろしければ今一度見直してみてください。
ということでこんな感じでプログラミングフィッシングが可能となります。「何が面白いの?」と思う方もいらっしゃると思いますが、技術的な好奇心とだけ言っておきましょう(笑)。

0 件のコメント:

コメントを投稿