かけらの記録ノート

かけらの記録ノート

主にポケモンの乱数について語るブログ

【コロシアム乱数】まばたきによるシードの特定

今までのコロシアム乱数ではシードの特定に「とにかくバトル」を使っていたため、ゲームをロードする前のタイトル画面の間でしかシードの特定は不可能でした。そのため、セーブが特定の場所でしか行うことができないコロシアムでは移動の際に生じるnpc消費などが原因で一部の乱数調整が不可能に近い難易度とされていました。しかし、調査によってゲームをロードした後に乱数を観測する方法が見つかったため今まで困難だった一部の乱数が簡単にできるようになる可能性が出ています。今回はその仕組みと作成したツール、それを利用した乱数調整のやり方について説明します。

・仕組みについて
ポケモンコロシアムではポケモンのステータスを表示している間、瞬きをするかの判定に乱数が使われています。 f:id:sina_poke:20200215205051p:plain 1Fあたりに1度、瞬きするかの判定が行われ、判定をクリアすると瞬きが発生するという仕組みです。瞬き判定が通ると瞬きが発生し、およそ5Fの間消費が止まります。この仕組みを応用することで、現在シードの特定や消費の調整ができます。

・乱数調整のやり方
説明にはCoToolを使ってゆきます。 sina-poke.hatenablog.com

まばたきによるシードの特定には、主にツールの「まばたき検索」タブを使います。やり方の説明には、前回記事にしたスイクンを例にとって進めます。

①準備
適当なダークポケモンブラッキームウマを手持ちに入れておきます。ダークポケモンは主にフィールド上での消費を行うために使います。ダークポケモンならどのポケモンでも大丈夫です。ブラッキームウマと合わせて消費の微調整を行うために使います。ブラッキーではなくともまばたきをしないポケモンなら大丈夫です。ムウマはまばたきを観察してシードの特定と調整を行うために使います。ムウマでなければならないということはなく、他のまばたきをするポケモンを使うこともできますが、目がでかいムウマが一番まばたきを見やすいので推奨です。ムウマが使えないストーリー序盤のポケモンの場合などはエーフィで代用できます。

②大まかな強制消費の特定
大雑把で構わないので、まず初めに目標までの強制消費を特定します。これは今までのやり方と同じです。とにかくバトルでシードを特定し、スイクンの部屋まで移動、捕獲をして強制消費を特定します。欧州版では大体「17000」あたりの消費を取ることが分かりました。これをメモしておきます。

③まばたきを利用したシードの特定
初期シードを特定し、スイクンの部屋まで移動します。ここで、まばたきを利用したシードの特定を行います。
ツールを起動し、シードの欄に最初に特定したシードを入力し、消費数に①で求めた強制消費の値から+10000程度の範囲を取って入力します。
f:id:sina_poke:20200712001604p:plain まばたきによるシードの検索には、まばたきの間の待機時間を入力します。これには、キーボードによる入力を使います。左下の「開始」ボタンを押すと入力待ち状態になります。
この開始を押して入力待ちの状態にした後、ムウマのステータスを開きます。そして、ムウマがまばたきをするのと同時に「Shiftキー」を押します。ちゃんと開始が押されていれば、キーボードの入力とともにまばたきの間隔がツール上に現れるはずです。ここで注意なのですが、最初のまばたきはスルーして2回目以降のまばたきから入力してください。7個程度入力すれば十分だと思います(1個目の結果は間隔を求めるための基準となるので、必ず0になります)。入力が十分だと判断したら、入力する最後のまばたきが終わるとともにできるだけ早くステータス画面を閉じます。待機時間の微妙な誤差によって消費がずれてしまうので、できるだけずれが起きないようにします。
そして「計算」をクリックします。入力が正しい場合はうまく結果が出るはずです。 f:id:sina_poke:20200712001620p:plain ここで、結果に出る現在のシード(仮)は、厳密には正しいものではありません。ツールに入力した最後のまばたきが起こった段階での消費数でのシードを指します。実際には最後のまばたきから少し時間が空いて手持ちの画面に戻るので、実際に表示されたシードよりも少し後にいることになります。次は、このシードの誤差を特定し、目標のシードを調整するための準備を行います。

④タイミングの調整とオフセットの特定
まず初めに、オフセットについて説明します。オフセットとは、Bボタンでステータス画面を閉じてから完全に手持ちの画面に移行するまでの待機フレームを表します。実際に目標のシードに調整する場合は、この時間だけ少ない待機時間を設定する必要があります。人によって目押しのタイミングに誤差はあると思うので、これをあらかじめ求めておく必要があります。
上で求めた現在のシードをツールのシード欄に入力し、消費数の範囲を「0~6000」程度に取ります。これは、タイミングを合わせるまでの猶予時間なので、短いと思った人はもう少し長めに設定しても良いです。そして、「リストを表示する」にチェックを入れて、計算をクリックします。
f:id:sina_poke:20200712001641p:plain 正しく入力されていると、このように、消費数の範囲でのまばたきの時間が表示されます。この状態になると、画面中央にある「BlinkTimer」が開けるようになると思うので、これを開きます。
f:id:sina_poke:20200712001701p:plain:w300
このような画面が開きます。終了時オフセットに「0」が入力されているのを確認しておきます。そして、ムウマのステータスを開くと同時にタイマーの「開始」をクリックします。③でもとめたシードが正しい場合、タイマーから鳴る音の間隔とまばたきの間隔が一致しているはずです。もし一致していなかったら③からやり直してください。
ここから、タイマーの音とまばたきの間の誤差を修正していきます。タイマーについている「早くする」「遅くする」をクリックして、タイマーの音とまばたきのタイミングが合うように修正していきます。うまくまばたきとタイマーの音が一致したあとは、タイマーが終わるまで待機します。そして、タイマーが終わると同時にBボタンで手持ちの画面に戻ります。このときの消費数をメモしておきます。
f:id:sina_poke:20200712001729p:plain そして、スイクンを捕獲し、ツールに入力してあるシードから強制消費を求めます。
f:id:sina_poke:20200215212656p:plain この強制消費と上でメモした消費数からオフセットを求めることができます。
ツールで目標の消費数にメモした消費数を入力し、「オフセットを計算する」にチェックを入れます。そして、出てきたボックスにスイクンの強制消費を入力します。
f:id:sina_poke:20200712001807p:plain 計算をクリックすればオフセットの値が出ます。ここまでの過程を何度か行って、自分に合うオフセットを見つけてください。私の場合は、欧州版では9前後の値で安定しました。実際に乱数調整する場合には、このオフセットを中心として前に5F、後ろに4Fの猶予があります。したがって、これらの範囲に収まるオフセットなら何でも問題ありません。

⑤目標の個体の乱数
初期シードの厳選を行い、目標個体までの消費数が2億以内のもの引きます。その後、ゲームをロードしてスイクンの前まで移動します。そこで②と同じように現在シードを特定してください。 f:id:sina_poke:20200712001620p:plain シードが特定できたら、ダークポケモンのステータスを表示することで消費を行います。 f:id:sina_poke:20200322200921p:plain この画面の間、およそ17200/sの速度で消費が進みます。残りの消費数から余裕を持つようにしてタイマーを設定し、消費を行います。消費が終わったら同じように瞬きによるシードの特定を行います。 これを何度か繰り返して目標の個体までの消費数が20000~30000程度になるまで調整してください。 この後は、「ダークポケモンのステータスを開いてすぐに閉じる」という動作を繰り返すことで1度に2000~3000消費されるので、これを繰り返して消費数が6000程度になるまで調整します。※画像では少し余裕を持って12000としています。 f:id:sina_poke:20200712001901p:plain 消費の調整が終わったら、目標の個体までの消費数をツールのシード欄に求めた現在シードを入力し、「目標の消費数」を選択して、xdpokemonで出た消費数を入力します。そして検索をクリックします。 f:id:sina_poke:20200712001919p:plain 目標の消費数として複数候補が出ると思いますが、基本は一番下に表示される「残りの消費数」が一番少ないもので良いと思います。目標の消費数が決まったら、「消費数を指定」を選択して、消費数の範囲を「0~選択した消費数」とします。そして④で行ったようにリストを表示して、タイマーを起動します。ここで、「終了時オフセット」に④で求めたオフセットを入力します。後は同じようにタイマーを開始し、まばたきのタイミングを調整していきます。
f:id:sina_poke:20200712001933p:plain そして、最後のタイマーのカウントが終わると同時にBボタンで手持ちの画面に戻ります。

ここまで来ることがができれば、最後のタイマーで大きなずれでも起きない限りは、ツールに表示された現在のシードとゲーム上のシードが一致している状態になっているはずです。ここからポケモンのステータスを表示する動作とスナッチリスストを開く動作を組み合わせて消費を調整します。

ぼんじりさんのツイートにあるように、「ポケモンのステータスを表示してすぐに閉じる」という動作を繰り返すことで1度に4消費できます。ツールに表示された回数分だけステータスとスナッチリストによる消費を行うことで目標の消費数に調整します。ここで注意として、ツールに表示してある通りにステータス指定回数→スナッチリスト指定回数の順に消費を行うようにしてください。逆に行った場合や交互に行った場合だと消費がずれることがあります。 その後は目標のポケモンとエンカウントしてください。個体値が正しければ成功です。

f:id:sina_poke:20200214161319j:plain
とても長くなってしまいましたが、以上で説明は終わりです。
~Fin~