見出し画像

【Poke-Controller】フィールド色違い探し自動化(テンプレートマッチング未使用版)【レジェンズアルセウス】

色違いヒスイポケモンをゲットしたい!
でも前に公開したプログラムは、interruptで動かない!
そこで前に作ったプログラムを少し修正しました。
画像のテンプレートマッチングを使わない、レジェンズアルセウスのフィールド色違い探し自動化プログラムです。
ダウンロードリンクはこちらです。

2023/05/28追記:
色検知が上手く動かない場合の対策を、「上手く動かないときは」に追記しました

何が出来るの?

フィールドを周回して色違いを探します。
紅蓮の湿地」版と「純白の凍土」版の2種類があります。
捕獲は手動です!逃げられないように注意してください!


注意事項

  • Poke-Controllerの環境設定が必要です。
    pyaudioというライブラリをインストールする必要があります)


事前準備

Poke-Controllerの環境設定(pyaudioのインストール)

過去の記事を参考にしてください。
環境の違いが原因で、記載のやり方ではできないかもしれません)

プログラムの格納

1. ダウンロードしたファイルを配置する
リンクに2つのプログラムがあります。
(1) ArceusFieldShinyNoTemplate_Junpaku.py
(2) ArceusFieldShinyNoTemplate_Guren.py
これらを下記フォルダに格納してください
パス:Poke-Controller-master\SerialController\Commands\PythonCommands

配置のイメージ
(1)は純白の凍土用、(2)は紅蓮の湿地用、のプログラムです


レジェンズアルセウスの設定

(1)オプション設定が下記の状態であることを確認してください
 ・「話の速さ」「速い」にする
 ・「カメラ感度」「2」にする
 ・「おまかせレポート」を「使わない」にする
 ・「BGM」「鳴き声」「0」にする

話の速さ:速い、カメラ感度:2、おまかせレポート:使わない、BGM:0、鳴き声:0

(2)捕獲したいエリアに移動する
純白の凍土」の場合は「氷山ベース」へ移動する

「氷山ベース」(2つ目のベースキャンプ)なので注意!

紅蓮の湿地」の場合は「湿地ベース」へ移動する

「湿地ベース」(1つ目のベースキャンプ)です

(3)レポートを書く
※自動化中にリセットをすることがあります。上記の画像の状態で再開する必要があるため、必ずレポートを書いてください。


動作の流れ

ベースキャンプに移動してレポートを書いたらプログラムを実行します。

・「純白の凍土」の場合
ウォーグルに乗って、下記2通りのルートを自動で移動します

自動で移動する2通りのルート

・「紅蓮の湿地」の場合
ウォーグルに乗って、下記のルートを自動で移動します

自動で移動するルート

色違いが見つからなかった場合は、キャンプに戻る→村に戻る→純白の凍土に移動して、また先ほどの移動を繰り返します。
色違いが見つかった場合は、CAPTUREボタンを長押しして動画を撮影した後、HOMEボタンを押してプログラムを終了します。

プログラムが終了したら、撮影された動画を確認してください。
動画を見れば、色違いがどこに発生したのか分かります。
※動画に映っていない場所で色違いが発生することもあります!
(純白の凍土の場合、地下の洞窟でゾロアの色違いが出てたりします)

捕獲する前に、まずはレポートを書きましょう。
(逃げられたらリセットして再チャレンジ!)
撮影された動画を参考に色違いのポケモンを探します。
見つからない場合は、キャンプに戻ってから同じ場所へ行くと良いかも。
(もう一度、色違い出現の演出を見ることができます)


上手く動かないときは

1.「純白の凍土」ではなく、「天冠の山麓」に移動している場合
「純白の凍土」版を利用する場合、「古の隠れ里」が選べないセーブデータではフィールドへの移動に失敗します。
対策としてはプログラムの修正が必要です。
203行目の「self.press(Hat.TOP,0.1, 0.7)」を削除してください。
(204行目の「self.press(Hat.TOP,0.1, 0.7)」は残したままで大丈夫です。)

2.色検知が上手く動かずプログラムがループしてしまう場合
キャプチャボードなど環境の違いが原因で色検知が出来ていないかも。
定義の範囲を広げることで、上手く動くようになるかもしれません。

具体的には、「self.XXX_lower」、「self.XXX_upper」の値を変更します。
XXXの部分は判定している箇所によって変わります)

例:「キャンプに戻る」の部分でループしてしまう場合
ここでは、「self.map_lower」、「self.map_upper」の値を変更します。

【変更前:3435行目】
self.map_lower = np.array([80,155,165])
self.map_upper = np.array([120,195,205])
【変更後:3435行目】
self.map_lower = np.array([65,140,150])
self.map_upper = np.array([135,210,220])

例として、下記のように修正してみました。
・self.map_lowerの3つの値を15ずつ下げる。
(80を65に、155を140に、165を150に修正)
・self.map_upperの3つの値を15ずつ上げる
(120を135に、195を210に、205を220に修正)

lowerを下げ、upperを上げるほど、色検知の精度が下がります。
これでループから抜け出しやすくなりますが、その分、誤検知しやすくなります。
適切な値の範囲は環境によって変えるため、上手くいかないときは値を10ずつくらい変更してみると良いかもしれません。

あとがき

今月もあまり時間が取れず・・・!リメイクでお茶を濁しました。
テンプレートマッチングを使わない版が他の人の環境でも動くのか、気になるところです。

自動化を推進してくださる方々、ありがとうございます。
このプログラムが何かの役に立てば嬉しいです。


ご意見はこちら

プログラムが無事に動いたこと、上手く動かなかったこと、
記事の内容でわかりにくいことなど、情報があれば参考にしたいです。
とはいえ、名前を出して発言するのは勇気がいるかもしれません。
そこで、匿名でも意見ができるよう、マシュマロを開放しました。

動作報告やプログラム/記事についてのご意見などを募集したいです。
記事やプログラムの分かりにくい場所を補足するなどの参考にします。
ただ、情報収集が目的のため、個別の返信は予定していません。
個別に返信が必要な場合はマシュマロではなく、記事のコメントやDMでご連絡ください。

この記事が気に入ったらサポートをしてみませんか?