2021年5月30日日曜日

UWSCによるゲーム パックマン パーフェクトプレイ

 UWSCを利用して、アーケードパックマン(steam版)の1面をパーフェクトでプレイする動画です。微調整苦労しましたがようやく完成しましたので是非ご覧ください。

 方法としては、画像判定でパックマンの位置を識別し、ドットの2つ手前を目安にカーソルキーコードを送信する方法(UWSCのKBD関数)で移動させています。パワーエサを食べた時は点滅等で画像判定できなくなるためタイミングを見計らって同じようにキーコードを送信しています。タイミングがかなりシビアなため、タスクマネージャからパックマンとUWSCのプロセスの優先順位を上げています。

 パックマンで遊んだことが無い方向けに少しゲームの解説をしますと、パックマンには4色の敵キャラがいてこの敵キャラにつかまるとミスとなります。この敵キャラは、パックマンの位置と別の敵キャラの位置により動きが決まっています。例えば、赤い敵はパックマンをひたすら追いかける、ピンクの敵はパックマンの先回りするように動く、青い敵はパックマンと赤い敵の2点から移動先を決めます。この追跡パターンにより、自キャラであるパックマンが同じ動きをすれば敵キャラも同じ動きをします。そのため、同じ操作をすれば同じ動きになるため、敵の位置を判定せずともステージをクリアできるようになります。



2021年5月15日土曜日

Ultimate Fishing Simulator 2のDemo版で釣れる魚たち

Ultimate Fishing Simulator 2で釣れる魚は画像にある5種類になります。左からYELLOW PERCH、SALMON SOCKEYE、SMALLMOUTH BASS、BLACK BULLHEAD CATFISH、 RAINBOW TROUT。
Ultimate Fishing Simulator 2 demo今まで釣れた最大は、ポイント3にて4KgのSOCKETE SALMON。SALMON SOCKEYEと表示されるときと、SOCKEYE SALMONと表示されるときがあるのはご愛敬かしら。






2021年5月12日水曜日

Ultimate Fishing Simulator カジキの釣り方

 カジキが釣れるようになったので私の釣り方をご紹介いたします。といっても今のところ400Kg強が最大です。ログを見ていると1トン近い大物釣り上げているプレイヤーもいる中ではたいした記録ではないです。

道具:

ロッド、リール、糸はレベル上限の物を使ってください。レベル21になると一番スペックの良いものが購入できるようになるので、レベル21にしておくと良いです。釣り針は最大の#12/0です。このゲーム釣り針のサイズに比例して釣れる魚のサイズが決まりますので最終ステージのボス魚ですので最大サイズを利用します。#12/0だと、100Kg以下の魚はかかりません。餌は切り身大×3か、生き餌×3です。生き餌のほうが釣れやすいように思います。餌代もなかなかのものですが、ここまでくると経験値もお金も気にならない状態かと思います。浮きは付けずカゴと臭魚を付けます。カゴを使うようになったらとたんに釣れやすくなった気がします。

かかるまで:

ボートで利用できる竿掛けを購入してトローリングします。2本ともセットしたらボート操縦のモードに切り替えます。レーダーを見ると何段階か大きさがあるのがわかりますので、大きい緑点を見つけるまで操縦し、見つけたらその周りをグルグル操縦します。HITすると赤くなるので操縦をやめて、かかっている竿を手に取ります。大きく無い点が赤くなった場合大物ではないので、[Q]でキャンセルしたほうが良いかもしれません。

釣り上げ方:

速度・ドラグはゼロではない最低にしておきます。マウス左ボタンを押す→テンションが赤くなったら離すことを何度も繰り返していると、そのうち巻き上げられるようになります。数百メートルラインが出ていくまで巻き上げられないこともありますが繰り返します。巻き上げられるようになったらひたすら巻き上げます。残り数十メートルで再度ラインが出ていくことがありますが、その場合はもう一度テンションが赤くなったら左ボタンを離すを繰り返してお魚さんがバテるまで頑張るしかないです。巻き上げられるようになるまで時間がかかるほど大物という印象。


2021年5月11日火曜日

Ultimate Fishing Simulator 2はジャンプができる

 Ultimate Fishing Simulator 2(以下UFS2)の前作には無いユニークな機能を紹介したいと思います。デモ版ベースなのできっと正式版にはもっとたくさんあると思います。

 一つ目は根掛かり、普通にプレイしていると遭遇するのですが、紹介しようと思って狙うとならない厄介な仕様です。Fishing Planetでは、根掛かりの他、魚ではなくゴミや水草が釣れてしまうトリッキーな演出がありましたが、そのような演出はUFS1にはありませんでした。その仕様こそがUFSの目指すところであったのではないかと思いますが、今作からは根掛かりするように仕様が変更されています。なんか根掛かりしそうだな、と思うところで根掛かりします。

 二つ目はジャンプ。え?ジャンプ?となると思いますが、ポジション決める前の移動操作が、WSADで前後左右、Shiftで加速までが前作の仕様でUFS2でも同じですが、UFS2にはスペースキーでジャンプができます。1人称視点のFPSそのままです。なぜジャンプできる必要があるのかいまのところ分かっていませんが、もしかするとジャンプしないと行くことができない特別なスポットとかが隠し要素であるのかもしれませんし、なんの関係も無いかもしれません。

 こちらが、手作り感満載の橋を渡っている途中の映像。手すりが目線より少し下という感じですよね。


こちらが、ジャンプにより手すりの上に乗った時の映像。視点が高いのがおわかりになりますでしょうか?移動モード以外にも釣りモードの時にもジャンプが可能となっているので、ジャンピングキャストとかでより遠くへとかちょっとおかしな方向へ進んでいないことを祈るばかりです。



Ultimate Fishing Simulator 2 レビュー

 とうとう出てしまいました。Ultimate Fishing Simulator 2のデモ版。まずはゲームの紹介文を翻訳したものを転記していますので、それぞれチェックを入れていきたいと思います。

コンピュータの前でリラックス:

「Ultimate Fishing Simulator 2」は、2017年にリリースされたヒットゲームの続編です。この数年間、私たちは皆さんから多くのフィードバックを集め、それが私たちの背中を押し、皆さんがエンターテイメントに完全に没頭できるゲームの第2部を作成しました!

新たなビジュアル設定、新たな物理システム、新たな場所、新たな機能......これらすべてが、あなたに大きなリラクゼーションと信じられないほどの楽しさを提供します。

こんな風に紹介されています。デモ版では、「JACKSON NATIONAL PARK」のみがプレイ可能ですが、「KIEL CANAL」、「ALASKA」、「RUSSIA LAKE」、「ZALESIE LETNISKO」、「THAILAND」、「SLOVAKIA」が選べるようになりそうです。メニューバーを見ると、デモ版では選択できませんが「TOURNAMENTS」が新しい要素のように思います。「STATISTICS」は1の時のランキングでしょうか。とにかく画面がCOOLです。


リアルなマップ:

アルティメットフィッシングシミュレーター2では、それぞれのマップが異なります。夏と冬の2つのマップで釣りをすることができます。氷に覆われた湖、浅いマスの川、秋の荒れた海。そのすべてがあなたを待っています。

スクリーンショットは、「JACKSON NATIONAL PARK」でのビジュアルです。挿絵ではなくこの映像のまま釣りができます。前作でも十分に美しい映像でしたが数段レベルアップしています。水面の葉が揺れ、流木が流れ、水鳥が水面を漂い、鳥が影を落とします。ほんとうに美しい映像で見入ってしまいます。



リアルな魚のモデル:

魚のモデルはすべて丁寧に作っています。細部まで再現することで、見栄えを良くしています。各マップには様々な種類の魚が生息しており、生物多様性に富んだゲームとなっています。

ここだけ見るとFishing Planetのようですが、釣れた後2種類の方法で堪能することができます。ヌメっとした感じや骨格的にそう動きますよね、という感じが見て取れます。ちなみにプレイヤーは男女選べて女性だとナイス・・・な感じです。

釣れた魚が動くからだと思いますが、重さの値が少しブレてます。演出がとても細かいです。



多様な漁法:

氷上の釣りに挑戦することを夢見ていますが、いつも暖かい国に住んでいますか?心配しないでください。Ultimate Fishing Simulator 2では、どんな方法でも釣りをすることができます。スピニング、フロート、グランド、フライフィッシング、海釣り、アイスフィッシング、ビーチフィッシング。

釣りの種類としては前作同様ですね。5種類のタックルをセットできますが、 デモ版では、ルアー用と浮き釣り用が登録されています。とてもリアルな映像になってしまい、ちょっとワームとか見たくない感じです。ベイトはパンだけですが物によってはリアル差がやっかいなことになりそうな予感がします。デモ版でもリール、ライン、ルアー等は何種類か選べるようになっていますので釣り始める前にスペックの良い物に変更しておくと良いです。




ユニークなAI魚システム:

このゲームでは、魚は常に水の中にいます。あなたが釣り針を落としても魚は発生せず、ただ水の中であなたが釣るのを待っています。

魚の種類によって、行動は異なります。葦や落ちた枝の近くを好むものもいれば、水底の石の間に隠れるものもいます。

AIスゴイです~という紹介が難しいのですが、水中カメラの機能ででこんなシーンが取れました。ルアーに対して2匹の魚が追いかけてきて1匹がルアーを咥えたとたんに2匹目は去っていきました。魚それぞれが周りの状況に応じた動きをしているように思えてなんかスゴイと思ってしまいました。ちなみにですが、スピードを20%にして巻き続ければルアーアクションがSTRAIGHTで最大レベルまで簡単に上がります。前作ではバー表示でしたが、今作ではルアーアイコンの色の変化で表現しているようで、白い色から緑色に変化します。
 


水中カメラ2.0:

水中カメラがさらにパワーアップして帰ってきました。カメラを回転させたり、カメラをルアーから遠ざけたり、キャスティング中にルアーを追尾したりすることができます!

前作には水中視点という非常に珍しい機能が実装されていました。ルアーや釣り針の目の前の視点となり、魚が食いつく瞬間を見ることができます。UFS2では、水中カメラ2.0として、視点変更とズームが可能となりました。マウス操作によっていろいろな角度からルアーを追いかけることができ、さらにズーム機能で距離を変化させることができます。これらの機能を駆使するとこんな映像が取れてしまいます。近づきすぎるとピンボケになる演出もあります。水中視点にするとシュノーケリングで実際に見ているような、ボコボコっという音になります。


インターネット接続なしでプレイ:

ゲームをダウンロードすれば、インターネットのアクセスを気にする必要はありません! アルティメットフィッシングシミュレーター2はいつでも起動できます!

はい、その通り。ネットワークを切断してもなんの異常もなくプレイを続けることができます。名目だけ無償ゲームとは大違いですね。

初めての人にも優しいゲーム:

せっかちですか?そんなことはありません! アルティメットフィッシングシミュレーター2には、初めてのプレイヤーと経験豊富なバーチャルフィッシャーのために、2つのゲームモードが用意されています。

デモ版にはモードの違いが表現されていませんが、UFS1にあるユニークな仕様だと思いますので、UFS2にも当然ながら実装されてくるものと思われます。UFS1にあったハンター視点は特にユニークで地上から魚の状態が手に取るようにわかるモードがありました。これを駆使して魚のいる場所で釣りをするという通常ありえないことができたので、2にも期待したいところです。



2021年5月9日日曜日

Power Automate Desktop の 画像判定がゲームで使えるか?

  Power Automate Desktopの画像判定機能を実験してみました。用意した画像にマッチする画像が画面上に表示されているか判定するための機能です。RPAツールには画像を判定する機能たいてい実装があると思いますが、試行錯誤するときには特にPADは良くできていると感じました。

 他ツールは調べたい画像イメージは事前にキャプチャしてファイルに保存しておく必要がありますが、PADはWin+Shift+Sと同じような動きで、その場でデスクトップの一部を指定して抽出することができます。編集画面でキャプチャした画像を確認できるのはもちろんのこと、複数キャプチャした場合の選択、一度対象から外してもキャプチャ履歴が残っていますので試行錯誤がやりやすくなっています。

 実行してみた印象としては、パフォーマンスに難ありですね(何に使おうと思っているのかバレますが・・・)。画面全体やフォアグラウンドデスクトップ全体等ではなく、座標指定で範囲を絞ることができますので、可能な限り絞り込みましょう。

 1か所ハマったのが、「リストにある画像を全て検索する」のオプションです。オフにした場合は先頭だけ検索するのかと想像して実験していましたが、複数画像が指定されている場合はAND検出かOR検出かの違いでした。


ちなみに先日の背景が透けて見えるステータス表示が検出可能なのか実験もしてみました。下画像の例では、右端中段に「浮き」の拡大画像があります。アタリがあると浮きが動き、最終的にはこの拡大表示が消えるのですが、この部分を検出させることはできませんでした。ほぼ背景ということもあり検出は難しそうではありますが、明るさを調整して真っ暗な状態にしてみてもできなかったので、厳密に画像が一致しなければ検出されないように思います。



2021年5月8日土曜日

Power Automate Desktop : 画像検出の仕様を確認する

 Power Automate Desktopには、画像を検出するアクションがあります。コグニティブサービスの画像検索は難しそうなのでオンプレミスで実行できる「条件:画像が存在する場合」と「遅延:画像を待機」で、画面上の画像を検出するアクションがどのような仕様なのか確認しました。今回は特に詳細部分に隠れている「画像照合アルゴリズム」の「基本」と「詳細」の違いにフォーカスしています。下図の下部にある詳細:画面照合アルゴリズム:基本 or 詳細 の部分になります。

結論:

 結論としては、「画像照合アルゴリズム」が「詳細」の場合は、デフォルトの「基本」より厳密に照合させる仕様のようです。基本の場合は多少ノイズがあっても検出します。

実験方法:

 Chromeのアイコンを抽出対象の画像と設定し、同じ画像に対してラインを重ねる本数を増やし、どちらの設定の場合どのような結果になるのか確認を行いました。他のウィンドウで目隠しをすることで対象の画像のみを検査させるようにしています。

実験結果:

 「画面照合アルゴリズム」が「基本」の場合、線が3本入っている状態でも検出してくれました。つまり下図では、一番右の線が4本重なっている図以外は、オリジナル画像と一致すると判定しました。

 「画面照合アルゴリズム」が「詳細」の場合は、オリジナル画像しか一致する画像として判定しませんでした。突き抜けているラインを半分程度重ねた時点で検出されなくなります。それ以外の「詳細」の特徴としては、「基本」と比較して検出処理に時間がかかるようです。目に見えて動作が遅くなりました。「検索モード」を指定されたサブ領域のみを検索するように設定して処理範囲を絞ったほうが良いように思います。

 また、画像の拡大・縮小を行った場合はアルゴリズムに関係なく一切検出しなくなります。一致度のようなパラメタが指定できるようになると利用シーンが増えるように思いました。

画面照合アルゴリズム基本と詳細






2021年5月7日金曜日

Power Automate DesktopのOCR機能でゲームのステータスをチェックできるか?

 Ultimate Fishing Simulatorに限らず、ゲーム中の状態やステータスが画面上に表示されています。釣りの場合だと、水深や距離、ドラグの強弱、浮きの状態等でしょうか。
 今回は画面上に表示されているステータスがPower Automate DesktopのOCR機能で読み取ることができるか実験してみました。ちなみにUltimate Fishing Simulatorでは、右下に表示されている距離の左が自分の位置からの距離、右が水深となっています。

 拡大するとこのようになります。プロポーショナルフォントであることと、数値が表示されている部分も背景が透けて見えている点がなんとなく読み取りにくそうです。

 やってみたらできました。水深が表示されている部分だけを座標指定して読み取らせていますが、小数点や単位のメートルも識別しています。想像よりも精度が高い印象です。


 ポイントとしては以下になります。結構すごいことが簡単にできてしまう、そんな印象です。
  • このゲームは、解像度に合わせて画面上の表示領域も解像度に合わせて変化します。そのため解像度を落とすと文字の解像度も落ちるため、解像度を下げすぎると全く読み取れなくなります。1280x1024は読み取ることができましたが、800x600は読み取ることができませんでした。800x600だと人間が見ても読みづらいですけどね。そこそこ解像度が必要です。
  • 背景が透けて見える仕様もやっかいです。背景の明るさは影響を受けないようで、昼間の空やボートの白い部分でも問題ありませんが、植物や水面のような濃淡さ混じっている背景だとうまく読み取れませんでした。
  • 画質、アンチエイリアスは影響がないようでした。








2021年5月5日水曜日

Power Automate Desktopのデバッグモード向け高速化手法

この記事を書き上げて公開する前に、1フローの実行時間を設定するメニューがあることが判明。無意味な記事となりました。Power Automateで釣りができるまでずいぶんチューニングしたのですが意味なかったです。でも、結構時間かけて書きましたのでいちを残しておきます。

-------------------------------------------
 みなさん、Power Automate Desktop使ってますか?先日PADで「Ultimate Fishing Simulator」のRPAをやってみましたが、PADでゲームのRPAをする場合に気を付けたいことをまとめておきたいと思います。端的にはデバッグモード向けの高速化手法です。なんでデバッグモードなの?って話ですが「映え」です。このサイバー感のあるデバッグモードを使わない手はないです。そもそもなんですが、ゲームを遊ぶためではなく自動化の実験をするために買ってますので。。。えっ?

全ての命令の実行に時間がかかる

 当たり前と言えば当たり前ですが、デバッグモードの場合は気になるレベルで時間がかかります。リアルタイムに何かをするフローのデバッグには使えないレベルですが、でも使います。どのぐらいかかるかというとループや判定でも1行につき0.1秒程度かかるようです。いくつかパターンを変えて測定してみたところ、0.12秒~0.14秒/命令となりました。マシンスペックは関係なく、このぐらいのスピードで実行されるよう調整されていると考えています。PADにはオプション等見当たりませんが、レジストリ変更でもいいので調整できるといいんですけどね。
 例として以下を見てください。このループ処理に何秒かかると思いますか?100秒ちょいであってほしいですが136秒かかります。3行の命令がありそれぞれ100回実行されるため、300行処理されますが、その300行の処理に36秒かかるということです。


 次に以下の処理は何秒かかるでしょうか?Loop行とEnd行が20回、Wait行が5×20回となり、140行処理されることになります。ロジック上やっていることは同じですが、実行される行数が半分になりました。結果実行に要する時間は118秒でした。

 ちなみにデバッグモードでなければ、どちらも103秒と普通のスピードで実行されます。

 判定文についても触れておきたいと思います。次の処理にはどれぐらい時間がかかるでしょうか?4行の命令が100回繰り返されるのでだいたいわかりますよね。実測では45秒でした。判定が真となる場合はElse行は処理されないのがポイントです。
 では、先頭行のflagを0以外の値にするとどうなるでしょうか?この場合、Else行が実行されるようになるため5行×100回処理され、実測では56秒でした。

 ポイントとしては、こだわる場所のループ回数は減らす、判定は真となる場合多くなるようにする、となります。

サブフローは使いどころに注意

 もう一度登場します基本形、この処理には136秒かかりました。


 では、1秒のウェイトをサブフロー先に移動させるとどうなるでしょうか?275秒となりました。サブフローの呼び出し1回で1秒以上かかることになります。画面を見ているとサブフローに処理が移る時にタブの切り替え操作的な動きをしているのと、見ていて単純に遅いです。今回のケースでは、ループの中からサブフローを呼び出すのではなく、サブフローの先でループさせると相当早くなりますね。

時間調整は「Wait」ではなく「キーの送信」

 遅延カテゴリにあるWaitは、秒単位でしか待ち時間を指定できません。ですが、1/10秒単位ぐらいで待ち合わせを挟みたいことってありますよね。そんなときはマウスとキーボードカテゴリにある、キーの送信を使います。パラメタに「キー入力の間隔の遅延」と分かりにくい説明ですが、1文字(1キー)入力後の待ち時間をミリ秒単位で指定できるようになっており、Waitよりも細かく調整できます。1文字入力するたびに指定した時間待ち合わせをしますので、n文字入力する場合は指定した遅延時間がn倍になります。「間隔」とありますが1文字の場合でも有効です。ゲームの実行に影響のない特殊キーを選ぶと良いと思います。



2021年5月4日火曜日

Ultimate Fishing Simulator 序盤の楽チン経験値稼ぎ

  序盤に経験値を高効率で稼ぐの方法を紹介します。「ベティー湖・冬」や「バイカル湖・冬」で釣りまくる方法になります。プレイしていると凄いペースで釣り上げている人に出くわしたことありませんか?チャットウィンドウがそのアカウントで埋まってる状態になっていますよね。たぶん同じことやってます。

 ザックリ方法としては、氷上釣りで水面スレスレに餌を配置し、ヒットした瞬間に釣り上げることでバトル無しで一瞬に釣り上げます。初期装備でも最大級の魚を釣り上げることができる裏技です。必須ではありませんがハンター視点が使えると良いです。

装備:

初期装備で十分です。ロッドとラインはヒット後のバトルがないのでなんでもいいです。ここが装備のポイントですね。針はレベル4で購入できる#6/0~#8/0がお勧めです。このゲームは針の大きさに合わせて釣れるサイズが変化するので、そこそこ合うサイズを選ぶ必要があります。釣り針が大きすぎると警告が出るのと、水中視点で目の前に魚がいるのに釣れない場合は小さくすれば釣れます。餌は切り身餌(大)×2がお勧めですが、条件がレベル6であることと、価格が1つ7$のため、無理なら切り身餌(小)×2でも釣れます。ただし小だと同じ針でも釣れる魚が小さくなるようです。

釣る場所:

「ベティー湖・冬」と「バイカル湖・冬」のどちらかです。同じ方法でどちらでも大物が釣れます。「モレーン湖・冬」でもいけるかもしれませんが、DLC購入しておらず未確認です。まずはハンター視点で大物が集まっている場所を探します。そんなにシビアになる必要はないです。近くまで移動したら穴を開けて釣りを始めます。まだハンター視点が使えない場合は適当に穴開けてみるしかないです。

釣り方:

1mだけ糸を出します。ヒットした瞬間に釣り上げる必要があるのでそれ以上落とす必要はありません。水中視点に切り替え食らいつくのを待ちます。ヒットした瞬間に左クリックすれば一瞬で釣り上げることができます。穴を開ける場所が重要、というかそれだけです。ベティー湖では20Kgのニジマス、バイカル湖では40Kgのバイカルチョウザメが初期装備で釣れます。タイミング良くクリックできなかったときは、[Q]でキャンセルしましょう。釣り針の大きさ警告が出る場合は、釣り針を小さくするか場所を変えます。目の前に魚がいるのに釣れない場合は釣り針のサイズを小さくしてみてください。

初期装備で40Kgのバイカルチョウザメが釣れてしまいます・・・



2021年5月3日月曜日

ゲーム映像を録画する3つの方法

GEFORCE EXPERIENCE 

GEFORCEをご利用であれば、これを使用しない手はありません。GEFORCE EXPERIENCE(スタートメニューには、NVIDIA Corporationの配下にあります)を常駐させておくことで、デスクトップ全体のキャプチャ映像を取ることができます。この方法の最大の特徴はCPUを消費しないことです。GPUのみで処理しているようでGPUだけ使用率が上昇します。また、次に紹介するXbox Game Barの場合、ウィンドウのみのキャプチャとなるため、複数のウィンドウを同時に記録したい場合は、GEFORCE EXPERIENCEの録画機能一択です。


Xbox Game Bar

ウィンドウの録画ができればよいということであればXbox game Barがおすすめです。調べてみたところ、この方法でもGPUのみ使用率が上昇しました。ビデオカードの機能を利用して録画しているようです。


PowerPoint

リボンの、挿入→メディア→画面録画によって、PC画面の録画ができます。この機能の最大の特徴は、PC画面上の録画する範囲を自由に設定できることです。逆にデスクトップ全体、特定ウィンドウのみといった指定はできません。GEFORCE EXPERIENCEは当然ながら、Xbox Game Barもビデオカードの状況によっては機能しないことがありますが、この機能はハードウェアの制約がありませんのでどのような環境でも利用できると思います。リソースの使用状況を確認したところでも、CPU使用率のみ上昇いますのでGPUへの依存はないようです。アプリの操作方法の説明用動画を説明スライドに張り付けるような利用方法を想定してると思われるためしかたない部分化とは思いますが、画質はかなり低めとなっています。



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点指定するオプションがありますので、ゲームの状況を判別できる程度に暗く設定しておくと、時間帯に関係なく夜っぽくなりボタンの色の濃さが安定するので、色判定が安定します。
とまあこんなことを考えてやっているといろいろノウハウが身について面白いですよって話です。


2021年5月1日土曜日

Power Automate Desktopに釣りさせてみた

 UWSCで実現した自動の釣りを Power Automate Desktop (以降PAD)に移植してみました。ロジックは出来上がっているので簡単かと思いきや結構大変でした。まずは動画をご覧になってください。1匹釣り上げるのを見届けて頂けましたら十分です。


 コンセプトが全く違うものを比較するのはナンセンス、と分かっていても注目度抜群のPADですのでなんかすごいことになるのではと思いましたが、もう一声という感じでした。UWSCが凄すぎるだけなんですけどね。そんなことしようとする人はいないと思いますが、ゲームを自動化する場合に注意したい点をまとめましたのでご参考まで。

デバッグモードのパフォーマンス

 デバッグモードで動かさないと何で処理しているのかさっぱりわからなくなるため、今回はデバッグモードで動くことを条件としてロジックを組みました。デバッグモードで実行した場合、通常実行モードの1/100程度のスピードとなりますがそれがまた大変な制約でした。ステップ全てが目視でチェックできるようにしてあるからだとは思いますが、タイミングを調整するにはこのうえなくやりにくい状態です。今回はデバックモードでも継続して釣りができるように調整したため、早め早めのライン出しとなっているため1匹釣り上げるのに凄く時間がかかっています。画面を見ていると、処理以外の制御文も同じように時間がかかるようです。例えば、次の処理はどちらが時間がかかると思いますか?

if TRUE then
    NOP
else
    NOP
endif

if FALSE then
    NOP
else
    NOP
endif

同じであってほしいですが、FALSEの時のほうが時間がかかります。そう、「else」行を処理する分だけ時間がかかるのです。例えば危険回避とかの少しでも早く始めたい処理を真側で処理するようロジックを組んだほうがいいです。今回の例ではテンションのチェックになりますね。デバッグモードでなければ測定できるレベルでの差ではないようです。そもそも何にこだわっているのか?って話ですけどね。

色判定

 表現が難しいですが、PADはよくあるウィンドウアプリの制御を想定しています。ボタンやリスト等のコントロールで構成されるアプリケーションは制御が簡単です。コントロールの状態を判定することもできます。ゲームにはそういったコントロールパーツが存在しないため、特に状態をチェックする方法は画像判定に頼るしかありません。ですが、最近のゲームはメニューやステータスの背景もなんとなく透けてる状態なので画像判定が難しくなっています。そのため、特定座標の色の濃さ等で判定するしかなく今回もそのようにしています。一番の問題は、PADには座標の色をチェックする機能がありません。RPAで効率よくしたいと思っている人に必要ないんですけどね。PADは、Java,PowerShell,Python,VBScriptと思いつく限りの外部プログラムを呼び出せますので、今回はPowerShellで実現しています。引数を渡せないので必要な個所別にそれぞれ別のスクリプトになっています。

レスポンスと品質

 通常の文字列をコピー&ペーストするように制御文をコピーすることができますが、レスポンスが非常に悪く、思った場所にペーストするのがたいへんです。常に1テンポ遅れて反映される感じです。PADはローカルに情報を保持せず全てクラウド側に保存されるため、もしかすると1操作毎にOneDriveに一時ファイルを保存しているのかもしれません。作業中、不定期にエラーで編集画面が停止してしまうのはまいりました。

Ultimate Fishing Simulator の紹介


「Ultimate Fishing Simulator」とはジャンルではなくゲームの名前です。Steamで1980円で売っている釣りゲームです。新しい釣場をダウンロードコンテンツとして購入できるものの、最初から盛り込まれている8地域10種類の釣り場で釣りを楽しむことができます。浮き、ルアー、毛ばり、トローリングに加え、珍しい氷上釣りも楽しめます。

 肩を並べるぐらいメジャーなFishing Planetは無料でプレイできるかわりに装備の耐久度維持、釣り場への移動、釣ること自体にもお金が必要で、常に金策を考えなければなら事を考えると、こちらはほんとに思う存分釣ること自体を楽しむことができます。


 この「Ultimate Fishing Simulator」はとにかく釣る楽しさを味合わせてくれるゲームで、プロファイル作成時にゲーム難易度を選ぶことができます。「通常」と「現実」の2種類で、通常を選ぶと簡単に釣れるようになるだけでなく、ハンター視点と呼ぶ機能で水中の魚の様子を見ることができます。水上からリアルな魚群探知機で魚を探せるので魚がたくさんいる場所で釣る、といったことが可能です。水中視点という針の目の前の視点もあり、魚が食いつく瞬間を目の当たりにすることもできます。 さらにサンドボックスと呼ぶ自由に何でもできるモードもあり、お金や経験値に関係なく好きなだけ釣りまくることができるようになっています。

通常の視点。よくある釣りゲームと同じ。


水中視点。地上からの視点と水中からの視点をいつでも切り替えることができる。下の画像は、針に食いつく瞬間の画像。ちなみに餌は赤虫2匹がけ。

少し進めてレベルを上げることで使えるようになるハンター視点。画面が暗くなり魚が光って見えます。これによりどのあたりに魚がいるのかよくわかります。

同じ場所(ベティー湖)での氷上釣り。穴を開けて糸を垂らすだけです。ルアーでもベイトでも釣ることができます。結構小さい穴で釣っているように見えますが、20Kgのニジマスが釣れます。

オンラインゲームではありませんが、各釣り場毎にランキングが集計されておりいつでも確認することができます。月初リセットと書いてあるだけなので、ランキングが掲示されるだけだと思います。初めてランキングに入ったので来月になればわかるでしょう。

こちらはピナス湾での海釣り。浮き釣り、ルアー釣りのほか、トローリングもできます。ここでは900Kgのカジキが釣れます。釣ったことないけど。波の感じがたまんないです。

このゲームのもう一つの特徴が、釣り場を作れることです。地面を盛り上げて土地を作り、水をはって樹木、岩、丸太、桟橋、桟橋、建物を配置してオリジナルの釣り場を作ることができます。最後に好きな魚を好きな数だけ放流したら釣り場の出来上がり。実際にその場所で釣ることができます。桟橋だけ、赤い水に緑の空とセンスのかけらも感じられない釣り場となっていますが、画面はこんな感じになります。セーブデータのシェアもできるようなので、面白い釣場ができたら共有するといいかもです。。。。。しないか。