ポケモンZA 準伝説色違い厳選の半自動化【Poke-Controller-Modified-Extension】
公開日: 2026-05-15
ポケモンZAの準伝説は、出現場所まで移動して色違いかどうかを確認する作業を何度も繰り返す必要があります。手動で続けるにはかなり重い作業だったので、Poke-Controller-Modified-Extension向けに、準伝説5匹の厳選を補助するスクリプトを作りました。
この記事では、LegendaryShiny.py の配置方法、対象ポケモンごとの準備位置、設定項目、実際にスクリプトが行っている処理をまとめます。
前提条件
Poke-Controller-Modified-ExtensionのGitHubリポジトリ を導入済みで、キャプチャボードとシリアルコントローラーが動作する環境を前提とします。
また、このスクリプトでは画面認識を使います。キャプチャ解像度や色味が大きく違う環境では、テンプレート画像や色判定のしきい値を調整する必要があります。
自動化の範囲
このスクリプトは、色違いの出現や捕獲までを保証するものではありません。停止条件に到達したら、最後はゲーム画面を見て手動で確認してください。
コード
コードは Garookie/codes リポジトリに置いています。
LegendaryShiny.py だけでなく、PokemonZA/za_utils.py、PokemonZA/Template/、PokemonZA/LegendaryShiny/Template/ 配下のテンプレートも同じ構成で配置してください。特にカロリー読み取りでは数字テンプレートを使うため、テンプレートが不足していると停止判定ができません。
配置先は、Poke-Controller-Modified-Extension の SerialController/Commands/PythonCommands/ 配下です。迷う場合は、PokemonZA ディレクトリを丸ごとコピーするのが分かりやすいです。
Poke-Controller-Modified-Extension-master/
SerialController/
Commands/
PythonCommands/
PokemonZA/
za_utils.py
Template/
digits/
LegendaryShiny/
LegendaryShiny.py
Template/
unknown.png対応ポケモン
このスクリプトでは、以下の5匹を対象にしています。
| ポケモン | 厳選方式 | 停止条件 |
|---|---|---|
| ラティオス | 画面の色判定 | 色違い候補色を検出 |
| ラティアス | 残りカロリー確認 | 設定カロリー以下 |
| ビリジオン | 残りカロリー確認 | 設定カロリー以下 |
| コバルオン | 残りカロリー確認 | 設定カロリー以下 |
| テラキオン | 残りカロリー確認 + A操作 | 設定カロリー以下 |
ラティオスだけは、出現後の本体色をHSVで判定し、色違い候補を検出したところで停止します。その他の4匹は、異次元ミアレの残りカロリーを読み取り、目標値以下になったところで停止する方式です。
ゲーム内の準備
スクリプト実行前に、対象ポケモンの厳選を開始できる位置まで移動しておきます。厳選場所は以下の画像の位置を使いました。
指定カロリーで停止するラティアス、ビリジオン、コバルオン、テラキオンでは、停止後に手動でシンボルを確認します。通常色だった場合は手動でソフトリセットし、同じ開始位置から再実行してください。
ラティオス

画像は通常のミアレで撮影していますが、異次元ミアレでは壁の位置にホロベータが出現します。
レポートを書くタイミング
ホロベータの上に乗り、ラティオスのシンボルを見る前にレポートを書いてください。
ホロベータ移動後に本体の青色と色違い候補の緑色を画面から判定します。
ラティアス

画像の位置でレポートを行います。奥方向へ進んでは戻る動きを繰り返し、ラティアスのシンボルをリセットします。指定カロリーに到達したら停止します。
オンバーンがいる場合
画像の奥方向にオンバーンがいる場合は、移動中に攻撃されて気絶してしまうため、自動化できません。オンバーンがいない状態を厳選してから開始してください。
ビリジオン

異次元ミアレに入ってすぐ右へ進むと、画像の位置に着きます。この場所でレポートを書いてから開始してください。
画像の奥方向へ進んでは戻る動きを繰り返し、シンボルをリセットします。指定カロリーに到達したら停止します。
コバルオン

画像の位置で橋の方を向き、レポートを書いてから開始してください。
画像の木箱から左方向にある橋へ向かって行き来し、シンボルをリセットします。指定カロリーに到達したら停止します。
テラキオン

画像の位置でホロベータに乗り、レポートを書いてから開始してください。
奥へ少し進んでシンボルを出現させてから、ホロベータでシンボルをリセットします。指定カロリーに到達したら停止します。
設定項目
起動時のダイアログで、対象ポケモンや停止条件を設定します。
| 項目 | 説明 | デフォルト |
|---|---|---|
| 対象ポケモン | ラティオス、ラティアス、ビリジオン、コバルオン、テラキオンから選択 | ラティオス |
| 停止カロリー | カロリー厳選で停止する残りカロリー | 1000 |
| Discord通知 | 条件達成時にDiscordへ通知する | OFF |
| 終了時にSwitchをスリープ | 条件達成後にSwitchをスリープする | ON |
| 周回数 | 継続時の周回数カウント | 0 |
停止カロリーは 1000、1500、2000 から選択できます。ラティオスでは色判定を使うため、停止カロリーの設定は使いません。
設定は LegendaryShinySetting.json に保存されます。途中で止めて再開する場合は、周回数を引き継いだ状態で続けられます。
スクリプトの動き
ラティオスの色判定
ラティオスは、画面内の指定範囲から青系と緑系のピクセルを抽出して判定します。
通常色の青が十分に多い場合は通常色と判断してソフトリセットします。緑系の比率が一定以上になった場合は、色違い候補として停止します。
色違い判定について
ラティオスの判定は、画面上の色をもとにした検出です。キャプチャ環境や画面の明るさによって誤検出・見逃しが起きる可能性があります。
それ以外の厳選
ラティアス、ビリジオン、コバルオン、テラキオンは、画面左上の残りカロリーをOCR的に読み取ります。読み取った値が設定カロリー以下になったら停止し、Discord通知が有効なら結果を送信します。
カロリー読み取りでは、単純な1回判定ではなく、桁数不足や不自然な急落を疑うガードを入れています。例えば、直前の信頼できる値から急に大きく下がった場合や、低カロリーなのに認識桁数が少なすぎる場合は停止せずに移動を継続します。
移動時間の設定
ラティオス以外の厳選では、対象ごとに往復移動の時間を固定しています。開始位置や向きがずれるとシンボルのリセットがされないため、ゲーム内の準備で示した位置から開始してください。もしくは、シンボルがリセットされているか確認しながら移動時間を変更してみてください。
| ポケモン | 移動時間 |
|---|---|
| ラティアス | 4.1秒 + 4.0秒 |
| ビリジオン | 5.0秒 + 5.3秒 |
| コバルオン | 4.5秒 + 4.5秒 |
| テラキオン | 0.5秒ずつ |
未検証事項・注意点
- キャプチャボード、解像度、明るさが変わると、色判定やテンプレート認識の結果も変わる可能性があります。
- ラティオスの色判定は、緑系の候補色を検出して停止する補助機能です。停止後は、必ずゲーム画面で色違いか確認してください。
- カロリー読み取りが安定しない場合は、
PokemonZA/Template/digits/の数字テンプレートを自分の環境に合わせて差し替える必要があります。 - 開始位置や向きがずれると、シンボルのリセットやホロベータ操作が失敗することがあります。長時間動かす前に、数周だけ試して動きを確認してください。
まとめ
LegendaryShiny.py では、ラティオスは色判定、残り4匹はカロリー読み取りを使って、準伝説の色違い厳選を補助しています。
完全放置で必ず成功するタイプのスクリプトではありませんが、厳選場所に着いてからの単調な移動やリセット作業をかなり減らせます。まずは短時間だけ動かして、開始位置と画面認識が安定しているか確認してから長時間運用するのがおすすめです。