【Arduino自動化05ex】乱数調整レイドでのArduino Leonardoの使い方
ますたーです。こんにちは。
3月は繁忙でなかなか更新ができませんでした。
さて、今回はArduino自動化記事05で紹介・実施した乱数調整色レイドの手順についての補足記事です。具体的には、Arduinoをどのタイミングで使うのか、に焦点を当てて執筆しました。一応、本記事だけでも読めるように書きますが、先に当該記事を一読しておくとスムーズです。
なお、Arduino Leonardoでの自動化環境の導入については、導入記事を参考にしてください。
※本ブログに初めてお越しの方は「本ブログについて」もぜひ、ご覧ください。
【!】本記事では乱数調整の内容を扱います。
概要
今回の記事では、レイド乱数調整の中で「Arduino Leonardoをどのタイミングで使うのか」を紹介します。
詳細実際の作業手順は適宜 前回の記事(Arduno自動化05) で補ってください(途中途中にリンクも貼りますのでご安心ください)。
本記事のメインターゲットは「乱数調整は知っているけどArduinoを使うというのがいまいちピンとこない人」「前回記事を読んだけど、Arduinoのコンパイル?抜き差し?をどのタイミングでやればいいのかわからない人」になります。
では目次です。補足記事なので、例のごとく分量多めです。順番に読んで頂くと抜け漏れが無いかと思いますが、各人、必要になる部分について、目次から飛んで読んでいただいても大丈夫です。
とりあえずお急ぎの方は【ここから本題】まで読み飛ばすと良いと思います。
- 概要
- 自動化で準備するハードウェア5つ(おさらい)
- 乱数調整に使うツール
- 【ここから本題】乱数調整でArduino自動化できる2つの手順
- 1.準備(目当ての巣穴を決めて「ねがいのかたまり」を投げ入れる)
- 2.Arduinoにプログラム(3日後・4日目用)を書き込もう
- 3.最初の目標ポケモンを把握する
- 4.ArduinoをSwitchに挿し込もう
- 5.自動操作が止まったら、目標のポケモンを捕獲しよう
- 6.捕まえたポケモンの能力をツールに入力
- 7.次の目標ポケモンを捕まえて個体値入力
- 8.Arduinoのプログラム(4日後・5日目用)に書き換えよう
- 9.次の目標ポケモンを捕まえて個体値入力
- 10.Arduinoのプログラム(5日後・6日目用)に書き換えよう
- 11.最後の目標ポケモンを捕まえて個体値入力
- 12.Seed推定をしよう
- 13.目標消費数を特定する
- 14.Arduinoのプログラムを書き込もう
- 15.ランクマバグ状態にして、Arduinoを挿し込む
- 16.巣穴に戻り、セーブして準備完了
- 17.捕獲しておしまい!
- あとがき
自動化で準備するハードウェア5つ(おさらい)
まずは、使用機材についておさらいです。必要なものは以下の通りです。
ひとまず、これらが揃っていることを確認ください。
実際に筆者が使っている機材については「番外編03:機材紹介記事」をご参考ください)セットアップ手順は「Arduino自動化01:導入記事」で紹介しています)。
- Windows PC
- Arduino Leonardo
- USBケーブル
- Switch用ドック(USBハブ)
- Nintendo Switch
乱数調整に使うツール
続いて、使うツールの話です。
具体的には、乱数調整は「初期シード特定」「目標消費作業」の2ステップありますが、インストールするアプリケーションがいくつかあります。特に初期シード特定作業は有名なツールが2つあります。ここでは補足記事として両方紹介します。
初期シード特定は「1-Star Seed Search」「SW Seed Calculator」どちらもOK
様々なブログ記事や動画などで紹介されている乱数調整(初期シードの特定)を行うツールとしては、さびたコイル氏による「1-Star Seed Search」と、ぼんじり氏による「SW Seed Calculator」の2つが特に有名だと思います。
どちらも、初期シードの推定ができるツールとして優れており、筆者は両方とも使っています。どちらのツールも大変素晴らしいと思います。
「SW Seed Calculator」は初期シード特定に特化
一応、前回の記事(Arduino自動化05)では、1-Star Seed Searchを使っていますが、これは乱数調整の記事を扱う上で、「初期シード特定」と「目的の消費数の特定」の作業が同じツールで完結するため、説明しやすかったことが理由です。
一方で、ぼんじり氏が提供する「SW Seed Calculator」は、その次のステップ(目的の消費数の特定作業)には別のツール(夜網氏が提供する「8densearch」など)を使う必要があるため、乱数調整の流れを理解していない人には少し説明がしにくいです。
ただし、「初期シード特定」に限定するなら「SW Seed Calculator」はすごく使いやすくしかも高速で、エラーも少ないため個人的には大変おすすめです。特に、6日目検索ができるため初期シード特定の精度も高く、セットアップの煩雑さや別ツール連携の手間をいとわないのであれば、ぜひとも使っていきたいと感じます。
本記事や様々な記事で「乱数調整の全体の流れ」がわかってから使うと驚くほど使いやすいと思いますし、もし、前回の記事(Arduino自動化05)で初期シード特定につまづいているなら、試してみても良いかもしれません。
乱数調整に使うツールの組み合わせ
乱数調整は大きく「初期シード特定」「目的の消費数の特定」の2つに分かれます。前回の記事では紹介した「1-Star Seed Search」では、これら2つを1つのツールで完結できるので、初期導入としては比較的簡単です。
一応、下記の2パターンがおすすめです。お好きな方で実施ください。前回の記事(Arduino自動化05)では下記1を採用しています。
- さびたコイル氏の「1-Star Seed Search」のみ(流れを理解するまではおすすめ)
- ぼんじり氏の「SW Seed Calculator」+夜網氏の「8densearch」(慣れたらおすすめ)
「1-StarSeedSearch」を使う場合は、前回の記事(Arduino自動化05) を参考にセットアップしてください。「SW Seed Calculator」を使う場合は、ぼんじり氏のWebサイトから「SW Seed Calculator」をダウンロードしてください。
原則として、これらは最新版が良いかと思いますが、お好みで決めてください。その後、そのページの手順(ダウンロードリンクの下の方に設定方法載っています)に沿ってセットアップしてください(リンク先に載っているので、本稿ではセットアップ方法は割愛します)。
この記事では補完記事としての側面から、初期シード特定にはSW Seed Calculatorを利用します。
【ここから本題】乱数調整でArduino自動化できる2つの手順
ここからが本題です。
前回の記事でも紹介した通り、乱数調整の手順は大きく4つです。
この中でArduinoによる一部自動化ができるのは下記2と3、2つの手順です。
- 準備(目当ての巣穴を見つけてねがいのかたまり投げ入れる)
- 乱数調整(日付回してポケモン捕まえて初期シードを特定する作業)
- 乱数消費(目標の日付に向かって何度も日付を変更する作業)
- 捕獲(お気に入りのボールで捕まえる)
ここからはまず、この「初期シードを特定する作業」について 紹介をします。
1.準備(目当ての巣穴を決めて「ねがいのかたまり」を投げ入れる)
まずは、レイド乱数調整に挑戦する巣穴を決めましょう。
具体的には、ポケモン徹底攻略の「レイドバトルのポケモン一覧」などから、欲しいポケモンのいる巣穴を探します。もし、乱数調整ツールに前述の「SW Seed Calculator」をお使いの場合は、右上の「巣穴マップを開く」から巣穴を逆引きできますので、必要に応じてご活用ください。
余談ですが、DLC冠の雪原の巣穴で出てくるポケモンは夢特性が固定されるので、それが気になる人はガラル本土で探しましょう。
さて、今回は、色違いが金色で美しい、チルタリスを狙って行きます。チルタリスは様々な巣穴で出現しますが、今回は「ボールレイクの湖畔 D」の巣穴を目指します。
巣穴について、狙うポケモンによっては(例えばキョダイマックス個体など)、いわゆる「レア柱」でないと出現しないことがあります。つまり、目標となる巣穴の場所はもちろん、「通常」「レア」のいずれの柱を建てる必要があるのかも確認しておきましょう(レアの柱とは、通常の赤色の光の柱ではなく、紫色のオーラが出ている太い光柱のことです)。
なお、自分で「ねがいのかたまり」を投げ入れて建てた柱でないと、乱数調整はできません。もし、すでに目標の巣穴に光の柱が建っていても、そのまま次のステップに進まず、日付変更やレイド挑戦などで予め消しておき、必ず自分で建てましょう。
無事に目標の巣穴に光の柱を建て終わったら、念の為、セーブしておいてください。
2.Arduinoにプログラム(3日後・4日目用)を書き込もう
さあ、ついに手順の中にArduinoが登場しました。なお、本記事は導入記事でセットアップが完了している想定で書いています。悪しからずご了承ください。
ここから、乱数調整が始まりますが、今からの手順は「初期シードの推定」作業になります。このステップでは、条件を満たすポケモンが現れるまでひたすら3日後(4日目)のポケモンを捕まえてはリセット、捕まえてはリセット、…と幾度となく繰り返し作業が発生します。ここを、Arduinoで自動化する準備となります。
まずは、PCで、Arduino IDEを開いてください。そこに、Arduino自動化05記事のソースコード1つ目をコピペして、検証&マイコンボードに書き込みを行ってください。
ちなみに、「新しい名前で保存する」ダイアログが出てきたら、半角英数字でファイル名をつけてください。日本語はNGです。
無事にArduinoにプログラムが書き込まれたら、ArduinoをPCから抜いてください。
3.最初の目標ポケモンを把握する
まずは乱数調整のファーストステップです。ツールを使って、初期シード特定に必要なポケモン(3日後=4日目に出会わなければならないポケモン)を調べます。
「SW Seed Calculator」をお使いの方も、「1-Star Seed Search」をお使いの方も手順は共通です。巣穴情報を入力しておけば、最初に出会わなければならないポケモンはプルダウンメニューの中に出てきます。
※以降、本記事では「SW Seed Calculator」で画面説明をします。
今回の例(ボールレイクの湖畔D・レア/バッジ=8個/ROM=ソード)だと、まずは「★3 アオガラス」「★3 ゴルバット」のいずれかを見つける必要があることがわかります。これをまずは把握しましょう。
4.ArduinoをSwitchに挿し込もう
さて、ゲーム画面に戻ります。ゲーム画面では、巣穴に「ねがいのかたまり」を投げ入れたタイミングで終了していると思います(つまり、Aを押したらレイド募集画面に入れる状態)。この状態のまま、SwitchとArduinoを接続してください。充電しながら行う場合は、先にSwitchをドックに差し込んでから、ドックのUSBポートにArduinoを挿し込んでください。
正しく接続されると、勝手に「ゲーム終了→ゲーム起動→レイド調整~日付変更を3回繰り返す→日付を戻して挑戦画面で待機」という一連の流れが行われます。自動操作が止まるまで、放置しましょう(2分半くらい)。
※このプログラムは3日間日付を進めても月をまたがない想定で使っています。注意してください
なお、SwitchとArduinoを接続する際には、Switchに接続されている有線・無線コントローラーすべて(本体から取り外した状態のJoy-conや、プロコントローラーなどを含みます)の接続を解除または切断した状態にしてください。
5.自動操作が止まったら、目標のポケモンを捕獲しよう
ゲーム画面の動きが止まったら、画面に映っているポケモンが目標のポケモンだったかどうかを確認します。具体的には、ステップ3で確認したポケモンであればOKです。
今回の例(ボールレイクの湖畔D・レア/バッジ=8個/ROM=ソード)だと、まずは「★3 アオガラス」「★3 ゴルバット」のいずれかを見つけなければなりませんから、例えば「★4 アオガラス」「★5 クロバット」などで画面が止まっている場合はNGとなります(★の数も要注意!)。
目標のポケモンではなかった場合は、目標のポケモンが出るまでArduinoをSwitchから一度抜き、挿し直しましょう。
目標のポケモンが出現していた場合には、そのポケモンを捕獲します。
6.捕まえたポケモンの能力をツールに入力
捕まえたポケモンの特性・性格・能力値(個体値)をツールに入力します。
個体値の計算には、原則としてLv100まで引き上げるだけの「けいけんアメ」や「ふしぎなアメ」、そして性格補正で個体値判別が出来なかった場合に備えての「まじめミント」またはドーピングアイテムがあると非常に便利です。
6-1.利用できない個体値の場合
能力値を入力後、1-Star Seed Searchでは「NG!」、SW Seed Calculatorの画面で「利用できない個体値です」 という言葉がでてきた場合、残念ながら手順をやり直す必要があります。単純にやり直すのではなく、1日日付をずらす必要があります。
具体的な手順としては
- 一度、ゲームを終了する(再起動する)
- 巣穴レイドバトル「みんなで挑戦」を選択する
- Homeボタン→設定→日付を1日すすめる
- 巣穴からワットを回収する
- セーブする
になります。 セーブまで完了したらまた4~6の手順をやり直します。
6-2.利用できる個体値の場合
能力値を入力後、1-Star Seed Searchで「OK! Next ->」、SW Seed Calculatorの画面で「利用可能な個体値です」 という言葉がでてきた場合は、おめでとうございます。第1関門突破です。セーブしてはいけません。注意しましょう。
利用可能な個体値だった場合、次の目標ポケモンの指示も合わせてツール上に出てくるので、そちらを確認してください。具体的には、3V, 4V, 5Vなど、次に捕まえるべきポケモンのV数の指定が出てくるので、その数字にあった巣穴のポケモンを捕まえます。
なお、詳細な原理については割愛しますが、「SW Seed Calculator」を利用の場合、「4V -> 4連」のように、Vの数と連数が両方表示されることがあります。
この時、もし、複数のV数・連数のペアが表示されている場合は、可能な限り「連数」が多い方のV数ポケモンを捕まえてください。例えば「4V->6連 3V->5連」と表示された場合は、「4V」の方を選択してください。「4V/5V -> 4連」のように、連数が変わらない場合は、どちらでも大丈夫です。
次の目標となるポケモンを把握したら、セーブせずに次のステップに進んでください。
7.次の目標ポケモンを捕まえて個体値入力
「4日目(2体目)」のポケモンを捕まえる場合、基本的に4~6と同じ手順です。
要するに、「次のターゲットとなるポケモンが出るまでArduinoを挿し直す」だけでOKです。ターゲットとなるポケモンが出たら、レイドバトルをして捕獲してください。
これで、最初の日を起算日として、3日後のポケモン2匹の個体値がツールに入力された状態となっています。ここまでくれば次の作業も同じ流れ。この調子です。
なお、やはりレポートはしません。要注意です。
8.Arduinoのプログラム(4日後・5日目用)に書き換えよう
さて、ここでArduinoに話が戻ります。次のステップでは「5日目(4日後)」のポケモンを捕まえる必要がありますので、事前にArduinoのプログラムを書き換える必要があります。
具体的には、再びArduino IDEで先程のソースコードを開いて、TIME_WARP_DAYSの(3)を(4)に書き換えてArduinoに書き込めばOKです。
この1箇所の書き換えが完了したら、PCとArduinoをつなぎ、左上の「検証」「マイコンボードに書き込み」作業を行ってください。
ちなみに、次に捕まえるポケモンについてはツールの指示通り、基本的には不問ですが、可能な限りVの少ないレイドのほうが望ましいです。特にVの少なさはそっくりそのまま計算速度・精度に比例しますので、もし、マシンスペックが低いPCを使っている場合などは特に気をつけましょう。
9.次の目標ポケモンを捕まえて個体値入力
続いて、「5日目」のポケモンを捕まえる場合も、基本的に4~6と同じ手順です。ただし、ターゲットは不問となりますので、★の少ないレイドなどを厳選しましょう。要するに、「極力Vの少ないレイドが出るまでArduinoを挿し直す」だけでOKです。
口酸っぱく言いますが、ポケモンを捕まえた後はくれぐれもセーブしないように注意してください。
10.Arduinoのプログラム(5日後・6日目用)に書き換えよう
ここまで読まれた方にはお分かりかと思いますが、次のステップでは「6日目(5日後)」のポケモンを捕まえる必要がありますので、再びArduinoのプログラムを書き換えます。TIME_WARP_DAYSを(5)に書き換えてArduinoに書き込めばOKです。
11.最後の目標ポケモンを捕まえて個体値入力
「6日目」のポケモンを捕まえる手順も、基本的に4~6と同様です。★の少ないレイドが出るまでArduinoを抜き差しして、目当てのレイドだったら捕獲して個体値チェックです。
ここで妥協して星5レイドなどで済ませると、SEEDの誤検出のリスクも高くなるため、極力★3レイドなど、V数が少ないレイドを選ぶようにしましょう。ここまでくれば、「SW Seed Calculator」の4項目(ポケモン4匹分の個体値・性格ほか)が埋まっている状態となります。
なお、目安として、この時点でも右下の「誤Seed検出率」が「高」の場合は、素直に最初からやり直したほうが良いです(V数の少ないレイドが不十分だったり理由は色々ですが…)。
ここでも、捕まえてからセーブしてはいけません。くれぐれも気をつけましょう。
12.Seed推定をしよう
ここまでお疲れ様でした。あとは「SW Seed Calculator」右下の「計算」ボタンを押すだけです。
高速なCPU・グラフィックボード(GPU)を備えているゲーミングパソコンなどであれば、「Seedを1個見つけたら終了」の条件下では1分ほどでSeed特定ができます。
再計算回数と目安となる推定計算時間はツール中に記載の通りですので、例えば、再計算5回・CPUのみでの計算をするとこれが4時間半程度かかることがわかります。とにかく、計算が終わるまでは気長に待ちましょう。
なお、誤Seed検出率によっては、左下の「Seedを1つ見つけたら計算終了」のチェックボックスを外しておくことが必要になります。ただし、計算時間が非常に増えるのでPCスペックと相談してください。
参考までに、筆者環境(かなりしっかりしたゲーミングPC)でチェックを入れて計算すると10秒で計算完了していましたが、チェックを外して「10回」再計算の上限設定だと7分20秒もかかりました。計算時間で見ると44倍です。
まともに考えて、GPUを積んでいないPCだと時間がかかりすぎてしょうがないので、「誤Seed検出率が低であること」を前提とした上で、再計算「0~2」とかが落とし所ではないかと思います。
さて、推定されたSeedが無事に算出できれば、初期シード推定は完了です。お疲れ様でした。なお、この推定シードが複数ある場合には、初期シードを絞り込む作業が必要です。本稿では割愛しますが、前回記事の手順2-2-1を参考にしてください。
本稿では、初期シードは0xCBC17754E4E6EA62と特定できたので、次項もその数字で紹介します。
13.目標消費数を特定する
初期シードが特定できたので続いて、色違いのポケモンが出る目標消費数を計算します。目標消費数の計算ツールとしては、夜鯛氏による「8denSearch」、さびたコイル氏による「1-Seed Star Search」が主要です。これらの間で機能的な差はありません。本稿では導入手順については割愛しますが、本当にお好きな方を使ってください。
初期シード特定に使ったツールがSW Seed Calculatorの場合は8denSearchを、1-Star Seed Searchを使っている場合はそのまま1-Star Seed Searchを使うことをとりあえずはおすすめします。
本稿では、初期シード特定にSW Seed Calculatorを使ったので8denSearchを利用します。とは言っても、1-Star Seed Searchでも同じことができるので、ご安心ください。
手順としては、目標消費数を特定するためのツールに、初期シード値、バージョン・巣穴情報ほか、必要事項を入力し、計算を押すだけです。画面は、下記画像を参考にしてください。
目標の個体の左には、1日目(巣穴に投げ入れた日)から起算して、何日目に色違いが出現するかの消費数が記載されています。これが、十分に小さい数字であれば、その数字を手元に控えて次のステップに進みましょう。今回は、色違いの菱形・星型を特に気しないので、最も消費数が小さい「1108」を目指します。この数字は「1108日後」を表します。「1108日目」ではありません。次のステップで重要なので注意しましょう。
14.Arduinoのプログラムを書き込もう
次は高速消費のプログラムをArduinoに書き込みます。具体的には、前回記事のソースコード2からArduino IDEにコピペして書き込みます。
ただし、コピペして使うだけでなく、SHOHISUの数字を書き換える必要があります。先程ツールで確認した数字から-3の数字を入力してください。例えば、今回の例だと、1108なので、1105と入力します。ただし、-3だと、消費数と現在日付の関係でずれることがあるので、実際には-10程度で残りを手動でしたほうが良いと思います。
また、ソースコードの作りの甘さもあるので-10くらいでやるのが良い気もします。
このプログラムは31日まである月で使う前提なので、もしこれがクリアしていない場合は、予め2,4,6,9,11月「以外」に日付を変更しておいてください。
なお、このSHOHISUの上限は「32767」となります。もし、32768以上の消費が必要な場合、2回に分けるなどの工夫が必要です。これはArduino本体の仕様です。
また、プログラムですが、私が横着して作ったプログラムだったので、消費数の内部計算が甘く、実際の消費予定数より少なく消費される仕様になっていたので、55行目を下記のように書き換えると、より消費数が正しく消費できると思います。
本件は、私がExcelで計算して検証した数式なので、誤っている可能性もありますが、筆者は実機でこれでうまくいきました(検証回数:1回)。
これらを自己責任で書き換えていただき、ArduinoIDEでプログラムを書き込みましょう。
15.ランクマバグ状態にして、Arduinoを挿し込む
さて、目当てのポケモンに向けて消費(日付を進める作業)に移る必要がありますが、まずは、一度巣穴の場所を離れて、ポケモンセンターに移動してください。
その状態で、いわゆる「ランクマバグ状態」に移行してください。詳細な手順は、前の記事の手順3-1を参考にしてください。
ランクマバグ状態にしたら、Homeボタンから設定画面に入り、「日付と時刻」から日付の変更画面に入り、日付を更新せずに「OK」を押してください。
この状態でArduinoをSwitchに挿せば自動的に日付更新が始まっていきます。
16.巣穴に戻り、セーブして準備完了
自動作業が終わったら、前回記事の捕獲パートです。お疲れ様でした。ポケモンセンターから目的の巣穴の目の前まで戻り、セーブしましょう。
あとは、自身が目的の消費数-3の日付になっていることを確認し、「みんなで挑戦」から3回、日付を変更すればOKです。その際に、目的のポケモンが出たら挑戦してそのまま捕獲、違うポケモンだったらリセットして、目当てのポケモンのシルエットが出るまで3回日付を変更して挑戦を繰り返すだけです。
なお、このとき、目標のポケモンではなかった場合(色違いのはずなのに光らなかった場合)は、一度そのまま捕まえて、それがどの個体のポケモンなのか、該当する性格・個体値のポケモンが目標の個体の付近にいるかをツールで確認してください。
もし、目標のポケモンよりも手前(上側)のポケモンが出現している場合には、日付を回す回数をそのズレ分だけ実施すればOKです。なお、目標ポケモンよりも下側だったり、そもそも付近にそのポケモンが見当たらなかった場合は、手順1からやり直しとなります。前者の場合は消費が大きすぎる、後者の場合はそもそも初期シードの特定に失敗しています。めげずに確認してみましょう。
17.捕獲しておしまい!
目当てのポケモンに、任意のボールを投げて捕獲できれば完了です。お疲れ様でした。
あとがき
本稿では、前回記事では必要最小限に留めていた「Arduino Leonardoを乱数調整のどのタイミングで使うのか?どのタイミングでプログラムを書き込むのか?」に焦点を当てた補足記事を書きました。
基本的には最小限のプログラム書き換えで済むことや、Switchとの接続タイミングが何となくお分かりいただけたかと思います。
もし、前回の記事で「Arduinoと乱数調整が結びつかない!」となっていた人にとって、この記事が参考となれば幸いです。
ではではc⌒っ.ω.)っ
前回記事(本補足記事の対象):
【Arduino自動化05】乱数調整レイドで色違いパッチルドン探し【冠の雪原】
次の記事:
【Arduino自動化18】ローカルレイド自動配布【デリバードレイドでマックスこうせき】
導入記事: