【ポケモンSV】Arduinoを使ってタマゴ孵化自動プログラムを作ってみた

2025年もよろしくのマーシーです。

今更ながらSV環境で自動タマゴ孵化プログラムの

作成に着手したので設計メモがてら久方ぶりに

まままを更新しようと思います。


1.目的

2.背景

3.準備するもの

4.プログラムの概要

5.設計内容

 5.1 タマゴ孵化プログラム

 5.2 わざ遺伝プログラム

6. プログラムの成果

 6.1 タマゴ孵化プログラム

 6.2 わざ遺伝プログラム

7.まとめ

8. おまけ


1.目的

ポケモンSVにおいて,タマゴ自動孵化プログラムを作成する。


2.背景

ポケホームは最大6000匹のポケモンを保管できる。

ただし,第1世代〜第9世代(2025/01現在)までの

ポケモンを保管することでボックス容量を圧迫しつつある。

表2-1に保管ポケモン分類に示す。

実際自分が保管してきたポケモンの分類は以下のパターンである。


表2-1 保管ポケモン分類

No.概要運用Ex.
a図鑑用各地方のポケモン図鑑順で
並べておく
カントー地方の場合
フシギダネ〜ミュウの151匹
b希少ポケモン(e)の色違いポケモン含め
専用ボックスで保管する
伝説・幻,配信
cオシャボ(c)(d)含め専用ボックスで
保管する
ガンテツボールなど
d夢特性(c)(d)含め専用ボックスで
保管する
e色違いのポケモンポケモンGO産はSWSH,SVの
サブロムに保管する
f育成済み専用ボックスで保管する対戦/捕獲用ポケモン
gストックあまりボックスで保管する孵化あまりなど

ここで現状のボックスを圧迫している要因として

(a),(c),(d)の重複がある。

((a)図鑑用にストックしているが,

いつでも捕獲可能な難易度のポケモンが保管されている,など)

そこで(c),(d)の要素を含んだ(a)用のポケモンを育成することで

ボックス容量の削減を行う。

(要約)

夢オシャボフル遺伝♀の個体をひたすら作ってボックス空きを増やしたいな!!


そこで多忙な社会人のすきま時間を効率よく使うため,

SWSHと同様にSV版のタマゴ孵化自動プログラムを作成する。

(SWSHより各フローの詳細を細かく記載しているので若干長文となります。)



3.準備するもの

・H/W:NintendoSwitch本体
・S/W:ポケモンSV
 *メタモン(6V),孵化要員(ほのおのからだなど),まるいおまもりを
  揃えておくことを推奨
・Arduino環境(S/W,H/W)
 *詳細はこちら


4.プログラムの概要

・SVでタマゴ孵化を自動で行うプログラムを作成する。

・SVでものまねハーブを用いて遺伝技を自動で4つ埋めるプログラムを作成する。



5.設計内容

5.1 タマゴ孵化プログラム

5.1.1 設計指針

・30minに一度"フィスのコンポート"を食す。

・ピクニックにてタマゴを作成する。

 手持ちに5つ持てるようパラメータ処理を考慮する。

・ベイクタウンでタマゴ孵化を行う。

・手持ち,タマゴの配置・移動方法は5.1.5参照。


[設計メモ]

SV発売から半年後にタマゴ自動孵化プログラムの作成に試みた。
当時"フィスのコンポート"を堪能できるカラフシティを選定したが
左右スティックの視点誘導にて,目的座標にたどり着きづらい
ことから地形的に有利なベイクタウンに変更した(以下,詳細)。

5.1.2 前提条件

・図5.1.2-1に前提条件詳細を示す。

・手持ちはの”孵化要員”,"ポケモン♂","ポケモン♀"の3体とする。

*上記の通り,孵化要員を手持ちに常駐させるため,

 孵化要員は夢ファイヤー(ほのおのからだ)とする。

・プログラム開始時は”ボックス”をカーソル初期位置とする。

図5.1.2-1 前提条件詳細


・図5.1.2-2にマップ拡大図を示す。マップは拡大(ZRボタン2段階目)とする。

図5.1.2-2 マップ拡大図


・"フィスのコンポート"でタマゴ孵化パワーLv.2を使う。

・30minに一度"フィスのコンポート"を食す。



5.1.3 設計パラメータ

表5.1.3-1に設計パラメータを,表5.1.3-2に孵化歩数ごとのパラメータを

それぞれ示す。

表5.1.3-1 設計パラメータ

No.*1Parameter概要Default
1st_n_egg
タマゴ保持数
*孵化要員以外に手持ちにいれる
 タマゴの数
5(1〜5)
2st_n_rop孵化回数
*孵化ループの回数
 6で1Box分
6(1〜6)
3st_n_boxボックス数
*ボックスのシフト数
1(1〜n)
4st_run1走行1の秒数(*2)
5
st_run2走行2の回数28→32
6st_tim_eggタマゴ待機時間
*ピクニックにおける1タマゴ待機時間
(*2)
7st_n_dntタマゴ寄贈回数(*2)(*2)
8flg_afrタマゴ受取後段フラグ(*2)(*2)無効:0,有効:1
9;
10
11
12
13
14
15
16
17
18
19
20


(*1)★:変更パラメータ(孵化したいタマゴ数に応じて変更)

   ☆:変更パラメータ(ポケモンの孵化歩数ごとに変更)

(*2)表5.1.3-2参照。


表5.1.3-2 孵化歩数ごとのパラメータ

No.ポケモンタマゴ歩数
最大値
サイクル
st_run1st_tim
egg(*1)
st_n_dntflg_afr
1セビエ10280-10536400
2シャリタツ8995-9521300
3ジュラルドン7710-796630232030
4アルクジラ6425-668125152030
5ニャオハ5140-53962552030
61
7パモ3855-41111581322(*2)
8ワッカネズミ2570-28261001321
9コイキング1285-154151
10

(*1)親違いの対象ポケモン×メタモンの組み合わせ基準にて

  タマゴが1こできるまでの時間を目安とする。

(*2)螺旋通路昇降前にタマゴをボックス→手持ち移動させる場合


 [設計メモ]


初期準備時間(レストラン関数+そらをとぶ関数×2)を除いて,5140族で
1ループあたり410s (6m50s)かかる。



5.1.4 全体フロー

図5.1.4-1にプログラム全体フローを,

図5.1.4-2にベイクタウン役割マップをそれぞれ示す。

図5.1.4-1 プログラム全体フロー

図5.1.4-2 ベイクタウン役割マップ



5.1.5 ボックス操作1(タマゴ移動)

図5.1.5-1にタマゴ受取時のボックス構成を,

図5.1.5-2に周回時のボックス構成をそれぞれ示す。

SVにおいてはピクニックで受け取ったタマゴは

手持ちが空いている状態においてもボックスに預けられる。

SWSHにて検討したしようと同様に縦5このタマゴ移動を基本とする。

孵化後のタマゴは空きボックスに順次格納する。

図5.1.5-1 タマゴ受取時のボックス構成


図5.1.5-2 周回時のボックス構成



5.1.6 メインロードへの移動

図5.1.6-1にメインロードへの移動を示す。

メインロードへの移動は"レストラン食事"と"メイン孵化位置"への移動を兼用する。

先のカラフシティ試行では下記課題があり,レストランへの入店拒否を食らった。

・左右スティック操作による主人公の進行方向が安定しない

・通行人に接触し,方向が歪む


一方,ベイクタウンは”主人公を壁にぶつけ,垂直を得る”ことで

方向転換回数を擬似的に3→2回へ減らすことができる。

また,アクセスが困難な"タウン"であることからか過疎化が進み,

通行人もカラフシティほど多くなく,安定的なレストランアクセスが可能となった。

*5.1.7に検証動画あり

図5.1.6-1 メインロードへの移動



5.1.7 レストラン関数

図5.1.7-1にレストランへのアクセスを示す。

5.1.6項にてメインロードに出た後,レストラン前まで移動し,

レストランへと入る。

レストランへ入った後,”フィズのコンポート”を選択する。

約22sのDelayの後,レストラン街から空を飛ぶでポケセン前の初期位置へと戻る。



なお,レストラン関数は30minに一度の実施とする。

プログラム開始の初回時と,

タイマーによるカウントで30min経過時∧タマゴ生成時フロー突入前に

実施する。

図5.1.7-1 レストランへのアクセス


[設計メモ]

フィスのコンポートを食すのに約22s必要。
レストラン関数は空を飛ぶ関数×2を含め,約1m14s必要。




5.1.8 そらをとぶ関数

そらをとぶ関数は図5.1.2-2のマップ拡大図の縮尺にて,Lスティック操作を一瞬入れ

ポケセンへとカーソルを合わせる。

*5.1.9に検証動画あり

[設計メモ]

他そらをとぶ処理が必要なときはキー操作方向と強度を調整し実施する。




5.1.9 ピクニック関数

図5.1.9-1にピクニック開催場所を示す。

ポケセン移動後,ベイクタウン北側へと移動し,ピクニックを開催する。

ピクニック開催後はバスケットの前まで移動し,

タマゴ孵化時間分(st_tim_egg × st_n_egg),待機する。

待機後,タマゴを受け取りピクニックを終了する。

ことのき,経過時間を視認するため,st_tim_egg経過ごとに

主人公をBボタン×2で屈伸させる。屈伸回数は経過時間で増やす。

図5.1.9-1 ピクニック開催場所


このとき,タマゴ孵化パワーLv.2の恩恵によりタマゴ5つ分受け取れる

パラメータ設定が必要となる。

余分なタマゴを受け取った場合,アカデミーに寄贈する。

寄贈回数(st_n_dnt)もパラメータ設定とする。


[設計メモ]

st_tim_eggについて,上述の通りタマゴ5つを受け取れる最適なパラメータ設定が
必要であるが,何度かの思考からタマゴの生成数が安定しなかった。
そこでデフォルトでタマゴを寄贈する処理を入れた。
タマゴ受取時のキー操作は下記の通り
→最初にA×1
→ループごとにA×3 + ↑×2 + A×3を行う。
 *”↑×2”は不要だが,連続して入力されるAが設定どおりに入力されていることを
 確認するため,あえて入れている。
 *↑入力値したのは,↓入力するとカメラ起動を回避するため。
 *Lスティック入力も検討できるが,主人公が移動するため不使用とする。
タマゴ寄贈時のキー操作は下記の通り
→ループごとにA×1 + B×3 + A×2 + B×1を行う。
 *Aボタンの回数を奇数,Bボタンの回数を偶数とする。
 Aボタンの回数が奇数の場合,タマゴがない場合でもメッセージ抜け可能
 Bボタンの回数を偶数の場合,しゃがむ動作からの復帰可能
タマゴ受取は最大10こまで可能である。
1回に5個ずつ付加する前提であれば,最大10このタマゴを受け取り,
2周させる手段もある。
上記について検討したが,プログラム自体の全体フロー1サイクルに費やす時間が
長くなる(例として性格のみ遺伝させたい,遺伝個体値を上げたいなど)
ため,5こずつの孵化作業とする。



5.1.10 ボックス操作(タマゴボックス→手持ち移動)

図5.1.5-1に示した配置にタマゴが格納されているため,

ピクニック終了後,孵化要員以外の手持ちと入れ替える。

なお,タマゴ受取後段フラグ(flg_afr)が有効時は後の"走行1"開始直前で

手持ちにタマゴを所有する。


[設計メモ]

ピクニック終了後,タマゴを手持ちに入れた状態でそらをとび,
ベイクタウンのポケセン前(初期位置)に移動する。
この初期位置から再度メインロードを通り,ジム戦が行われる螺旋通路を
上り,走行1開始箇所まで走行する。
この間の歩数もタマゴ孵化歩数として必要であるが,
孵化歩数5140〜5394族にて,走行時間5sで事足りる結果である。
そのため,孵化歩数5140〜5394族以下の場合,メイン孵化位置到着前に
タマゴ孵化が開始され,動作が安定しない可能性がある。
よって,タマゴ受取後段フラグ(flg_afr)にて受取タイミングを変更する。




5.1.11 基本走行

図5.1.11-1に基本走行概要を,図5.1.11-2に各マップ具体図をそれぞれ示す。

初期位置(ポケセン前)からメインロード→螺旋通路→ジム戦位置まで移動する。

図5.1.11-1 基本走行概要

[設計メモ]

螺旋通路に行き着く前に通行に接触する場合もある。
走行パラメータについて,今後最適化が必要。
メインロードを往復させる案もあったが,SWSHと異なり,
”完璧な直進操作”の再現性がないため,通行人と接触するケースが多かった。
ベイクタウンはジム戦専用の螺旋塔が配置されているため,そこまで登らせてから
回転走行による孵化走行が最適と判断した。


図5.1.11-2 各マップ具体図



5.1.12 孵化走行1

図5.1.12-1に孵化走行1概要を示す。

指定時間(st_run1)だけ円柱の周りを走行させる。

孵化走行1は最初のタマゴ孵化が始まったら終了。

図5.1.12-1 走行1概要


↑分かり辛いが,最後にミライドンに再度ライドし,弱化動いた区間が"孵化走行1"


5.1.13 孵化走行2

孵化走行1にて,最初の卵が割れた後はコライドン/ミライドンにライドしたまま,

前後移動(Lスティック前後)+ Bボタン押下を一定回数(st_run2)繰り返す。


[設計メモ]

孵化走行2は孵化歩数の差異によるパラメータ設定は不要。
SWSHでは自転車に乗ったまま反対方向のスティク操作をすると楕円を描くが,
SVでは180度の直進切り返しが可能。




5.1.14 ボックス操作(タマゴ手持ち→ボックス移動)

図5.1.5-2の通り,タマゴ孵化終了後,手持ち→ボックスに移動させる。

その後,そらをとぶ関数で初期位置(ポケセン前)に移動する。

前回のレストラン入店から30min以上経っている場合,再度レストランに再訪させる。






5.2 わざ遺伝プログラム

5.2.1 設計指針

・SVからの仕様を活かし,"ものまねハーブ"を使い

 タマゴわざを遺伝する。

・図5.2.1-1にわざ参照画面を示す。

・1段階目に対象ポケモンの最上段以外の3つのわざを忘れさせる。

・2段階目にピクニックを開き,タマゴ技を3つ遺伝する。

・3段階目に対象ポケモンの最上段の1つのわざを忘れさせる。

・4段階目にピクニックを開き,タマゴ技を1つ遺伝する。

図5.2.1-1 わざ参照画面

[設計メモ]

上記作業が意外と手間なため,自動化する。


5.2.2 前提条件

・手持ちの上から2匹目に対象のポケモンを配置する。

・手持ちの上から3〜6匹目に遺伝技を覚えさせたポケモンを配置する。


5.2.3 設計パラメータ

表5.2.3-1に設計パラメータを示す。

表5.2.3-1 設計パラメータ

No.*1Parameter概要Default
1st_n_fgt忘却回数3(1〜3)
2st_tim_pcpピクニック時間10s〜20s
3
flg_snd第2ピクニックフラグ(*2)有効:1,無効:0
4
5


(*1)★:変更パラメータ忘れたい技の数に応じて変更)

(*2)ピクニック2回目を実施する際に有効とする。


5.2.4 全体フロー

図5.2.4-1にプログラム全体フローを示す。

検証動画は6.2に示す。

図5.2.4-1 プログラム全体フロー


6. プログラムの成果

6.1 タマゴ孵化プログラム

表6.1-1に種族ごとの1サイクル経過時間を示す。

表6.1-1 種族ごとの1サイクル経過時間

No.ポケモンタマゴ歩数
最大値
サイクル
①SV版の
1サイクル
あたり
[s](*1)
②SWSH版の
1サイクル
あたり
[s](*2)
差分③
=②-①
[s]
1セビエ10280-1053640未計測
457
(7m37s)
2シャリタツ8995-952130未計測
3ジュラルドン7710-796630
430s
(7m10s)
406
(6m46s)
24s
4アルクジラ6425-668125未計測
390
(6m30s)
5ニャオハ5140-539625
410s
(6m50s)
364s
(6m04s)
46s
6
15未計測
359s
(5m59s)
7パモ3855-411115
374s
(6m14s)
345s
(5m45s)
29s
8ワッカネズミ2570-282610
367s
(6m07s)
325s
(5m25s)
43s
9コイキング1285-15415未計測
10

(*1)初期準備時間(レストラン関数+空を飛ぶ関数×2)を除いた時間

(*2)Mark2改の実績値。


SVではSWSHより1サイクルあたりに必要な時間が多い。
タマゴの作られ方の差異が主要因と考える。
(SWSHでは歩数,SVはピクニック経過時間で待つ時間が長い)
上記の通り,1サイクルあたりの時間はSWSH < SVとなる。
ただし,ものまねハーブによるわざ遺伝の仕様追加により,
個体値厳選の開始(オシャボフル遺伝夢特性×6Vメタモンのかけ合わせ)
までにかかる総時間はSVのほうが少ないと感じる。
(個体値遺伝を除けば最小単位で性格/夢特性/オシャボの遺伝のみ必要)
(預け屋に預けなくていい,タマゴグループを気にしなくていい
 という2点がSVはすっっごい強いと思う)


[設計メモ]

SWSH版の記事の5章を参照。



6.2 わざ遺伝プログラム

以下にわざ遺伝プログラムの検証動画の切り抜きは以下の通り。

ピクニック1回目/2回目を実施して,ミニーブに4つの技を遺伝できる。

(Twitterくんで見ると動画2つあるよ)



7.まとめ

ポケモンSV環境でもなんとなく動く

タマゴ孵化自動プログラムを作成しました。

正直SWSHのほうが難易度が低かったと思います。

根本のプログラムができたので,ここから”止まらない作り”と"効率化"を目標に

調整していきます。


8.おまけ

後で追記(するかも)


[参考]








コメント

このブログの人気の投稿

【ポケモンGO】愛知県名古屋市・鶴舞公園の歩き方

【ポケモンGO】種族値,実数値,CPを計算してみた話(おまけで全ポケモン種族値リスト)

【ポケモン】MATLABでダメージ計算ツールを作成するお話

【ポケモンBDSP】固定シンボル色違い自動厳選プログラムのデバッグ