ぽけどころ

ポケモンについて深く考える

ポケナビ乱数のすゝめ

 

この記事はPokémon RNG Advent Calendar 2018 4日目の記事です。

adventar.org

前置き

誘われたので Pokemon RNG Advent Calender を書かせていただくことにしました。乱数関連なら何でも?というか乱数関連じゃなくてもいいくらいには気楽に書いてもらえればよいということなので、発見時の流れみたいなのも織り交ぜながらものすごく簡潔にラフに気軽に書いていこうとおもいます。  

 

ポケナビ乱数とは何ぞや?

事前知識として「ポケナビ」とは、ポケットモンスタールビーサファイアエメラルドでのみ使用できるウンマップバトルサーチャー(エメラルドのみ)などいろいろな機能を組み込んだ便利アイテムです。

f:id:taiyaki3gen:20181203015044j:plain

それで「ポケナビ乱数」とは、いろいろあるポケナビの機能の一つであるエントリーコール部分を乱数調整することを指しています。つまりエメラルドでしかできないのでご注意ください。

「エントリーコール」とは先ほど言ったポケナビの機能であるバトルサーチャー機能、言い換えればトレーナーが再戦可能であるか判断できる機能です。ただし利用するのは再戦機能ではなく、エントリーコールの機能のもう一つの機能、とある条件下でランダムでかかってくるトレーナーからの世間話です。つまり「ポケナビ乱数」とは、このランダムでかけてくるエントリーコール相手を乱数調整します。

 

ポケナビ乱数の有用性

はっきり言います。孵化乱数の効率が格段に上がります。色違いにしたい人はパッチールを使用する必要もありません。そもそも性格値固定でいちいち「レポート→孵化→失敗→預け直し→歩いてセーブ」などというめんどくさいことはしなくてよくなります。世の中時短時短です!!

最初に目を付けたのはポケナビのかかってくる条件でした。実はこれに関しては処理が割れていました。具体的なことは省きますが、ゲーム開始及びマップ移動でポケナビが受信可能なマップに移動したのち10歩目に30%(手持ちポケモンの先頭が特性「ひらいしん」なら60%)の確率でエントリーコールがかかってきます

エントリーコールの内容は、自己紹介(こんにちは○○ですみたいなの)+世間話(××捕まえたの~)といった2段階に分かれていて、自己紹介部分は上記で説明した10歩目のタイミング、世間話は自己紹介後のボタン入力タイミングで決まっているようです。今回重要なのは自己紹介部分です

ポケナビ乱数では自己紹介で名乗ってきたトレーナーの名前により、ある程度の自分のいるSEED(正確には違うけど簡単に言うと自分のいる位置のことです。基本的に1Fで1回次の位置に移動し、さらに何かランダム事象が発生するたびに1~回次の位置に移動します。この移動することを消費といいます。514消費と言ったら514回次に移動したんだなってことです。)がわかります。

孵化乱数は、乱数調整の成否が孵化してみないとわからないという時間的欠点が固定シンボル乱数といったほかの乱数調整に比べると大きいです。実際沼にはまると5時間は成功しないかもしれない厄介ものでした。しかし、それを解決してくれたのがこのポケナビ乱数というわけです。

 

じゃあなにがどうなってなにが偉いの?

事前知識として、3世代の孵化処理は、卵生成&性格値乱数(卵ができるかどうか、性格、性別、特性、色違いかどうか、はここで決まる)+個体値調乱数(個体値が決まる)と2つの工程に分かれています。ポケナビ乱数はこのうち卵生成&性格値乱数個体値乱数で使える神乱数調整です

 

①卵生成&性格値乱数

卵の生成判定と性格値が決まるタイミングは、育て屋にポケモンを預けてから255歩目となっています。ここで私は疑問に思いました。「この卵生成タイミングとポケナビのエントリーコールタイミングを重ねたらどうなるのか?片方の処理が優先されてもう片方は処理が多な割れないのか?はたまたちゃんと両方とも処理が行われるのか?」。

結論から言います。両方とも処理が行われました。「卵生成&性格値処理→謎の2消費→ポケナビエントリーコールの有無処理→エントリーコール有の場合のみトレーナー名決定処理」となっていました。これによってエントリーコールと卵生成&性格値乱数が紐づけできるため、卵を孵さなくてもエントリーコールのトレーナー名を見ただけで卵の生成の有無と、卵が生成されていた場合の卵の性格値がわかるようになりました

f:id:taiyaki3gen:20181205114654j:plain

つまり「消費数が理論上4固定なので、トレーナー名さえわかれば卵生成や性格値処理が行われた位置も把握できるはず!」という考え方です。

 

個体値乱数

個体値が決まるタイミングは育て屋爺さんから卵を受け取って会話が終わった瞬間となってます。この後自然に生まれる疑問としては「卵を受け取った後に即歩いてエントリーコールを発生させればトレーナー名で個体値わかるのでは?」。少々ごり押しではありますが、これもできるのではないかと考えました。

実際にやってみたところ、GBASPでのみ動作が安定するのかうまく再現が取れました。卵を受け取ってから1歩動いてエントリーコールのトレーナーが決定するまで約36消費(走ったら約28消費、ここら辺のランダム性はROMとかハードごとで変わりそう) で固定することができました。これによりエントリーコールのトレーナー名を見ただけで卵の個体値がわかるようになりました

f:id:taiyaki3gen:20181204015039p:plain

①と同様、逆算が可能なため、卵を孵さずとも個体値がわかるというわけです。

 

結果

「ポケナビ乱数」を既存の孵化乱数と組み合わせることによって、孵化乱数の効率をかなり上げることができました。また、自分のエメラルドのSID(裏ID)がわかってなくても、ID調整をしたRSに乱数調整した卵を輸送して孵化することで簡単に色違い理想個体を作ることもできるようになりました

これでオフ前日に徹夜するようなことは少なくなりますよ。また「3世代の孵化乱数調整こわいいいいい」という人にもおすすめです。

 

後書き

↓実際のやり方&夜綱さん作のポケナビ乱数の神ツール配布の記事はこちらに↓

taiyaki3gen.hatenablog.com

感想

孵化乱数の敷居がかなり下がったと思います。この方法を用いて皆さん楽しい孵化ライフを送っていただけると幸いです。

記事は見やすさを意識して書いてみました。いかがだったでしょうか?私自身あまり乱数に詳しくない民なので、今まで乱数調整の記事を書くことはほとんどなかったため見づらい点が多々あると思いますが、なるべくそうならないように章ごとに結論をはじめの方に書いてみました。

遅くなりましたが、ここまで読んでくださった皆様ありがとうございました!!

 

5日目はポケナビ乱数の解析兼ツール作成者である夜綱さん@sub_827です。