- ポケモン第6世代(XY/ORAS)の配達員乱数調整の方法を簡潔にまとめた。
- 記事内ではORASを例に説明。XYでも同様の方法で乱数調整ができると思われる。
- 乱数調整の基本的な知識を前提として記述。具体的にはseed、フレーム数、消費数など。
実行環境
筆者の実行環境は以下の通りです。
これ以外の環境で実行できないということではありません。XY、New3DSでも可能だと思われます。
- ROM:オメガルビー
- ハード:3DS LL(Newではない旧型)
0. 事前準備
0-1. ツールをダウンロードする(3種)
以下の3つのツールをパソコンにダウンロードしてください。
- 3DSRNGTool
- 目標個体が出るフレーム数を検索するのに使用します。
- リンク先(GitHub)から「3DSRNGTool.exe」をダウンロードしてください。
- 6genSeedSearch
- 初期seedを特定するのに使用します。
- リンク先(ぼんじりさんのブログ)から最新版をダウンロードしてください。
- CCTimer
- 目標フレームまでカウントダウンしてくれるタイマーです。カウントを始めた後に目標フレームを設定できるという特徴があります。
- リンク先(ぼんじりさんのブログ)から最新版をダウンロードしてください。
- [Setting] タブでFramerateを [NDS/3DS] に設定します。
0-2. 表計算ソフトを準備する
ExcelやGoogleスプレッドシートなど。
詳しくは後述しますが、第6世代の配達員乱数調整を成功させるためには空白時間という数値を特定する必要があります。その推計に表計算ソフトを使います。
筆者は下の画像のようなスプレッドシートを使いました。
項目の説明
・目標個体F: 3DSRNGToolで検索した、目標個体が出るフレーム数。
・設定した空白F: フレーム数換算の空白時間。この値を正しく推定することがこのシートの目的。
・待機F: CCTimerに設定したフレーム数。目標個体F + 設定した空白F。
・待機秒数: 待機F ÷ 59.8261
・実績F: 受け取った個体から特定した、実際に消費されたフレーム数。
・Fズレ: 目標個体Fと実績Fとの差。
・空白F推計: 待機F – 実績F
0-3. ゲーム内の準備をする
ふしぎなカード
乱数調整したい配布ポケモンのふしぎなカードを先頭に配置します。
ひみつのコハク
ひみつのコハクを2つ以上用意します。初期seedを特定するのに、プテラを2匹復元するためです。
また、ひみつのコハク以外の化石がバッグの中にない状態にしてください(売る、BOX内のポケモンに持たせるなど)。
- ひみつのコハクの入手方法
- ORAS:マボロシの場所の壊せる岩から確率で入手。
- XY:輝きの洞窟の壊せる岩から確率で入手。
ふしぎなアメ
ふしぎなアメを20個以上用意します。初期seedを特定するため、復元したプテラのLvを上げて個体値を特定します。
また、ふしぎなあめをバッグの回復ポケットの一番上に配置してください。
手持ちポケモン
手持ちに2匹以上の空きをつくります。プテラを復元した際にBOX転送するかどうかの選択肢を表示させないためです。
全て準備ができたらカナズミシティにあるデポンコーポレーション2Fの、化石を復元してくれる研究員の前でレポートを書きましょう。
1. 基準seedを特定する
最初に特定する初期seedを特に「基準seed」と呼びます。
第6世代の乱数調整では第4世代のときのように、狙った初期seedでゲームを起動させることができません。
そのためゲーム起動後に初期seedを特定し、その初期seedなら何フレーム後に目標個体が出るか、という方法で乱数調整を行います。
初期seedの特定は総当たりで行うためかなり時間がかかります。
しかし第6世代の初期seedは起動時間(ミリ秒単位)だけズレていくという特性があり、この特性を利用すると2回目以降の初期seed検索範囲を大幅に絞り込むことができます。
つまり、まず総当たりで1回目の初期seed(= 基準seed)を特定する。2回目以降は前回のseed値よりも大きく、かつ前回特定作業からの経過時間を足した値より小さい範囲でseed値を探せばよいということになります。
seed値の特定は化石から復元したプテラの個体値を使います。
- ソフトリセット(SELECT + L + Rボタン)しタイトル画面へ。
- タイトル画面(「PUSH START BUTTON」と表示されている画面)でAボタンを押下し、以降はプテラ受け取りまでAボタンを連打する。
- 連打するのはプテラ受け取りまでのフレーム数をできる限り安定させるため。
- 研究員からプテラを2匹受け取る。受け取り終わったらAボタン連打は終了してOK。
- プテラ2匹の個体値を特定する。
- ポケモン徹底攻略の個体値カリキュレーターを使うとよいです。
- 6genSeedSearchの [基準seed検索] タブで必要な情報を入力し [検索] を押下。基準seedを検索する。
- 消費範囲
- 1匹目:600~800(XYの場合は500~1,000)
- 2匹目:1,500~1,700(XYの場合は1,500~2,500)
- 消費範囲
- 検索結果をメモする。
2. 初期seedを特定する
先ほど特定した基準seedで範囲を絞り込み、改めて初期seedを検索します。今回復元するプテラは1匹でよいです。
- ソフトリセット(SELECT + L + Rボタン)しタイトル画面へ。
- タイトル画面(「PUSH START BUTTON」と表示されている画面)でAボタンを押すと同時に、CCTimerの [CountUpTimer] タブの [Start] を押下する。以降はプテラ受け取りまでAボタンを連打する。
- 連打するのはプテラ受け取りまでのフレーム数をできる限り安定させるため。
- 研究員からプテラを1匹受け取る。受け取り終わったらAボタン連打は終了してOK。
- 6genSeedSearchの [初期seed検索] タブで必要な情報を入力し [検索] を押下。初期seedを検索する。
- 検索条件:実数値(化石)
- 消費範囲:600~800
- 種族:プテラ
- Lv:20
- 基準seed:先ほど求めたseed値を入力。また2回目以降はn回目の初期seedがn+1回目の基準seedとなります。
- 性格、実数値:受け取ったプテラの性格と実数値をそれぞれ入力。
- ステータス上昇値:ふしぎなアメでプテラのレベルを上げていき、ステータス上昇値(HABCDSの順)を1行ずつ入力。5Lv分あれば十分。
- 検索結果が出たらメモし、 [キャンセル] を押下する。
- 検索は自動では終了しません。 [キャンセル] を押下しないと検索し続けます。
※理由は後述しますが、ソフトリセットしてから個体値を特定するまでのゲーム内の操作はできる限り毎回固定してください。特に画面遷移。
3. 目標個体までの消費フレーム数を求める
初期seedが特定できたら、何フレーム後に目標個体が出るかを検索します。
- 3DSRNGToolの [配達員乱数] タブで必要な項目を入力し [計算] を押下。目標個体までのフレーム数を検索する。
- 画面右上
- ROMのバージョンを選択。
- 先ほど調べた初期seedを入力。
- Event Setting(中段左側)
- 配布ポケモンの情報を入力。種族、何V固定か。特性、性格、性別が固定されているかなど。
- フィルター(中段中央)
- 目標個体の条件を入力。個体値、性格、めざパのタイプなど。
- 検索範囲(中段右側)
- 検索するフレームの範囲を設定。目標個体の条件が厳しいほど範囲を広げる必要がある。
- 画面右上
4. タイマーをセットする
狙ったフレーム数で個体を受け取るため、カウントダウンタイマーをセットします。
- CCTimerの [CuntUpTimer] タブで待機フレーム数を入力する。ここで待機フレームとは次の2つを足した値。
- 目標個体までのフレーム数
- 先ほど3DSRNGToolを使って検索したフレーム数のこと。
- 空白時間(フレーム数換算)
- ゲームプレイ中にフレームが進まない時間のこと。
- ゲーム画面が切り替わる際の黒い画面などがこれにあたると思われる。
- 空白時間の特定方法については記事の最後で詳しく解説。初回はひとまず600とかでOK。
- 目標個体までのフレーム数
5. 配達員の前まで移動し待機する
個体決定直前まで操作し、CCTimerのカウントダウンがゼロになるまで待機します。
- カナズミシティのポケモンセンター内にいる配達員の前まで歩いて移動し話しかける。
- 「〇〇は××を受け取った!」というメッセージが表示されるまで会話を進める。
- 個体の決定はこのメッセージ画面でAボタンを押下したタイミングです!このメッセージが出たタイミングではありません。
※理由は後述しますが、デポンコーポレーションの研究員の前からポケモンセンター配達員の前まで移動する操作は、できる限り毎回固定してください。
6. 配達員からおくりものを受け取る
CCTimerのカウントが0になると同時にAボタンを押下します。
ステータス等を確認し目標個体が出たら終了です。おめでとうございます!
7. 失敗した場合:空白時間を推計する
目標個体が出なかった場合は次の試行の精度を上げるため、空白時間がいくつだったかを推計しましょう。
空白時間は以下の式で求められます。
空白時間(フレーム換算) = 待機フレーム数(CCTimerに入力した値) – 受け取った個体のフレーム数
- 3DSRNGToolの [配達員乱数] タブで必要な項目を入力し [計算] を押下。受け取った個体までのフレーム数を検索する。
- ROMのバージョンや初期seedなど(画面右上)
- 目標個体までのフレーム数を求めたときのままにしておく。
- Event Setting(中段左側)
- 目標個体までのフレーム数を求めたときのままにしておく。
- フィルター(中段中央)
- ラジオボタンで [実数値検索] を選択。
- 受け取った個体の情報を入力。ステータス実数値、性格など。
- ROMのバージョンや初期seedなど(画面右上)
空白時間が求まったら、基準seedを今回の初期seedに置き換えて 2. 初期seedを特定する からやり直しましょう。
8. 成功させるポイント:空白時間の推定と行動の固定化
第6世代の乱数調整のポイントは、59.8261分の1秒のタイミングを合わせることと、空白時間を正しく設定することです。
タイミング合わせは慣れるしかないとして、空白時間を正しく設定するには少しアタマを使う必要があります。
具体的には空白時間の式の推定と、試行毎の行動の固定化です。
8-1. 空白時間を推定する
経験上、どうやら空白時間は目標個体までのフレーム数が大きいほど短くなる傾向にあるようです。
筆者の環境で集めたデータを回帰分析すると
- y:空白時間(フレーム換算)
- x:目標個体までのフレーム数
としたとき、
y = 617.66079389 – 0.00005451 * x
という式が得られました。
ただしこの推定式はROMのバージョンや3DS本体の種類によって異なる可能性あります。それぞれの環境で式を推定する必要がありそうです。
8-2. 行動を固定する
空白時間を推定するには正しいデータが必要です。そのためにはゲーム内の操作をできる限り固定させることが重要です。
空白時間は主に画面切り替えの際に発生していると思われるため、特に画面遷移は毎回同じになるよう気を付けましょう。
参考文献
配達員ではなく固定シンボル乱数ですが、第6世代乱数調整に関する基本的な内容が説明されています。
第6世代の配達員乱数について説明されています。
上の記事を書かれた方が乱数調整を実演されている貴重な動画です。
コメント