進化した六世代乱数調整のやり方

自分のTwitterを見てくれている方はわかると思いますが、六世代乱数が以前よりも少し簡単になりました。ある程度調整方法が固まってきたので今回記事にしようと思います。


ちなみに、実機での六世代乱数って海外ではやってる人ほとんどいないので(日本でもほとんどいないけど)、短い期間で3回も成功報告したらvideo-proof撮ってくれと言われました
【追記】
動画撮るのが面倒だったのでYouTubeで配信し、アーカイブ残しました。古いノートパソコンには配信中に乱数調整をするのは重すぎたのかズレ+20くらいをずっと引いていたので調整にかなり時間がかかってますが、皆さんがやるときはもっと簡単に成功できると思います。普段配信とかしないので最初はゲーム音出てなかったり途中からはゲーム音が大きすぎたり最後にはDiscordで通話しながらやったりしてるので見る必要はあまりありません…。
https://youtu.be/mjot9dNcvCs

進化した背景


やり方の説明の前に簡単にどのような内容なのかと、どのような背景でその方法が見つかったのかも説明しておきます。

ご存知の方もいると思いますが、海外のコミュニティには3DS本体を改造して使うとてもつよいツールがあります。それのおかげで海外勢の間では六世代乱数も比較的やってる方が多いのですが、海外勢のDiscordでの成功報告の中に非常に長い待機時間のものを野生戦で消費速度を2倍にして待機したという報告がありました。たしかに野生で初期seed特定を行っていたときはなかなか安定しないと感じていたので、本当に倍速になってるのかもしれないと思いこのようなツイートをしたのですが…

海外勢の乱数調整YouTuberのim a blisy氏がこのツイートを見て、野生ではなく化石の受取で初期seedを特定する方法を試してくれました。そのときのアーカイブがこちら。なんとたったの30分で色ランドロスの固定乱数を成功させてます。 これがまず1つ目の進化です。 野生ではなく化石の受取でseedを確認すると非常に安定します。動画ではアーケンを使ってると思いますが、個体値を特定しないといけないので、種族値の都合上プテラ一択だと思います。


また、六世代乱数のやり方をある程度理解している人ならわかると思いますが、タイマーの使い方が非常にネックです。これについてもFlowTimerという、タイマーをスタートさせてから待機フレームを設定できるタイマーの存在を知りました。これにより従来のやり方のタイマーの継ぎ足しの際に起こりうる微妙なズレが一切なくなりました。 これが2つ目の進化です。


その後こいしさんと一緒にしばらく情報共有しながら六世代乱数をやっていたのですが、約1000Fにつき3Fほど消費が足りなくなる傾向にあるということに気がつきました。これはトノさんの記事にも書いてあります。 実は、FlowTimerにはFPS(1秒間に何F進むか)を変えられる機能があります。普段みなさんが使ってるタイマーは大体60だと思います。話している中で、突然FlowTimerのリストにデフォルトで存在していた59.8261という値が1000Fにつき3F足した値にほぼ一致していることに気づきました。
これにより約40分待機をしてもずれ15ほどという今までよりも安定した調整ができるようになりました。もっとデータを集めてさらに近い数値がわかればより安定すると思います。 これが3つ目の進化です。 FlowTimerのFPS:59.8261を使いましょう。


あとは細かい注意点が見つかりました。
・セーブを行うと初期seedが全く別の値になってしまい、基準seedを特定し直すことになってしまいます。ふしぎなカードの並べ替えのときにもセーブが行われるので同様です。
・タイトル画面でAを押し初期seed決定後、続きから始めるを選択し画面が暗転しBGMが流れ始める頃までの間は、フィールドに出た以降と比べて消費の進みが約1/2であることがわかりました。初期seed決定後はフィールドに出るまでA連打する必要があります。



さて、前置きが長くなりましたが簡単に流れを紹介します。今回はORASでの配達員乱数を例とします。
流れはだいたいかけらさんの記事と同じなので、そちらを先に目を通しておくことをオススメします。(この記事を一度読んで全然意味がわからないと思った方は、必ずかけらさんの記事を読んで、ある程度理解してから戻ってきてください。なにが変わったのか理解しやすいと思います。)


Step 1 準備


準備するもの


3DSRNGTool
FlowTimer
個体値カリキュレーター
Excelスプレッドシート(あったら便利)

ひみつのコハク ×2
ふしぎなアメ ×20くらい

手持ちに空きを最低2つ作り、カナズミシティのデボンコーポレーションの2階にいる研究員の前でセーブしましょう。

やっておいた方がいいこと

ひみつのコハク以外のカセキを全て売却orポケモンに持たせる ・ふしぎなアメを回復ポケットの1番上に配置する

基準seedの特定

基本的にかけらさんの記事と同じです。 3DSRNGToolのGen6 Main RNG Seed FinderにあるBy IVs of two wild Pokemonの方が若干計算が速かったと思うのでそちらを使っても大丈夫です。(計算開始時にエラーが出ますが無視して続行でOK)
野生ではなくプテラの受取でやる都合上フレーム範囲は変わってるのでそのあたりは固定乱数タブを使用し自分で調べてください。(忘れてしまったので次やるときに追記しときます。)
【追記】プテラを使用した場合の消費数目安

  • ORASで行ったときの消費数目安
  • XYで行ったときの消費数目安 f:id:larvesta10:20200801133508j:plain 範囲ではなく実際に出ている消費数を目安に広めに範囲をとってください。自分は慣れているので範囲を狭めていますが初めから狭めて検索をすると結果が出ないことがあります。


Step 2 実際の調整


タイマースタートと個体値の特定

ゲームを起動し、タイトル画面でAボタンを押したタイミングで初期seedが決まるので、同時にFlowTimerをスタートさせます。FPSの設定を59.8261にするのを忘れないように。現時点では、待機時間については何も考えなくて大丈夫です。
そのまま連打で続きから始めるを選択し、プテラの受取まで行います。前置きで言ったように、続きから始める選択までは消費の進みが遅いので、しっかりと連打をしないと安定しません。
ちなみにプテラの個体決定タイミングは、よくあるファンファーレが鳴ったりポケモンが鳴いたりするときの画面とは違い、下の画面でAを押したときです。ここまでは連打を頑張ってください。
受け取りが終わったら個体値をある程度確定させましょう。飴3〜4個使えば十分だと思います。

初期seedの特定

ある程度確定させられたら、3DSRNGToolのGen6 Main RNG Seed Finderにある By info of a wild Pokemonを使い、今回の初期seedを特定します。 (このウィンドウを開いてる間、メインウィンドウが使えなくなってしまうので、3DSRNGToolを2つ起動することをオススメします) まず、Step.1で特定した基準seedをSeed検索範囲の左側の欄に入力します。右側の欄は上から2桁目が+1されてれば十分すぎる範囲でしょう。
そして先ほど調べた個体値をスペースで区切り、個体値範囲のUpper(最大)とLower(最小)に入力します。性格も選択しておいてください。

検索範囲は自分の環境(new2DS LL)で連打で受け取った場合は約680Fの個体を引くことが多かったのでその付近を取ってますが、慣れないうちは少し広めに600〜800Fとかにしておいてもいいかもしれません。
右に出てきたseedが今回の初期seedです。複数出てきた場合は自分の引きやすいフレームに近いかどうかや、基準seedから離れすぎていないかどうかで判断できます。詳しくはさき先生の記事より引用。

・初期シード
本体とセーブデータに依存する値にミリ秒を足した値のよう。
セーブし直さずに同じ本体で2回起動すれば、初期シードの差はおおよそ起動時間ミリ秒の差になる。
そのため同じセーブデータを使用すれば、サンムーンと異なり初期シードの範囲を絞り込むことが可能。(ソフトリセットでもOK)
初期シードはタイトル画面でのAボタンを契機として決定されると思われる。
(XYで待機時間を変更して確認、ORASは正確には未検証)
ちなみに本体の時間を変えても関係なく初期シードが変わったので、変えるだけ無駄です。
(本体初期化での挙動は未確認)

目標個体決め

初期seedがでたらそれをメインウィンドウの初期seedにコピペし、個体検索します。
初期seed特定のために個体値の特定などで時間をかなり使っているので、スムーズに進んでいても狙う最低フレームは15000くらいになると思います。自分の場合はだいたい25000〜130000あたりの個体を狙うことが多いです。

待機フレームの設定

目標個体が決まったらそのフレームに空白時間を足して、FlowTimerに入力します。Submitを押すと時間の変更ができなくなるので待機時間は慎重に決めましょう。
自分の場合の空白時間は、40,000〜60,000くらいまでの個体を狙うときは628でした。
48320 + 628 → 48948をタイマーに入力します。
このときFlowTimer上に表示されるのは秒数のカウントアップであり、フレーム表記ではないので、Excelなどで待機時間のフレームを秒数に変更しておくと、タイマーが何秒で終了するかがわかるのでいいと思います。
今回ならば818秒ですね。

個体の受取

配達員乱数の個体決定タイミングは画像の画面です。フィールドの消費速度は安定しているように感じたので、ここまで進めるのはタイマーを設定する前でも後でもいいと思います。

タイマー終了と同時に個体を受け取り、目標の個体なら成功です!お疲れ様でした!

こちらが実際に成功した個体です。
ひかえめ 31/ 02/ 30/ 31/ 31/ 31 めざ氷


自分はまだやってませんが、固定乱数や孵化乱数にも応用できると思いますので興味がある方は試してみてください。
また、成功してもしなくても目標フレーム、使った空白時間、実際のズレなどはメモしておいた方がいいと思います。FlowTimerのFPS設定でズレが少なくなったとはいえ待機フレームに差が出れば多少はズレていきますから、今後の空白時間決めのためにデータとして残しておきましょう。
自分はこんな感じにメモしながらやってました。


なにかわからないことがあればTwitter(@larvesta10 )かDiscordで連絡くれると反応しやすいと思います。


それでは72%のみなさん、期待してますよ^-^