サイファーの日記

過去作の乱数について書きます

スマホ版HOMEの乱数について

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

scrapbox.io


今回は、スマホポケモンホーム(またの名をスマホーム)の乱数の仕組みを少し調べたのでそれについてまとめます。誰得記事。

スマホームの乱数アルゴリズム

あれこれ試した結果、最終的にxorshiftだと分かりました。ポケモンのモーションを128個連続で記録すれば状態復元ができます。*1

剣盾とは反対で、入力する数字は物理モーションが1で特殊モーションが0です。

図鑑とボックスの違い

モーションは図鑑とボックスの両方で見ることができますが、それぞれ違う特徴があるようです。

図鑑ポケモンが動いている最中に追加でタップした場合も乱数が消費される。剣盾の手持ち画面と同じ
モーション画面⇔別の画面の間を遷移すると乱数が異なる値で初期化されるらしい。どういう法則で初期化されているのかは謎。 
初期化されていませんでした。ただの勘違いのよう。

ボックスポケモンが動いた回数だけ乱数が消費される。剣盾のつよさをみる画面と同じ
・別ポケモンに変えてタップしても、その続きから消費される。
メタモンなどモーションが1つしかないポケモンでも消費自体はされる。
×ボタンで戻って入り直したりしても初期化はされない。

上記以外の消費の契機

現時点で確認できたもののみ掲載しています。消費数の確認はボックスにて行いました。()内はそれまでの消費数。

・マイルームでポケモンを1回タップ(1)
・設定画面に移動(3)
 +ひっこしするボタンを押す(6)
 +ひっこしPWを表示させて時間切れ(63)
 +更にPWを表示させて時間切れ(120)
・ふしぎなおくりもの画面に移動(3)
・ゲットカレンダー画面に移動(3)
・バトルデータ画面に移動(3)
・フレンドボタンを押す(3)

列記するとこんな感じ。
特に目を引くのはひっこしPW表示時の消費数でしょうか。表示する度に57も消費されているようです。なんで?







実を言うと、このロードアイコンが表示される度に消費が3進むのが原因だと考えられます。*2ひっこしPW画面で制限時間まで待っていると、このアイコンが19回(3*19 = 57)くらい現れては消えを繰り返していました。

何でこんなので消費されているのかが謎ですが、よく見てみるとアイコンを取り囲む線の動きが毎回違うような...?バックグラウンドで常に動いてるだけかもしれない。


解説は以上になります。

悲しいことに、これが分かって何か嬉しいことがあるかといえば特に無いです!*3個人的には仕組みが気になってモヤモヤしていたのですっきりしました。未開拓の乱数調整について調べるのは面白い。

*1:復元するにあたって、夜綱さんが公開されたXorShift128p_Inverseを少しいじって使用させて頂きました。大感謝。

*2:他の場面の消費についても同様のことがいえます。ちなみに、何らかの理由でこのアイコンが出ないと上記の場面でも消費されないらしい。

*3:これで過去作のサイズ乱数などができたら凄いけど、恐らくサーバーサイドで生成しているんじゃないんですかね?GOの個体値はどうなんでしょう。検証も楽そうなのでいつか調べます。