誰向けなの
スイッチを改造できて、自分でシードを設定できる方向けです。
うちの記事読んでて、これができそうなの五人くらいしかいなさそうなので需要は全くなさそうなのだが、せっかくなので研究した成果を発表しておく。
シード厳選
まず最初に、72納品をしようとおもったらWAVE3が通常潮位のイベントなしである必要がある。
ところが、通常潮位のイベントなしというのは3/4*3/5=9/20の確率で発生する。
全通りが43億もあるので、9/20に減らした程度では候補が多すぎてPythonで細かい厳選が行えないのだ。そこで今回はC++のプログラムに改良を加え「WAVE3が通常潮位イベントなし+カタパ出現しない+タワー出現しない」という風に制約をつけて出力できるようにした。
出現するオオモノで絞る
七種類のオオモノのうち、二種類が常にでないということは五種類から出続けるということなので、
そのシードの期待値は全体のおよそ(5/7)^24=0.00031111943と見積もることができる。
となれば、通常イベントなしがくる確率9/20と合わせて、全体の0.00014000374程度になるはずである。ここまで確率を減らせれば候補を十分絞ることができ、
2^32*(5/7)^24*9/20=601311.512458と、約60万通りほど残るのではないかという予想が立てられる。
実際、プログラムを動かしたところ609829通りのシードを得ることができた。
少し見積もりよりも大きくなったが、スプラトゥーンの疑似乱数生成器が偏りを含むものなのでまあまあ精度良く予測できたと言ってよいだろう。
オオモノの詰まりで絞る
さて、オオモノ出現アルゴリズムが完全解析されたので、初期シードからオオモノが湧く順番は完全に予測可能なのだが、これはあくまでも「何も不測の事態が起こらなかったときのオオモノの湧き順」であり、状況によっては計算結果とズレることがある。
それが同一オオモノの存在上限であり、四体目のオオモノを出現させようとすると別のオオモノが出現してしまい、それ以後の計算が合わなくなってしまうという問題がある。
満潮などではなかなか気にすることもないのだが、通常潮位の場合はオオモノが寄ってくるのに時間がかかるため、ここは厳しく見積もらないとせっかく簡単だと思って試したシードで「オオモノが詰まってしまい全く理想のWAVEと異なる状態になってしまった」という悲惨な状況を招きかねない。
特に、ポラリスなどではモグラでさえも寄せるのに時間がかかるので、モグラに対しても20秒の猶予を与えた。
20秒の猶予があるというのは「100秒間のWAVEの長さのうちどこの20秒をとってもモグラが4体存在しているような湧き順がない」ということを意味する。
この猶予が長くなれば長くなるほど、移動速度が遅く詰まりやすいオオモノであるといえるわけである。
どのオオモノが寄ってくるまでにどのくらい時間がかかるかは、実際に計測しても良かったのだがめんどくさかったので@GungeeSpla氏が作成したサーモンランルートマップを利用した。
それによると3湧きのバクダンがコンテナに寄るまでに最も時間がかかり、約40秒かかることがわかった。その他のオオモノは全て30秒以内に寄ってきているので、バクダンだけがぶっちぎりで遅いわけである。
30秒以内に寄るのであれば、猶予は30秒あればいいので、ここではカタパッドとタワーを除いたオオモノの猶予時間を以下のように設定した。
猶予 | オオモノの種類 |
20秒以内 | モグラ |
30秒 | テッパン ヘビ コウモリ |
40秒 | バクダン |
この湧き間隔制約をつけた上で、先程絞ったシードからどのくらい減らせるかが問題になるわけである。
その結果、16564通りのシード表を得ることができました。
後半の湧き方向で絞る
ではここから更に絞っていくことにしましょう。
先程、最も遠いバクダンは寄せに40秒かかるとしましたが、これが正しければ7回目の湧き変化(38秒)や8回目の湧き変化(28秒)でバクダンが出現してしまうと寄せが間に合わないことになります。
2湧きや3湧きでは最も遠いバクダンが出現してしまう可能性があるので、バクダンが出現するのは一番近い1湧きで固定したいわけです。
例外的にドンブラコだけは1湧きが最も遠く、3湧きが最も近くなる(なんでやねん)
ただし、あんまりきつい制約をつけると一気に候補が減ってしまうので柔軟に対応する必要があります。そこで今回は「7回目の湧き変化は1湧き(最も近い)」「8回目の湧き変化はどこでもいいがモグラが出現する」という風にしました。
すると882通りのシード表を得ることができました。
コウモリを減らして絞る
コウモリが出現すると、(特にポラリスでは)誘導がめんどくさいことになるので、コウモリは後半には湧かないようにしてみました。
すると、2通りまで絞ることができました。
02CBBA0A B5A17BC6
このどっちかで72納品ができるといいなあ、なんて思っていたりします。
ちなみにドンブラコの場合は7回目は1湧きではなく3湧きの方が得なので、次のシードになります。
033D3BEF 604E20CB A676A682
IPSwitch
せっかくなので、直ぐに使えるIPSwitch形式のコードも置いておきます。
// NT WAVE3 Polaris @disabled 00XXXXXX 6059A0D2404197F2 // NT WAVE3 Polaris @disabled 00XXXXXX 20B4B6D2C0788FF2 // NT WAVE3 Polaris @disabled 00XXXXXX 20C7B0D2A07D93F2 // NT WAVE3 Bay @disabled 00XXXXXX A067A0D2E07D87F2 // NT WAVE3 Bay @disabled 00XXXXXX C009ACD2601984F2 // NT WAVE3 Bay @disabled 00XXXXXX C0CEB4D240D094F2
アドレス部はナイショですが、GHIDRAでうまいこと検索したらすぐに見つかります。
5.3.0までのアドレスは以下のレポジトリから確認できるので、その辺を調べてみてください。
バグかはしりませんが、このパッチを当てた状態でイカッチャで三つ目のステージを遊ぶと必ずクラッシュします。なぜなのかはわかりません。
自身を天才と信じて疑わないマッドサイエンティスト。二つ上の姉は大英図書館特殊工作部勤務、額の十字架の疵は彼女につけられた。
コメント