【ポケモンSV】色/指定個体値 孵化厳選自動化
AutoHatching_pkmnSV
色違い/指定個体値のポケモンを取得するまでの、タマゴ30個取得~孵化~ボックスチェックを自動化します。指定数の色違い取得で終了します。
孵化に要する歩数にもよりますが、大体40分~50分で1ボックスくらいの効率です。
私の端末の調子が悪いのかソフトの性質なのか不明ですが、Switchの操作がうまく受け付けられれず、たまに意図しない結果になることがあります。
自己責任でご利用ください。
ツールはPoke-Controller-Modifiedを使用しており、導入済みの方向けの記事となります。ツールの導入に関するお問い合わせはご遠慮ください。
また、検証環境が1台しかなく、自分が使う設定(ダウンロード時のパラメータ)でしか検証ができていません。v3以降はロジックの大幅変更を行っていることもあり、違うパラメータの場合の検証が不十分なため、不具合と思われる挙動があればご報告いただけると幸いです。
改修履歴
12/24 v1.0リリース
12/27 v1.1リリース
- ボックス操作部分改修、試行運用中
(連続522個孵化・色違いによる停止まで確認)
- チェック条件に任意ステータスを追加
設定方法参照:https://note.com/mikan_tabetaine/n/ndcdf1eac24b0
12/28 v1.2リリース
- 色違いチェック処理を画像識別&失敗したらリトライするよう変更
12/31 v2.0リリース
- ロジックを見直して、色違いを複数取得できるよう変更
取得対象は3パターン 色/色&指定個体値/色&色時のみ指定個体値
レポートを書く処理が入るのでご注意ください
1/2 v2.1リリース
- 二値化条件に、BGR値を使用するように変更
(ボックス操作時、背景によるご認識防止のため)
1/3 v2.2リリース
- 親ポケモン3組まで対応
- 逃がす処理のバグ修正、孵化後手持ち交換時の色違いチェックバグ修正
- ボックス操作のBGR値調整(環境差異吸収のため)
- サンドイッチ作成挙動の繰り返し上限追加
1/4 v2.3リリース
- v2.0~2.2にあった、色違い数1の時に逃がす処理に遷移してしまうパターンがあるバグの修正
1/5 v3.0リリース
- ボックスを閉じる際に無限ループに入りやすかったため終了条件を変更
- 汎用的なメソッドを別ファイル化
1/10 v3.1リリース
- ピクニック開始後に料理を開始できない事例があったため、開始できない場合のリトライ処理追加
- ボックス操作の閾値変更
- その他メソッドを別ファイル化したことで発生したバグの修正
1/11 v3.2リリース
- ご連絡頂いたトラブル対応実施、誤字修正
- 空飛べない無限ループ/マップアイコン認識失敗/孵化数ずれ/白っぽいテーブルクロスでサンドイッチが作れない
1/14 util系更新
- 画像認識コマンド名の英語が間違っていたので修正
誤)isContainTemplatPositionBGR
正)isContainTemplatePositionBGR
1/15 v3.4リリース
- 指定個体値を検出できないバグを修正
1/18 v3.5リリース
- 色違いカウント数のバグを修正
最新情報はTwitterで更新しています。
プログラム全体の解説(12/31変更)
開始前の準備をする(人の作業)
スーパーピーナッツバターサンドの材料を複数組購入しておく
メニュー選択の時に、スーパーピーナッツバターサンドが左列にある状態にしておくこと(レジピ全開放の状態だと左にあります)
右列にある場合はメニューを開いた際に右移動のコマンドを入れてください
手持ちは下記のどちらかにする
孵化要員1匹のみ ※こちらを推奨
孵化要員1匹+タマゴ
※タマゴがある状態だとタマゴ取得をスキップ
何かしらで操作が止まった等で残タマゴがある時の使用を想定
「きじゅん」ボックスに親を1組以上置いておく
ゼロゲートでレポートを書いておく
何もしていない状態でプログラムをスタートする
タマゴ取得
ゼロゲートに移動~ピクニック~料理~バスケット確認を実施
変数で指定した回数分タマゴ取得をしたら終了
最大30個取得
※画像認識のタイミングが合わず、たまに実際の取得数が指定数より少ない場合がありますサンドイッチづくりに失敗時(タマゴパワーlv2以外)、バスケットへの移動失敗時(メッセージウィンドウが表示されない)はリセットしてやり直します
タマゴ孵化
タマゴ孵化→手持ち入れ替え→タマゴ孵化→……を繰り返し実施
ボックス内にタマゴがなくなれば終了する
色違いチェック(個体値指定がある場合は個体値も)
ボックス内の色違い/指定個体値の確認を実施
色違い/指定個体値がいない場合、ソフトを終了してタマゴ取得から繰り返す※サンドイッチ節約と意図しない挙動時のやり直しのため
色違いが見つかった場合、指定の色違い数であれば処理をストップ
未満の場合、ポケモンを右横ボックスに移動しレポート・処理を継続するプログラム内のモード設定によってチェック内容が異なる
1=色違いのみチェック(色違いがなければリセット)
2=指定個体値もチェック(色違いor指定個体値がなければリセット)
3=色違いが見つかったときのみ指定個体値もチェック(色違いがなければリセット)
無限ループについて
たまに、ボックス操作に失敗⇒終了条件が満たせず無限ループ等、意図しない挙動がたまに発生します。
各所で失敗したらリトライするよう処理を入れてますが、大体300~500個孵化して1回程度です。画像マッチングがおかしくなる時もあるので、うまくいかない場合はプログラムをReloadしてやり直してください。
実行時にしておく準備/設定
使用ツール
Poke-Controller-Modified
※LINE通知をする設定になっています。不要であればAutoHatching_pkmnSV.py等のファイル内のLINE通知呼出コマンド(self.LINE_image)を削除ください。
ソフト設定
ニックネーム設定 OFF
オートセーブ OFF
ソフト内で用意しておくもの
スタート位置 ゼロゲート
サンドイッチ材料 スーパーピーナッツバターサンド複数個分
手持ち 孵化要員1匹のみ(特性ほのおのからだ等)
ボックス配置
「きじゅん」ボックス(下記画像参照)
親ポケモンを置くボックス
背景はデフォルトのもの以外は未検証
ボックス内に親ポケモンを配置
「たまご」
「きじゅん」の右横ボックス
背景はデフォルトのもの以外は未検証
タマゴを置くボックスなのでポケモンを置かないこと
※タマゴ孵化から開始する場合はタマゴを置く
色/指定個体値のポケモン保持用ボックス
「たまご」の右横ボックスで、名称は任意
背景はデフォルトのもの以外は未検証
タマゴがある状態から開始する場合
孵化だけしたいタマゴがある場合のおまけ機能です。
途中で処理が止まってしまったりしたときに、途中から再開するために作成しています。
手持ちを孵化要員1匹(特性ほのおのからだ等)+タマゴにするとタマゴ取得処理をスキップできます。
孵化したいタマゴをボックス内の左上から詰めておいておくとそのボックス内のタマゴを自動で孵化します。その際ボックスを開いたときにタマゴがある状態にしてください。
また、1ボックス分処理した後にソフトを再起動して延々と同じ作業を繰り返してしまうので、タマゴがある状態でレポートをしている場合は孵化が終わったら手動で止めてください。
プログラムの導入手順
下記URL先にて配布しているファイルをダウンロードして配置ください。
使用する端末によって上手く動かない場合があるので、うまくいかない場合は待機時間や閾値の調整、キャプチャの再取得等を実施下さい。
interruputが発生する場合は、画像パスが不正と思われるので、黒いウィンドウのメッセージを参考に画像があるかどうか確認ください。
AutoHatching_pkmnSVで使用するファイルの配置位置詳細
PythonCommandBaseTrim.py
Poke-Controller-Modified\SerialController\Commands 配下
AutoHatching_pkmnSV.py
SV_util.py
SV_util_box.py
SV_util_picnic.py
Poke-Controller-Modified\SerialController\Commands\PythonCommands\ImageProcessingOnly 配下
SV_AutoHatchingフォルダ
SV_Utilフォルダ
Poke-Controller-Modified\SerialController\Template 配下
おまけ:ボックス操作・キャンプ/料理操作などのコマンド化
本プログラム以外でも使用できそうな部分を別ファイルにしました。
詳細は別記事に書いています。
おまけ:画像認識機能の拡張
画像認識機能の拡張ファイルを同梱しています。
詳細は別記事に移行しました。
上手く動かない事例についてのQ&A
謝辞
Poke-Controller-Modified
https://github.com/Moi-poke/Poke-Controller-Modified
大変便利なツールを開発いただきありがとうございます。
デバッグにご協力頂いた方
sorasen様 (Twitter:@sorasen9)
ご指摘・バグ報告等ありがとうございます。大変お世話になっております。
その他
本プログラムは個人の趣味で作成しているものです。
ツールやデバイスの導入支援は行っておりません。多くの紹介記事等がすでに存在しているので、そちらをご参照下さい。
自己責任で実施ください。
データの破損等が発生した等があった場合でも責任は負いかねます。Pythonのコーディングルール等についてきちんと勉強をしたことがないためなんとなく雰囲気で行ってます。不適切なコーディングをしている部分があるかもしれませんがご容赦ください。
再利用・処理の流れを組み替えることを想定して機能単位でメソッド化しています。そのうちファイルを分けるもしれません。v3.0以降別ファイル化しました。