見出し画像

【ポケモンRSEm乱数調整】RS乱数が時代に追い付いた話 ~ 絵画seedの紹介 ~

はじめに

この記事はPokémon Past Generation Advent Calendar 2021 1日目の記事です。

 こんにちは、夜綱です。今年もアドベントカレンダーの季節がやって参りました。でもPokémon RNG Advent Calendarは、主催のmizdraさんが忙しいみたい。残念。代わりと言っては何ですが、過去作なら何でもありのカレンダーを立てました。
 ポケモンの最新作と言えば、ついこの前に待望のダイパリメイクことブリリアントダイアモンド・シャイニングパールが発売され、年明けにはアルセウスが控えていますね。乱数調整では、さっそくBDSPの乱数調整が確立され、ツール待ちの状態。そしてなにやら剣盾の乱数調整にも動きが…?
 まだ埋まっていない枠はたくさんあるので、みなさまの参加をお待ちしています。ちなみに、BDSPが発売されたので剣盾は過去作ですし、過去作であるダイパのリメイクなのでBDSPも過去作です。最新世代の3世代もなぜか過去作扱いらしいです。

序文

2021/11/14の日本時間早朝にTwitterに投稿されたあるツイートが乱数界を震撼させた。

なんと、ミナモ美術館に飾られているコンテスト優勝ポケモンの絵を調べると、seedがフレームカウンタの値にリセットされるという。急いで確認したところ、確かにseedが書き換わってる!!!!!

この発見は『絵画seed』と名付けられ、休眠していた3世代乱数勢は急いでGBAとRSEmを取り出したという……。

「で?」
「なんでそんなに興奮してるの?」


いや、マジでやばいんですよこれ。
なにがやばいのかご理解いただくために、まずはこの現象が発見される以前の3世代乱数の状況を説明いたします。

3世代乱数における各バージョンの現状の評価

Em

 バトルビデオを再生する際にseedが対戦が行われた時点のもので上書きされる通称BV保存と、近年(と言ってももう5年くらい前)発見された、ゲームを初めからプレイするときに限り、ID決定のタイミングで初期seedがランダムに決定される仕様TIDseedにより、乱数調整の自由度・簡単さ共に3世代No.1。最近ではついにID調整も可能になったことで欠点らしい欠点がほとんどない。

FRLG

 初期seedが不定で、初期seedの制御のために目押し回数が1回多いため、難易度が高い印象を持たれがちだった。しかしこれは裏を返せば、初期seedを適切に選ぶことで、現実的な待機時間で理想個体を入手可能ということでもある。待機時間と初期seedの対応を細かく調べて公開してくださっている方もいるので、ありがたく使わせていただきましょう。
 さらに、おしえテレビのメニュー画面を開いている間は背景のノイズを生成するために1フレームあたり312も乱数が消費されるため、超高速での乱数消費(通常の1消費と合わせて313倍の消費速度!)が可能。これらの組み合わせにより、手軽(?)に理想個体が入手できる。ただしおしえテレビを使う場合は3台のタイマーで3回も目押しを行う必要があり、難易度は若干高い。

おしえテレビ
おしえテレビのメニュー画面。背景のノイズを描画するために大量の乱数が消費される。


RS

 大枠はEmと似た感じだが、電池を入れると内部時計の時間に応じて初期seedが変動する。ただし分刻みでしか初期seedが変動しないため、理想個体を入手するためには、初期seedを合わせるためだけに数日待機するか、起動後の待機時間を長くとるかの二択になりがちで、いずれにしても試行回数が稼ぎづらい。かつてはID調整が容易なことから一定の需要があったが、最近ではEmでもID調整が可能になってしまった。一応、Lv.45のグラカイやポケモンボックスを利用したメソッド4レックウザ、メソッド2以外の野生個体という唯一性はある。

Co/XDはほぼ別物なので割愛。

…というわけで、言ってみればRSは採用することに理由が必要というレベルだったわけです。

絵画seedの詳細な説明

いったんここで絵画seedをもう少し掘り下げておきます。

  • この事象はRS・Emのどちらでも発生する。

  • 絵を見たタイミングのフレームカウンタの値でseedがリセットされる。

    • フレームカウンタの値を見ているので、不定NPCによる乱数消費などの影響は一切受けない。

  • リセットされる値は16bit(16進数で4桁)で、65536フレームで0に戻る

    • 『経過フレームを65536で割った余りがseedになる』と考えて良い。

  • 絵はミナモ美術館の2Fに飾られているものに限らず、各地のコンテスト会場に飾られている絵でもいい。

  • 自分のポケモンが書かれている必要は無い。

    • つまりコンテストで優勝しておく必要はない。

最大でも20分程度の待機時間で全ての初期seedを出せる計算になります。FRLGと違って狙った初期seedが出る待機時間を計算することができ、しかもFRLGよりも安定します。

絵画seedによってRSEmの乱数調整がどう変わるのか?

Em

 世紀の大発見であったTIDseedを利用する理由がほぼなくなった。データリセット不要、BV保存のための通信不要、そもそもTIDseedを厳選するために追加でEmを用意する必要がない。絵画seedはTIDseedの上位互換。

RS

 ついにEm・FRLG並みの自由度が手に入った。ただしBV保存ができるEmと違って、絵画seed合わせからそのまま個体の乱数調整までを行う必要があるので、多少難易度は上がる(フレーム合わせ2回に加えて、移動中にNPCやエンカ床の判定を踏むことによる不定消費が入る。エンカ判定はスプレー使用中でも入る)。そしてID調整は従来通り長時間待機or電池ありでやるしかない。
 RS乱数の最高峰と言えばメソッド4レックウザだが、毎回空の柱を登る必要があり、ミスするとエンカ判定による消費数が変わってしまって安定しなくなるので、難易度はかなり高いと思われる。挑戦者お待ちしております。

今後の展望

 Coの瞬きのようにメニューからseedを特定し、タイマーと同期させることができれば、レックウザも安定するようになると考えている…が、具体的な手法は思いついていない。無理かもしれない。
 あとはRSのID調整が楽になれば完璧なのだけれど…。

絵画seedを利用した乱数調整の一例

目標個体を出現させるのに適した絵画seedを選ぶ

 これは3genSearchの機能を組み合わせれば可能です。

個体逆算タブで『開始seed』を調べ、

その他タブの『初期seed検索』を開き

『目標seed』に先ほどの『開始seed』の値を入力し、『初期seed全探索』にチェックを入れ、消費数の範囲を設定して計算ボタンを押せば、結果が出力されます。上の例では、初期seed 0x5433で37294フレーム待機すれば、ひかえめ6Vが出ることがわかります。0x5433は10進数に直すと21555なので、21555フレーム待機してから絵を見て、そこから37294フレーム後に固定シンボルに話しかけましょう。

 ちなみに絵画seedのズレはRSだと-63F、Emだと-71Fくらいになるらしいです。実際に調整する際はこのズレを補正するために、タイマーには+63/+71した値を入力しましょう。

また、3genSearch v2.5.3の既知のバグとして、個体逆算タブの出力においてmethod2とmethod4が逆に表示されてしまっているので、適宜読み換えてください。

絵画seedのズレを調整する

 RSでは引いた個体から絵画seedのズレを調整する必要があります。
目標の絵画seedの前後を打ち込んで検索しましょう。

将来的にはここにたくさん手打ちしなくても良いようにしたいと思います。。。

Emの絵画seedのズレをコンテストから特定する

 コンテスト会場で絵を見てからコンテストに出場することで絵画seedのズレ調整ができるツールをぼんじり氏が公開されています。最初の数回はこれを利用してズレ調整をすると良いでしょう。RSではNPCの候補が少なすぎて特定が難しいため、未対応とのことです。

バトルファクトリーで絵画seedの特定とBV保存を同時に行う

 Emで絵画seedとBV保存を組み合わせる場合、BV保存を行う前に引いている絵画seedを特定できるのが望ましいです。ここではバトルファクトリーのレンタルポケモンを見て特定を行う方法を紹介します。

 ミナモのコンテスト会場で絵を見てからバトルファクトリーまで直行し、Lv.50ルールの1周目(シングルorダブルは不問)を開始、レンタルポケモンの画面まで進めます。レンタルに並んだポケモンの名前を左から3匹入力すると、絵画seedの候補が出力されます。ここで目標のseedが引けていれば、そのままBV保存し、そうでなければ1戦目で降参しましょう。seed特定とBV保存が流れで行えます。一方で欠点として、失敗すると手動でミナモまで戻ってセーブし直す手間がかかります。
 また、このツールを動かすためには .NET Coreのランタイムをインストールしておく必要があります。普段のツールで使っているのは.NET Frameworkという別の環境なので、3genSearch等は動くのにこのツールは動かないという方は、ランタイムが入っているか確認してみてください。

ぽえむのコーナー

--- 読み飛ばしてもらって構いません ---

 10年ほど前では考えられなかったことだが、ついに3世代乱数においても、4世代乱数と同様に『目標個体から初期seedを逆算して乱数調整を行う』というスタイルをメインに据えることが可能になった。
 現在の3genSearchのような『初期seedと検索範囲から条件に合う個体を探す』という方法は、Emで孵化親を探す際に性格一致1V程度の個体を手っ取り早く捕まえたいときか、適当に色違い個体を捕まえて遊びたいときくらいにしか行う意味はなく、もはや機能として提供することでユーザを不要な混乱に陥らせたり、非効率的な検索がスタンダードな方法であるかのような間違った認識を植え付けたりする弊害の方が大きくなったと言わざるを得ない。去年のポエムはこんな感じの考え方に根差していたものだったのだが、結局あれから1年経っても、あまり進捗は無い。時間が無え~~~~

終わりに

2日目の担当はすしろいどさんによるぺラップの動く立ち絵配布です。楽しみですね。乱数調整と言えばペラップ、ペラップと言えば乱数調整ですからね!


この記事が気に入ったらサポートをしてみませんか?