SM孵化乱数に関するあれこれ【12/17追記あり】
乱数解析勢の弛まぬ努力のおかげで、孵化乱数の兆しが見えたようなので記事を置いときます。
・参考文献
ろいしんブログ様 SM孵化仕組み検証
ぽよノート様 SM孵化の乱数列生成アルゴリズムについて
ぽよノート様 Tiny Mersenne twisterの逆算
oupoの日記様 出力関数が線形な場合のTinyMTにおいて連続する4つの乱数値からstateを得る
ただの雑記byさき様 SM孵化乱数列を計算する
以下プログラミング関連の話なるべく省略
Q1.今作乱数出来そうなの?
A1.孵化乱数のみ現状可能でありますが、5世代以前のようなものとはほぼ別物となります。
Q2.なんで6世代でできなかったのに今更できるの?
A2.仕様が変更され、計算により未来に受け取るタマゴの個体を予測できるようになったからです。
Q3.どうして孵化乱数だけなの?
A3.孵化とそれ以外の個体決定は全く違う仕組みのようです。
Q4.5世代以前とは違うってのはどう違うの?
A4.DSの時間設定がありません、と言うより時間設定しても意味がありません。
目的とする個体の近くにワープする手段(のようなもの)が時間設定であり、今作ではそれが出来なくなったと考えてください。
よって目的個体の近くまで自力で乱数を消費しなければなりません(5世代野生乱数でID調整しないでペラップ大量に鳴かせて無理やり光らせてたときのイメージ)。
Q5.色孵化はできるの?
A5.あらかじめロムのIDを特定していれば色違いになるかどうかの判定は可能です。
Q6.下準備は要るの?
A6.産まれる個体の予測のために、サンプルとして100個ほどタマゴを割って遺伝箇所やボール遺伝などの詳細を調べる必要があります。
(5世代で最初にパラメータを特定したイメージ)
12/17追記
遺伝箇所などを特定しなくても、タマゴ127個の性格を確認するだけでよくなりました。
Q7.普通の孵化と比べて時間は短縮できるの?
A7.現状のデータでは、得られる情報は
「今からタマゴをX個受け取り、Y個受け取りを拒否するとその次のタマゴが理想値だよ(光るよ)。」
といった物。
下準備さえ済ましておけば、いちいち産まれた個体を確認する作業をカットできるなどのメリットがあるため高速化はできると思われる。
SV孵化との比較に関してはSV孵化の人口がどれほど増加するかによる。
Q8.よし、やってみたいから具体的なやり方教えてくれ。
A8.まだ有志の解析勢がやっと成功した段階なのでツールもなにもありません。自力でプログラムを組む気がないのならもうしばらく待ちましょう。
ツールが作成されたらこのブログでも多分書きます。
12/23追記
記事書きました→SM孵化乱数
ペラップの鳴き声を聞くメリットについて
今回はペラップについてだらだら語ろうかと思います。
4世代、5世代乱数において、ペラップは最も重要な役割を果たします。
ご存知の通りペラップはおしゃべりという技を覚え、DSに備え付けられているマイクで声を録音することが出来ます。
このおしゃべりによって発せられる声は同一ではなく、新たに録音をしなくてもある程度高低差が生じます。
この高低差を生み出すために、乱数列の消費が1発生します。
この消費は戦闘中におしゃべりを発動した時のみならず、ペラップを繰り出した時、手持ち画面でペラップを選択した時等ペラップの鳴き声が発生する場面において全て発生します。
手持ち画面で乱数消費を行えるという手軽さ、便利さを買われペラップは乱数勢のお供として活躍してるわけです。
(反面おしゃべりのせいで5世代ランダムマッチでは禁止級扱いを受けているのだが)
ペラップの便利さはこれだけではありません。
録音した音声の高低差を乱数消費によって生み出している、ということは当然生じる高低差には規則性があるということになります。
要するに実際に耳でペラップの鳴き声の高低差を聞き分けることができれば、自分が現在どの消費位置にいるのか手に取るように分かるということです。
しかし残念ながら、ペラップを使い乱数消費はさせるが、ペラップの鳴き声を注意深く聞くことは無い、とおっしゃる方が非常に多いです(私の周りや、質問者だけかもしれないですが)。
非常にもったいないので、鳴き声を聞くメリットについてもう少し語ります。
先述したようにペラップの音声を使えば現在の乱数消費位置を「正確に」尚且つ「手持ち画面で」把握することが出来ます。
手持ち画面で把握することが出来るということは外部(NPCや天候)に邪魔されず慎重に消費を行えるということでもあります。
これは作業の大幅なカットや応用乱数の能率アップに直結します。
例えばBW1孵化乱数では、一度卵を受け取りオフセットを特定するという作業を踏んでいる方が多いと思われます(もしくはおだんさんのオフセット計算ツール)。
ペラップの消費位置把握を使えば、オフセットは瞬時に分かりますのでこの作業は必要ありません。
もっと言うと消費の微調整が行えるためわざわざ小屋の中から外に出る必要は無く、育て屋爺さんの目の前でレポートを書きそのまま始めることが出来ます。
例えばNPCが居る場所での野生乱数では、予想できない消費が幾らか発生します。しかしペラップで消費位置を把握することさえ出来れば消費の微調節など造作もないことですので、全く問題にはなりません。
例えば1000を超える乱数消費を伴う乱数では、最後の数十回の鳴き声だけ判別すれば、集中切れなどから起こる数え間違いを未然に防ぐことが出来ます。
このようにペラップの音声を聞き取るだけで乱数の手間がいくつも省けるわけです。
最後に、「音声を聞き取るのが苦手だ」とおっしゃる方がいたのでいくつかコツを書き連ねます。
まず肝心の高低差のリスト出力ですが、4世代5世代ともにさびたコイルさんがツールを公開していらっしゃいます。リスト出力は5段階か10段階での出力がオススメです。
特に、低い音(0~2)と高い音(4~5or8~9)が何連続で来たか、交互に来たか、高い音が来てから次に来るまで何回鳴かせたか、などを考えるとわかりやすくなると思います。
録音する音声は何でもいいですが、わかりやすくするために「大きな声で」、「なるべく単調な音程で」、「時間一杯」録音するといいです。私はいつも「あーーーーー」です。
以上を踏まえて快適なペラップライフを送りましょう。
質問はコメントかツイッターにて。
RS孵化乱数の自分なりのメモ
ひっさしぶりにやってみたらやり方忘れちゃってて、また調べ直し食らったので二度とこんなことがないようにメモ。
用意するもの
・ID0のRS
・(Em)
・(FRLG)
・RS孵化乱数ツール(後述)
・パッチール
・Spinda-Painter
いくつか注意点
・卵生成時点で性格値の下位4bit(以後LID)が決定、受け取り時に個体と性格値上位4bit(以後HID)が決定。
・よって、爺前固定が成功しただけでは光らない。
・卵生成判定は255歩毎。254歩歩いてレポートを書く。
調べたところRS孵化乱数ツールはジェラートさんが公開されてたが配布終了してた。
再配布を待ったり直接いただいたりしよう。
まぁとりあえずツールをなんとかして工面すること。
最悪誰かが裏で公開してるのを貰ったり自作すればいんじゃない?
14/4/14追記
ジェラートさんの孵化ツールが再公開されたゾ!!!!
親の用意はEmが楽。V持ちメタモンを野生でツモって根気よく遺伝させる。
手順としては
パッチールを両親にして実際に調べたフレームで卵を生成、受け取りをする
↓
Spinda-Painterで性格値を特定、ツールでリストを出力しどのフレームを引いたか調べる
↓
微調節を繰り返し狙いのフレームに近づける(LID一致までは最低でもやる)
↓
実際に狙うポケモンでやる。どのフレームを引いたかは性格や個体値のリストで絞り込むこと。メソズレに注意。
↓
光ってメソズレしてても泣かない。成功したら終わり。
爺前固定が成功したかどうか非常にわかりづらいため、
LIDのフレームは近くのフレームに生成判定をクリアできるものが無いものを選ぶのがよい。
臆病V5VVVVガルーラ。すさまじく時間がかかった。
細かく解説してないから訊きたいことがあったらコメントかTwitterが望ましいと思います。
3DS乱数の制御方法(暫定版)
6g乱数に関する分かっていることのメモ(2014/7/7追記アリ)
ポケモン再開しました^−^v
いろいろ調べたんでメモ記事にします。
※タイトルに乱数とつけていますが便宜上であり、今までの乱数調整とは全くかけ離れたものであること、完璧にコントロール出来るものではないことを念押しします。
・前提
3DSの乱数を制御することは実質不可能。よって細かい仕様も分かっていないことが多い。
・色違い判定
(TID)xor(SID)xor(性格値上位4bit)xor(性格値下位4bit)≦15 であれば光る。
従来は
(TID)xor(SID)xor(性格値上位4bit)xor(性格値下位4bit)≦7
であったため、単純計算に範囲が二倍、言い換えると光る確率も二倍になった。
・性格値と個体の関係
パッチールの模様と性格値の関係性が無くなった。と考えられている。
性格値の仕様がどこまで変更されたかは検証中の模様。
また、本来性転換が起こるはずのルリリを進化させても性転換しなくなった。
性別や性格との関連性も無い可能性が浮上しており、
下手すると色違いになるかどうかの判定にしか使われていないのかも。
(2014/7/7追記)
どうやら色判定以外には性格値は用いられなくなった、というのが現在の見解。
性別、特性、パッチールの模様等にそれぞれ独立した値が割り当てられており、その値によって個体決定されている。
よってカロス産ポケモンにおいては性格値と個体情報は全く異なるものである。
ちなみに過去作のポケモンには、ムーバーと同時に性格値と同じ情報の値が割り当てられる模様。
パッチールの模様に割り当てられる値はEncryption Keyと名付けられているようだ。
詳しくは海外のポケモンサイトを漁ると出るかも。
・孵化
BW2同様、特性遺伝や性格遺伝、個体値や技遺伝が起こる。
新たに♀のボールや技、♂の夢特性も遺伝するようになり、
親に赤い糸を持たせると両親から個体値が5か所遺伝するようになった。
卵を受け取るor受け取らない時に次の卵の個体が決定している。
判定の順番は
性別→性格→特性→遺伝箇所→個体値→性格値 との検証結果が出ている。(完全にさきさんの受け売り)
・SV法
現在最も効率のいい色違い孵化法。
TSV(後述)とPSV(後述)が一致した時に光ることを利用して、理想値の卵を輸送して他人に割ってもらう。
・TSV
ロム毎に決まっている固有の数値。10進数で0~4095の4096通り。
その正体はTIDとSIDを計算式に当てはめただけの数値。
便宜上の数値であり、実際にこのような数値がデータとしてあるわけではないことに注意。
・PSV
ポケモンの個体毎に決まっている固有の数値。10進数で0~4095の4096通り。
例のごとく正体は性格値から算出される数値。
TSVとPSVが一致した時光る。
(実際は「値が一致した時光る」という一目瞭然な状態に置くことで、分かりやすくしたものだと推察される)
・Instacheck Hotspot、keyBV、keyBOX
個体それぞれのPSVを調べるツール。これで調べたPSVと一致するTSVのロムに卵を輸送し、割ると光る。
たぶん、こんなもんかな。
サファリ乱数
詳しく解説するわけではないですが、サファリ乱数をするにあたって必要な参考資料を全部まとめときます。
実際にやった例が欲しい方はコメントやらTwitterやらでお願いします。
サファリの仕様について
・エンカウントテーブルの処理が特殊→さきさんのサファリゾーン乱数用ツールで解決。
・エンカウントテーブルが特殊→
参考資料
HGSSwiki(基本的な仕様)
HGSSwiki(出現ポケモン)
HGSSwiki(細かい仕様)
エンカウントテーブルについての推測
・ブロックのエリア値を上げるためには膨大な日数放置する必要がある→
参考資料
1回のPDWで複数回寝かせる方法
サファリゾーンのエリア値を24時間で最大にする手順
ここで挙げた資料をよく読めばサファリに狙いのポケモンを出現させる方法は分かるはずです。
あとはツモるだけです。
通常の野生乱数と同様、seedを合わせて消費数を合わせ、甘い香りでエンカウントしましょう。
捕獲率が低いポケモンは捕獲にも苦労しますが頑張りましょう。
質問や問題点、意見がありましたらコメントもしくはツイッターにどうぞ。