【Arduino自動化21】自動ドロップアイテム回収【ミント島でミント集め】
ますたーです。こんにちは。
今回は、ドロップアイテムの無限回収の記事です。自動でミント回収ができます。
Arduino自動化記事も第21回。引き続きよろしくお願いします。
なお、Arduino Leonardo自動化の導入・機材構成については導入記事を参考にしてください。
導入記事:【Arduino自動化01】Arduino開発環境の導入
※本ブログに初めてお越しの方は「本ブログについて」もぜひ、ご覧ください。
概要
目の前のドロップアイテム(キラキラ光るアイテム)を延々と回収し続けます。
★NintendoSwitch Ver.13.0アップデート対応済です。
★NintendoSwitch Ver.15.0アップデート対応済です(2022年10月23日追記)。
もくじです。
折角なのでArduinoを持っていない人も楽しく読めるように、手動ミント周回の方法や説明を交えつつ、自動化したポイントについても紹介します。ミントの収集おすすめ場所もブログ最後に載せました。
- 概要
- ミントの自動回収ができました(結論)
- 日付更新と画面更新でドロップアイテムが復活する
- ミントを使えば、性格の能力補正を上書きできる
- 鎧の孤島に「ミント」が効率的に拾える島(通称:ミント島)がある
- 長時間の自動化のためには、シンプルかつ短い動作の繰り返しが必要条件
- 自動化プログラムの使い方
- ソースコード
- あとがき
- 【おまけ】狙う性格補正ごとの「ミント」おすすめ入手場所
- 本当のあとがき
ミントの自動回収ができました(結論)
結論ファーストです。
わずか50分間の放置で18個の性格補正ミントが、全自動で回収できました(この数字には「まじめミント」を含みません!)。効率にして「0.36個/分」なので、3~4分に1個の性格補正ミントが手に入ることになります*1。
本記事では、ドロップアイテムについての基礎知識と、「ミント」の取れるポイントをまとめ、自動化プログラムのソースコードを紹介します!
※自動化のやり方はこちら→プログラムの使い方 ※ソースコードはこちら→ソースコード
日付更新と画面更新でドロップアイテムが復活する
さて、まずは前提知識から紹介します。もちろん、読み飛ばしOKです。→「ミント島の説明」まで読み飛ばす
ポケモン剣盾には、ワイルドエリアの地上や5番道路の橋の上、海の上、木々の根本など、様々な場所に「キラキラと光るアイテム」が落ちていることがあります。これは便宜的に「ドロップアイテム」と呼ばれます*2。このドロップアイテムですが、実は日付更新&画面更新によって同じ場所に復活します。
より詳しく拾ったアイテムの復活の条件を書くとすれば、Switchの時刻が24時を超えた後に画面更新、すなわち、日付が回った後に「そらとぶタクシーによる移動」「ポケモンキャンプ」「野生ポケモンとのエンカウント」などを行うこと、です。
この特性を利用すれば、日付更新バグを活用することで、高速にドロップアイテムの回収ができます。
例えば、本ブログのArduino自動化第11回の記事では、5番道路での羽系アイテム集めを自動化しています。この際には、任意の場所で日付を変更できる裏技、いわゆる「ランクマバグ」*3を活用し、「そらとぶタクシー」で画面更新を行うことでドロップアイテムの復活をしています。
最初の位置から周回するためにも、一般的には「そらとぶタクシー」を使って「画面更新」を兼ねるのが一般的です。
なお、ドロップアイテムで手に入るもののうち、特筆すべきは下記2つでしょうか。
- 端数の努力値振りアイテムとして有用な(5番道路)
- 性格補正が変えられる「ミント」系アイテム(離れ島海域)
ハネ系アイテムの説明は過去記事(Arduino自動化11)に譲りますが、これらは対戦ガチ勢はもちろんのこと、これから育成・対戦を始めてみたい初心者の方には特に有用です。ミントについては後述します。
ミントを使えば、性格の能力補正を上書きできる
「ミント」とは、ポケモンが持つ「性格ごとに定められた能力補正値*4」を、性格とは別に設定させるアイテムです。
主に、旅で使った仲間のポケモンや、厳選難度が高いポケモン*5を、対戦用に育成する際に使われます。他にも、「性格はそのまま」という仕様を活かして、投げつける・トリック対策で「混乱きのみの嫌いな味」を性格補正値と変えて厳選したり、「すがた」で性格が分かってしまう「ストリンダー」の補正値を変えたりなど、初心者~対戦ガチ勢まで幅広く利用されるアイテムです。
鎧の孤島に「ミント」が効率的に拾える島(通称:ミント島)がある
さて、前述の「ミント」ですが、従来、入手方法はバトルタワーで50BPとの交換だけでした。ところが、DLC「鎧の孤島」「冠の雪原」では、ドロップアイテムとして日替わり回収ができるようになりました。特に有名な回収ポイントとして、DLC第1弾「鎧の孤島」海上の北西に位置する島(離れ島海域;通称「ミント島」)が挙げられます。
「ミント島」への行き方
この「ミント島」ですが、アクセスも良好で、そらとぶタクシーで「チャレンジビーチ」に降りたら、そのまま反対側の海に向かってまっすぐ進むだけです。「みずの塔」のちょうど反対側に位置し、目印となる大きな木があるので、迷うことなくたどり着けます。
「ミント島」はミント周回に最適
誰が呼んだか「ミント島」と異名が付くこの島の、唯一無二にして最大の特徴が、島内5箇所にあるドロップアイテムで全種類のミントが手に入ることです。
その異名が語るとおり、他のドロップアイテムポイントよりもミントの出現率も高く、島をぐるっと1周拾い集めるだけで、2,3個のミントを回収することができます。さらに、誂え向きにポケモンの巣穴が島の中央にあるため、日付変更バグも島内で行うことができます。
アクセスが好立地であることもあり、まさに、ミント周回してくださいと言わんばかりの好条件が整っています。
ミント周回のやり方(手動)@ミント島
前述の通り、ドロップアイテムは「日付変更」&「画面更新」で復活します。
「日付変更」については、島の中央にある巣穴を使えばペナルティ無しで行うことができます。さらに、「画面更新」についても「野生ポケモンとの戦闘」か「キャンプを開く」ことで実施できます。
これを手順としてまとめると、下記のようになります。
- ミント島に行き、島の中央の巣穴に「ねがいのかたまり」を投げ入れる
- 島を1周して、落ちているドロップアイテムを拾い集める
- 巣穴で「みんなで挑戦!」から「日付変更」を行う
- 「ポケモンキャンプを開く」or「野生ポケモンと戦闘する(すぐ逃げてもOK)」
- ミントが復活するので、好きなだけ2~4を繰り返す
実は、上記4の画面更新で、「ポケモンキャンプ」を開くのはあまり知られておらず、一般的なミント周回作業では、「野生ポケモンとの戦闘」の利用が多いようです。
もっとも、時間効率という点ではどっちもどっちですが、草むらに入って野生ポケモンを探す手間が省けるので、キャンプのほうが楽だと思います。
長時間の自動化のためには、シンプルかつ短い動作の繰り返しが必要条件
さて、おまたせしました。ここからは、Arduino自動化のお話です。まずは、今回のミント島での自動化プログラムが作りにくい理由・自動化の設計指針について解説です。
テクニカルな話なので、興味がない人は読み飛ばしOKです→読み飛ばす
Arduinoを使ってコントローラー操作の自動化を実装する際に、もっとも気を配るのが「どんな状況でもほぼ確実に同じ動作をすること(=動作に再現性があること)」です。言い換えると「ループが破綻しないこと」です。そのためには、野生ポケモンとのエンカウントなどの「予想外」の動きが発生することや、だんだんとミリ秒単位での動作誤差(オフセット)が溜まっていくことに留意せねばなりません。
したがって、可能な限り、不定な動きをする可能性がある要素は排除し、可能な限り、プレイヤー(キャラクター)が動かないで済む操作で済ませることが、自動化の定石と言えます。やむを得ずプレイヤーを操作させる場合にも、その動きによって発生しうる誤差をリセットあるいは吸収する手段を講じます。代表的な例としては「そらとぶタクシー」による座標リセット、壁にぶつかることで擬似的に動きを局所的に制限するなどです。
さて、こういった技術的な制約もとい設計指針に立って、今回のミント島での回収作業の自動化を考えると、かなり自動化の実現ハードルが高いことが分かります。
- 円形のルートを通らなければならない→動作が複雑で、そもそも自動化に向かない
- 周りに壁などが無い→冗長なコマンド入力でも動作誤差をリセットできない
- そらとぶタクシー発着点が無い→最寄りの「チャレンジビーチ」で座標をリセットしても、海を越えなければならない
- 草むらが近くにあり、野生シンボルが多く出現→予期しないエンカウントの恐れがある
- オープンワールドで日付変更を行う→天候などによる動作のカクつき・操作誤差の発生の恐れがある
そこで、抜本的に考え方を改めるため、初心に立ち返り、ミント集めの動機を考えました。我々がミント周回をするのは「ミント」が必要だからですが、別に21種類すべてのミントが必要なわけではありません。つまりは、よく使う特定のミントさえあれば、実用には困らないはずです。
例えば「いじっぱり」「ようき」「ひかえめ」「おくびょう」だけが必要であれば、ミント島のアイテムドロップ回収ポイントの5箇所すべてではなく、「こうげき」「とくこう」「すばやさ」の3箇所だけ回れば良いことになります。突き詰めれば、いずれか1箇所を3回に分けて自動化すれば、総じて無駄の少ない自動化が可能です。
漫然とミントを集めるのではなく、特定の種類のミント1種類「だけ」を周回するように設計すれば、プレイヤーの操作も必要なく、上記の種々の問題はクリアできます。前述の通り、ミント島で拾えるミントは場所によって拾えるミントの種類(こうげき、ぼうぎょ、など)に偏りがあるので、任意の1箇所でドロップアイテムを拾い続けることで、上記要件を満たすことができます。
したがって、今回のミント回収自動化プログラムでは、任意の1箇所でドロップアイテムを拾い続ける仕様としました。
自動化プログラムの使い方
おまたせしました!Arduinoプログラムの使い方についてです。と言っても、準備は非常にシンプルです。剣盾側の準備はわずか2つ、ソースコードの修正はわずか1箇所です。
自動化プログラムを使うための準備(ポケモン剣盾)
剣盾側の準備としては、下記2つです。
- Xでメニューを開いたときに「キャンプ」にカーソルが合う状態にする
- 狙いのミントがAで拾える場所の目の前でセーブする
わずか2つの準備で、ひたすら目の前のキラキラ(ドロップアイテム)を拾い続けてくれます。「ねがいのかたまり」や「ランクマバグ」は一切使いません!便利ですね。
自動プログラムのソースコードの修正
お使いの環境に合わせて(true)を(false)に変えるだけです。具体的には、IGNORE_NEW_ITEMを、そのROMで入手したことがないアイテムを拾う可能性がある場合に(false)に書き換えます。
要するに、その場所で拾える特定の能力補正がかかるミント4種類とまじめミントの5種類のうち1個でも所持していないものがあれば(false)です。サブロムなどでは注意しましょう。
ソースコード
アイテムドロップの場所の目の前でArduinoを挿すだけのカンタン仕様です。メニューを開いたときに「キャンプ」にカーソルをあわせることをお忘れなく。
NintendoSwitch Ver.13.0アップデート対応済(詳細はこちら)
NintendoSwitch Ver.15.0アップデート対応済(Liteは未検証;2022年10月23日追記)
※Switch Liteをご利用の方は「#define SWITCH_VER (15)」を「#define SWITCH_VER (12)」に書き換えてご利用ください。
あとがき
以上が本記事の内容となります!いやぁ~今回も盛りだくさんでしたね(←書いた本人)
ところで、「『ドロップアイテム回収の自動化』なんて何を今更」と思われた方もいらっしゃることかと思います。実際、私がハネ系アイテムの自動化をしたのも、2021年1月(10ヶ月前!)ですし、たしかに今更感は否めません。
ところが、剣盾発売から2年近く経った今でさえ、賑わう多くの自動化界隈で未だに「ミント回収自動化プログラム」として公開されたものは無く*6、実は、日本初の「ミント」回収自動化の成功例だったのではないかな?と思います(違ったらごめんなさい)。
そういう意味でも、今回の記事は、そういったニッチだけどパワフルな需要を兼ねるものになります。もし、皆様にご参考頂けたようであれば嬉しく思います。
もし、参考になったよ、という方がいらっしゃれば、是非ともコメントをいただければと思います。励みになります!
--
【おまけ】狙う性格補正ごとの「ミント」おすすめ入手場所
オススメのミント採取場所(ドロップしている場所)を表にまとめました!自動化する際はもちろん、手作業の周回でもご参考いただけると思います。本記事の真ん中に入れると読みにくそうだったのでここに入れました。
狙う性格補正の「ミント」が拾える場所の一覧 ※ヨロイ島はすべて「ミント島」です
名前 | 効果 | おすすめの場所 |
---|---|---|
「こうげき」が上がるミント |
||
さみしがりミント | 攻撃↑・防御↓ | |
いじっぱりミント | 攻撃↑・特攻↓ | |
やんちゃミント | 攻撃↑・特防↓ | |
ゆうかんミント | 攻撃↑・素早↓ | |
「ぼうぎょ」が上がるミント |
||
ずぶといミント | 防御↑・攻撃↓ | |
わんぱくミント | 防御↑・特攻↓ | |
のうてんきミント | 防御↑・特防↓ | |
のんきミント | 防御↑・素早↓ | |
「とくこう」が上がるミント |
||
ひかえめミント | 特攻↑・攻撃↓ | |
おっとりミント | 特攻↑・防御↓ | |
うっかりやミント | 特攻↑・特防↓ | |
れいせいミント | 特攻↑・素早↓ | |
「とくぼう」が上がるミント |
||
おだやかミント | 特防↑・攻撃↓ | |
おとなしいミント | 特防↑・防御↓ | |
しんちょうミント | 特防↑・特攻↓ | |
なまいきミント | 特防↑・素早↓ | |
「すばやさ」が上がるミント |
||
おくびょうミント | 素早↑・攻撃↓ | |
せっかちミント | 素早↑・防御↓ | |
ようきミント | 素早↑・特攻↓ | |
むじゃきミント | 素早↑・特防↓ | |
「能力補正」をなくすミント |
||
まじめミント | 性格補正無し | 各ミント採取場所でランダムに入手可能 |
本当のあとがき
この自動化プログラムでは、「キャンプ」を開いて、その状態でしれっと日付変更をしています。これ、冷静に考えれば、もし時間変更ペナルティを受けていれば成り立たない自動化です。
言い換えると、いわゆる「ランクマバグ状態」や、「巣穴で『みんなで挑戦』を押している状態」と同様に、ポケモンキャンプを開いている間は一時的に日付変更のペナルティが解除されていることになります。
実は「ポケモンキャンプ」を使って時間変更バグができた?
このプログラムを組む前の経験談なのですが、ミントの復活条件を検証中に偶然、キャンプを開いて日付を更新してしまったことがありました。
その時、特に何事も無く(=いわゆるペナルティが発生せず)ミントが復活したことを受けて、「あれ?巣穴バグを使わなくても日付変更できるのでは?」と気づき、色々と検証をして、今回の記事執筆に漕ぎ着けました。つまり、この発見により、従来、ミントの自動化でネックになっていた「日付変更」を、巣穴を使わず=場所を選ばず実現できるようになったのです。
そういう意味では、もしかしたら、「ミントの自動化ができたこと」よりも、こっち(=巣穴で「みんなで挑戦」をせずとも、キャンプでを開けばどこでも日付変更できる)のほうが大発見なのかもしれません。これ、発見したときはめちゃくちゃテンション上がりました。
全然見たことも聞いたこともない日付変更の方法だったので「このバグ自体、初出?もしそうだったら、すごいことなのでは?」と思いつつ、この気持ちを共感できる人もいないので、こういうカタチであとがきとしてまとめさせていただきした。
(このあたり、初出そうだったら、後日、記事としてまとめるかもです)【2021/10/18 11:52追記:初出ではなかったです…】
*
改めて、本ブログを引き続きよろしくお願いいたします。
もし、このブログが参考になったよ!いつも見ているよ!という方がいらっしゃれば、是非ともコメントをいただけると励みになります。
(リクエストがあればコメントにいただければと思いますが、多忙&マイペース更新なのであしからず。ぜひ検討したいとは思います)
ではではc⌒っ.ω.)っ
前回記事:【Arduino自動化20】Switch2台で「完全」自動!レイドバトル自動周回
導入記事:【Arduino自動化01】Arduino開発環境の導入
関連記事:【Arduino自動化11】5番道路で全自動羽集め【DLC不要】
他のArduino自動化:ポケモン剣盾Arduino自動化 カテゴリーの記事一覧
YouTubeチャンネル:ますたーの忘備録 - YouTube 【NEW!!】
---
*1:いわゆるミント島で、1時間足らずでの検証結果です。場所によって入手効率は変わります
*2:剣盾で「ドロップアイテム」と言えば文字通り落ちているアイテムのことを指しますが、文字を入れ替えて「アイテムドロップ」だとレイドバトル報酬を指す場合が多いようです
*3:ランクマバグ:ランクマッチの直後にSwitchの日付変更を行ってもペナルティが発生しない状態のこと。Switchが2台あればローカル通信で対戦→機内モードで同様の状態にできる
*4:性格による能力補正:例えば「ようき」なら「すばやさ」が1.1倍・「とくこう」が0.9倍になります
*5:配布ポケモン、偶発的に出会った色違いのポケモン、孵化厳選ができないタマゴ未発見ポケモン・準伝説ポケモン、強制捕獲イベントがあるポケモン(ムゲンダイナ・ザシアン・ザマゼンタ)、作中で人からもらえるポケモン(キョダイマックスヒトカゲ・タイプ:ヌル)など
*6:2021/10/7現在。筆者調べ。Arduino Leonardo系列を用いたポケモン剣盾自動化において「ミント」系アイテムの自動回収を主題としたもの。あったらごめんなさい