サイファーの日記

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

牧場乱数の追加情報

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

scrapbox.io


今回は、「みんなのポケモン牧場 プラチナ対応版」の乱数について前回記事から追加で調査したことをまとめます。

眠りによる消費

フォーカスロックをした後、「こっちむいて」を連打するとカメラの位置決定以外に乱数は使われませんが、唯一例外があります。それはいずれかのキャラクターが居眠りをしている場合です。居眠りをしている間は毎秒数十くらい消費が進むようです。更に、こっちむいてはキャラクターの今の状態を維持してしまうため、いくら待っても眠り状態が解除されることはありません。



対策としては、一旦うちわけに出入りしてキャラクターの状態をリセットする方法があります。一回出入りする度に80くらい消費が進みますが居眠りによる総合的な消費より少ないと思われます。ちなみに、時間帯(約15分で切り替わる)が夜の場合はほとんどのポケモンが居眠りをしようとするらしい。夜にうちわけ内で15分待機した後に出たら時間帯が変わるかは未調査。

おもちゃ「さいころ」について

※ツールのアップデートでサイコロによるseed特定に対応したようです。
プラチナ対応版ではおもちゃ箱から出てくる30種類以上のおもちゃが存在しますが、その中に「さいころ」というものがあります。そのさいころをフリーモード時にA+Bで掴んで離すと転がります。そして、転がって表向きに現れるさいころの目の数は 乱数値%6+1 の結果に対応したものになるようです。また、出た目が1,5,6の場合は次振る時に5消費、2,3,4の場合は3消費進みます。


これを利用してseedの特定も可能。こっちむいてを連打しながらA+Bを離して振るとさいころ以外の消費が入らないためです。13-14回分の連続で出た目の数を入力すればseedを特定することができます。既存の方法より1回あたりの特定時間が30-40秒くらい短くなりました(総当たりの場合)。

問題は、日付を変えてさいころが出るまでおもちゃ箱ガチャをしないといけないことです。牧場レベルを最大にすれば毎日6個届くので一日あたり1/6くらいのガチャになります。また、翌日以降に起動すると前日のおもちゃは取り上げられてしまうので、さいころをキープしたい場合はWiiの時刻設定を気にする必要もあります。*1

ちなみに、おもちゃは牧場内でリモコンを縦か横におもいっきり振れば一度に全部開封できます。さいころがどこにあるか分からない場合などは、十字キーで表示されるリストから飛んでいってください。

初期seedの調整について

検証のためにエミュで確認したところ、同じ時刻に牧場を起動すると上位16bitについては大体3パターンに収束しました。*2下位16bitについてはある程度収束はしているものの、実際の調整には適さないレベルのばらつきが存在しました。実機の挙動は分かりませんが、多分やるだけ無駄だろう...

ゲームを中断し、ホーム画面の「リセット」を特定時刻に押した場合の挙動は未調査。

通信中のあずける画面

Co瞬きのように通信中のあずける画面のモーションを利用して、現在位置を特定できるかもと考えたので調査してみました。これができるとミュウ以外の乱数も現実的になりそう。ただし通信時はエミュが使えないのであまり十分な調査内容ではありません。

内容は、近いseedからそれぞれ通信を開始してモーションを観測したら一致する動きの流れがみられないかというものです。その結果、録画した映像を確認したところ部分的には一致していました。ただし、それより前の部分については一致していませんでした。

何らかの原因で条件が途中で同じになったのだと思いますが、今のところ具体的には分かりません。状況再現的なことはできそうなので、いずれこの仕組みを利用してフィオネあたりを乱数できないか調べてみます。

 

*1:例えば2024/6/22にさいころが出たとしてその後日付をまたいだ場合、次回以降のソフト起動は2024/6/22に戻してから行う必要があります。うっかり忘れそうなので注意。

*2:具体的には、2024/6/10のAM11:00:10に起動すると0xB4BCxxxx,0xB85Bxxxx,0xBBFAxxxxのいずれかの初期seedが出てきました。