XD乱数概要
2014年04月25日 22:52
XD乱数(の一番簡単なやつ)に成功したのでまとめておきます。
「きんぞくおん」サンダーを捕まえたいという方向けに、特にサンダーを例に手順を書いていきます。
とはいえ、ツール作成者をはじめとする様々な方が既にXD乱数に関する記事を書かれています。今回の記事は、自分が乱数調整をする上で引っかかった点などを中心に、既存の説明の補完のような位置づけを目指していきたいと思います。
(予め断っておきますが、自分は乱数生成の原理等はちゃんと理解できておらず、あくまでツールの手を借りて誰にでも見える範囲でしか説明することができないので悪しからず。)
「きんぞくおん」サンダーを捕まえたいという方向けに、特にサンダーを例に手順を書いていきます。
とはいえ、ツール作成者をはじめとする様々な方が既にXD乱数に関する記事を書かれています。今回の記事は、自分が乱数調整をする上で引っかかった点などを中心に、既存の説明の補完のような位置づけを目指していきたいと思います。
(予め断っておきますが、自分は乱数生成の原理等はちゃんと理解できておらず、あくまでツールの手を借りて誰にでも見える範囲でしか説明することができないので悪しからず。)
○そもそもXD乱数とは?
経験のある方は“乱数調整”というものに対して何かしらのイメージを持っているはずです。
3,4世代の乱数調整は「フレーム単位で起動時間を合わせる(→消費)」、5世代は「(パラメータ特定作業→)オフセット特定→消費」が主な手順でした。(Cギアオンとかもありましたが、まぁこの際細かいことはどうでもいいです。)
XDは分類上3世代に属しますが、やることはいわゆるエメループとは全く異なります。むしろ5世代に近いです。とても大雑把に説明すると、「どこか目的の場所があって、そこに行きたい」という状況が割と近いです。
0.捕まえたい個体のseedを調べる:目的地の場所を調べる
1.seedの特定:今自分がどこにいるのかを確認する
2.消費数の計算:どれだけ進めば目的地に到着するのか調べる
3.消費:(目的地を追い越さない程度に)適当に前に進む
4.seedの特定:どこまで進んだのかを確認する
5.消費数の計算:残りどれだけ進めばいいのかを調べる
6.消費(ry
以下、seedの特定→消費→消費数の計算の繰り返しで、最終的に目的地=目標のseedに到達するといったところです。seedというのは乱数生成の元(種)のことですが、イメージを持ちにくいのでれば「場所」と読み変えると、上のイメージに近づけると思います。(いやまあ感覚的すぎるイメージというか例え話なんで、専門の方に見られたら怒られてしまいそうですが……)
これだけ見ると5世代乱数に近いことが分かっていただけるかと思います。seedの特定≒オフセットの特定と読み変えれば、やってることは割と同じですね。オフセット特定にレポート針を使う場合を考えるとより近いですね。(レポート針使ったことない人並の感想)
では違いは何かというと、消費数のオーダー(桁数)です。XD乱数では往々にして、1000万だとか1億だとかのレベルの消費を要求されます。「えーじゃあペラップ1億回鳴かせるの……」と思われるかもしれませんが、その心配はありません。例えば最も早い手段で、1秒間に4000以上の消費をすることが可能です。
上の大雑把な説明で、seedの特定→消費の流れを複数回繰り返しているのはこのためです。(普通に考えれば、消費数が分かっているのであれば、その数だけぴったり消費できれば、この流れを複数回に分ける必要はなく一発で終わりですからね。)つまり、
1億くらい消費したい→1秒間に4000くらい消費することで一気に目的地に近付く→しかし4000消費/sとかいう速さなので、消費数を正確に制御することは難しい→追い越さない程度に一気に消費して、ある程度近づいたら500/sとか50/sとかの手段でもう少し慎重に目的地に近付く→残り100消費くらいまで近づいたら、ペラップを鳴かせるイメージで細かく調整→目的地に到着
という流れとなります。この流れは大事なので覚えておきましょう。
○使用するツール
必要なソフトはギンザルさんのページから入手できます。それぞれの役割を説明すると、
xdcheck:ポケモン名や個体値、性格の条件を入力することで目的地の候補を検索してくれる。食べログみたいな?
xdpokemon:現在地がどこかも入力することで、xdcheckよりも詳細な情報(どれだけ進めば辿り着けるか等)を教えてくれる。
xdseed:現在地の特定と目的地までの消費数の計算など色々やってくれる、メインのツール。
といったところ。これらは全て使用するので、ちゃんと動くことを確認しておきましょう。
○基本作業 -seedの特定、消費-
上の概要を読まれたら分かっていただけるかと思いますが、XD乱数の中心は「現在のseedの特定」と「消費」です。まずこの2点について説明します。
・現在のseedの特定
何も操作をしないでしばらく主人公を眺めていると、腕をブラブラさせるなどの動きが見られます。(以下これを主人公のモーションと言います。)このモーションの種類を観察することで現在のseedを特定するのが基本になります。モーションには3種類あり、それぞれ前後・左右・上下と呼ばれています。どの動きがどの名称に対応してるかは見ればなんとなく分かるはずなので、事前に確認しておきましょう。
この作業はxdseedの[初期シード]か[現在のシード]、[消費数]タブにて行います。「自分は今この辺にいるはずなんだけど、正確な場所が分からないんで教えてください」という問いに答えてくれるのがこれらのタブです。[現在のシード]タブだけ少し異なるのですが、基本的には主人公のモーションを眺めていて、出たモーションを順番に入力して候補を絞っていくだけです。各タブの用途は以下のような感じです。(といっても大体名前の通りですが……)
[初期シード]タブ:ゲーム起動直後に使います。これでスタート地点を特定します。
[現在のシード]タブ:後の例のところでも説明しますが、[初期シード][消費数]タブでは正確にシードを計算できないこともあります。候補を絞り切れなかったときにその中から1つに絞ってくれるのがこのタブです。ゲーム内のメニュー画面から「もちもの」を開く→モーションを見るを繰り返すことでシードの特定を行います。
[消費数]タブ:シード特定後にいくらか消費したとき、どれだけ消費したのかを調べるタブです。
・消費
消費の手段はギンザルさんのページにまとめられています。よく使用するものは以下の5つです。
・P★DAのダークポケモンモニターからリバース状態のダークポケモンを表示する 4133.2/s
・つよさをみるから手持ちの(ダークポケモンでない)ポケモンの様子を見る 48.5/s
・レポートを書く 63/回
・道具を見る (場所に依る)/回
・主人公のモーション 2/回
見ての通り上にあるものほど消費が早いので、最初は上のものを使って一気に消費。(消費しすぎた場合に後戻りすることはできないので)追い越さない程度のところで一旦やめて、徐々に下のものに切り替えていくという流れです。具体的にどのくらいまで近づくのかなどは、後の具体例のところで解説します。
○実践編(サンダーの乱数調整)
基本的にはギンザルさんのページの「乱数調整の方法」のところを見ていただければ大丈夫です。ここでは私がサンダーを捕まえる際の手順を追っていくことで、補完をしていきたいと思います。(大多数の人はサンダーやルギアが狙いだと思うので。)他のポケモンの乱数調整を狙う方は適宜読み換えてください。また、画像を用意するのが面倒だったので、画像は適宜上記HPを参照してください。必要と思われる画像は全部載ってます。このご時世、勝手に画像持ってきたら怒られますからね。
ハードはゲームキューブを使用しました。Wiiでもできるかとは思いますが、多少違いがあるはずです。私はWiiではやってないので違いは分かりません。
1.乱数調整の前に
まずはストーリーをデスゴルド戦前まで進めます。ダークポケモンは一度倒しても再戦して捕まえ直すことはできますが、個体値等は最初の戦闘時に固定されてしまうので、厳選や乱数調整はこのタイミングで行う必要があります。サンダーを捕まえる際には、まずルギアを倒して、デスゴルドのポケモンをサンダー以外の5体(サイドン→ファイヤー→ナッシー→ケンタロス→フリーザーの順のはずです)を見た状態で、つまりこの5体中3体を倒した状態でわざと負けます。
また、デスゴルド戦は勝利するとそのままエンディングに突入し必ずセーブが入るため、捕獲後ステータスを見て成功かどうかを判断することができません。このため、戦闘中の行動順、ダメージからステータスを割り出して成功判定をする必要があります。ダメージからステータスを逆算するツールとして、こちらの「デスゴルド君」があります。これでCを判定します。Sの判定には、シナリオの途中で出てくるオオスバメorボーマンダがオススメです。(耐久が高いのでボーマンダがベター。)インドメタシンやふしぎなアメでS実数値を調整して、目的のSと同速に調整します。一般にこの手の厳選では理想値-1に調整して抜かれたら捕獲、とすることが多いかと思いますが、今回は何回か攻撃を受けてCを割り出す作業が入るので、同速で判定した方がより確実でしょう。特に無補正SVを狙うときなどは補正ありと勘違いしないためにも、同速の調整をオススメします。以上、CとSの実数値を判定し、理想値だと思われた場合に捕獲します。(たまたまCSだけ一致してて乱数調整をミスっている場合もなくはないですが、その場合には運が悪かったと諦めて周回し直しましょう……)
手持ちは何体でもいいかとは思いますが、自分は5体の状態で乱数調整しました。この辺はよく分かりません。
消費作業を行う際にリバース状態のダークポケモンが必要なので、適当に一体用意しておきます。またダークポケモンでないポケモンを1体以上、手持ちに入れておきます。
デスゴルド前のエレベーターがあるフロアでセーブして終了します。フロア内ならどこでもいいので、主人公のモーションを観察しやすい場所、向きにしておきましょう。
2.目的の個体の検索
xdcheckを使って検索を行います。「ポケモンを選択」からサンダーを選択。そして1~5匹目のところの「ダークポケモン初」を全部「ダークポケモン」に選び直します。(ここを初のままにしておけば、サンダー以外の5体は個体値固定する必要はなさそうに思いますが、確認できていないですしどっちみちルギアは倒す必要があるので、全部固定してしまった方が無難でしょう。)その後個体値性格めざパなど条件を入力して「計算」で検索します。該当する個体が存在すればいくつか候補が出てくるはずです。出てこなかった場合には諦めて条件を緩めましょう。また、候補の数は多い方が楽です。5つ以上あれば比較的楽に乱数調整できるでしょう。
3.初期seedの特定
GCの蓋を開けた状態でゲームを起動。その後蓋を閉めて日時の調整画面を選び、2000年1月1日→0時0分に合わせます。時間を合わせた瞬間にストップウォッチで時間を計りはじめ、10秒経ったタイミングでXDを開始します。(先に蓋を閉めておかないと多分間に合わない。)ここで3,4世代乱数のように1F単位で合わせる必要はありませんが、あまりにずれてしまうと後々の作業が面倒になるので、できる限り合わせるようにしましょう。その後はタイトル画面からストーリーを開始します。放っておくと勝手にモーションが入って消費が始まってしまうので、作業を行う際には基本的にメニュー画面を開いておくようにしましょう。
ここからxdseedで作業を開始します。xdseedを起動したら、いくつか間違えやすい入力があるので先にそちらを合わせておきます。
・[初期シード]タブ
「初期シード」の範囲を1C000000、1FFFFFFFに設定。(ばすたぁさん調査。よほどストップウォッチ合わせの精度がアレでなければこの範囲に入ってるはずです。)
「ゲームロードまでの消費数」を1039に設定。
・[現在のシード]タブ
「消費数」を12に設定。
この状態で主人公のモーションを確認します。(メニューで待機してたなら閉じて主人公を眺める。)最初は[初期シード]タブに入力していきます。大体15~20回くらい入力したところで「計算」をすると、いくつか候補が出てきます。この候補の一番左と右の列「初期シード」「現在のシード」列の値を見て、全ての値の下4桁が一致しているところまで絞れたら、これ以上やっても変わらないので次の段階に移ります。
「現在のシード」列を全て選択、コピーして、[現在のシード]タブを選択します(ややこしい……)。「シード」のところにコピーしたシード候補を貼り付けます。この時点でゲームの方ではメニュー画面で待機しているはずなので、そこから「もちもの」を選択します。そのままB2回で戻り、主人公のモーションを1回チェックします。その後またメニュー画面を開き[現在のシード]タブの「主人公のモーション」のところに今みたモーションを入力し、「もちもの」を開いて閉じる。またモーションを確認→「もちもの」の流れを繰り返します。適当な回数やって「計算」し、候補が1つになるまでこの作業を行います。1回の入力で大体候補は半分くらいになるので、n個の候補があったときにはlog_2 n回くらいやればよさそう。めでたく候補が1つになったら、「現在のシード」の値をコピーします。
4.消費数の検索
[目標のシード]タブの「シード」のところにコピーした値を貼り付けます。「消費数」のところには適当な範囲を入れて(できる限り大きな範囲を取りましょう)「目標のシード」のところにはxdcheckで検索した候補の「開始時シード」の列をコピーして貼り付けます。結果が出なかった場合には運が悪かったということで3からやり直し。候補が出てきた場合には「消費数」のところを見ます。これを4100くらいで割ったものが待機時間[秒]なのですが、これが現実的な時間かどうか判断します。「40時間放置はちょっと……」みたいなことになったら同じく3からやり直し。よさげな待機時間のものが見つかったら次に進みます。
初期seedの違いによって、待機時間は様々に変化します。つまり、初期seedを“厳選”することによって比較的短い待機時間を狙うことができます。乱数調整なのに厳選してるとかいう現象が。
5.消費
消費数から10000~20000を引いた値を4133.2で割ります。これが最初の消費の待機時間[秒]になります。少し引いているのは消費しすぎるのを防ぐためです。多めに引くと安全ではありますがその分手間がかかるのでまあ適当なところを選びましょう。
待機時間を計算できたら、P★DAのダークポケモンモニターからリバース状態のポケモンを選択します。Aを押すのと同時に時間を計り始め、待機時間が終わるタイミングでBを押します。
6.消費数の確認
[消費数]タブを使います。3の最後で特定したseedを「シード」のところに入力、「消費数」のところには5で消費したと思われる値の前後10000くらいの範囲を入力。モーションを確認して消費数を特定します。候補が1つに絞れたらそこで終わり、下4桁が一致しているものが複数残ったら3のときと同様に[現在のseed]タブで特定します。
7.残り消費数の確認
上手く消費できていれば残り20000くらいの消費となるはずです。あとどれだけ消費すればいいかを計算します。
xdpokemonの「シード」のところに6で特定したseedを入力。「任意消費数」には、4で求めた消費数から5で特定した消費数を引いた値が入るような範囲を入力します。ピッタリその値だけにすると多分上手くいかないので、±1000くらいの幅を持たせます。「強制消費数1」には26を入力して、2と同様にサンダーの個体の条件を入力します。ダークポケモン初→ダークポケモンと変更するのを忘れないように。これで「計算」すると、4で見つかったものと同じ個体が引っかかるはずです。その「任意消費数」のところの数が、残り消費しないといけない数です。
8.消費
(7で分かった消費数-200くらい)を48.5で割った数が次の待機時間[秒]です。手持ちのダークポケモンでないポケモンのステータス画面を見ることによって消費します。
9.消費数の確認
6と同様にして、現在の消費数を確認します。うっかり追い越していたら、残念ながら3からやり直しです。
10.残り消費数の確認
7と同様にして残り消費数を確認します。ここで、出てきた候補のところで右クリック→「展開」を選ぶと、ものによっては複数の候補に分裂します。この内どれか1つを目指せばよいです。
「任意消費数」に注目して、12か63の倍数があればとてもラッキー。そうでなければ適当なものを1つ選びます。
11.消費の微調整
最後の消費になります。レポートを書く:63消費、もちものを見る:12消費、主人公のモーションを見る:2消費を組み合わせて、10での消費数(「任意消費数」)ピッタリを消費します。
12.戦闘・捕獲
消費が終わったらそのまま戦闘に入ります。放っておくとモーションが入ってしまうので、消費でき次第戦闘に入りましょう。ステータスを特定して、上手くいっていると判断したら捕獲。エンディング後にステータスを確認します。
サンダー(サイドンファイヤー以外の、デスゴルドのポケモン)はとても簡単な部類なので、seedの特定と消費作業を間違えずに行えば必ず成功します。ミスってたら操作ミスをどこかでしていたと思われます。(seedの特定のとき、候補が1つに絞れても、余分にモーションを何回か入力することでチェックすることができます。どこかで候補が消えてしまったら操作ミスがあったということです。心配症な人はこれでチェックするといいでしょう。)
木登さんのブログの難易度Lv1のポケモンたちは、サンダーと同様の手順でできます。
○他のポケモンの乱数調整をする際の注意
基本的には上の手順を元にすればいいですが、一部パラメータが違う部分があるので注意が必要です。
ばすたぁさんのブログの~乱数情報~のところに、ポケモン毎のパラメータがまとめられています。3での「ゲームロードまでの消費数」と「消費数」、7などでの「強制消費数1」がトレーナーや場所によって変わるので、そこだけ注意。
Lv2以上のポケモンでは、少し面倒な要素があります。(なお、私はLv1のポケモンでしか成功していないため、ここからは推測で書いてます。)
・nズレ
5世代におけるタイマーずれのようなものです。任意消費数1の値が複数あるポケモンの場合、その中から1つを狙って乱数調整します。それで狙いの任意消費数1を引けなかった場合がnズレです。捕獲したポケモンの能力値が合わない場合、xdpokemonでその能力値を検索します。このとき、「強制消費数1を範囲指定」で検索します。範囲には上の~乱数情報~のところの「強制消費数1」のところの値が全て入るような範囲を入力します。「シード」と「任意消費数」は11のところで最後の調整をしたときのものを入力します。これで「任意消費数1」が異なる個体が引っかかった場合、nズレが起きたことがわかります。残念ですが最初からやり直しましょう。
出やすいnの値があるとかは何も知らないので、各自調べるか自分で実験するかでお願いします。
・NPC消費
動くNPCがいるフィールド上では勝手に消費が行われてしまうので、その場でseed特定作業を行うことができません。NPCのいない場所で11まで作業を行い、終わったあとで移動します。このとき、移動の仕方を一定にすることで、NPC消費をある程度一定の値に保つようにします。予想されるNPC消費は例によって上の~乱数情報~のところにまとめられています。この値を4で求めた消費数消費数から引いたものを、目標とする消費数とします。4,7,10のところで残りの消費数を計算するので、そこで気を付けるようにしましょう。特に直線的でない移動が必要なフィールドでは操作を一定にしないとなかなか安定しないので難易度は高いです。事前に自分で何度か実験して、自分の操作ではどの程度の値付近が出やすいのかを調べておくのがいいでしょう。
長時間放置したり主人公をずっと眺めていたりと面倒な作業も少なくないですが、基本的には決して難しい作業ではないと思います。何か質問等ありましたら、コメントかTwitterでのリプかでお願いします。乱数代行はやりません。
参考文献
・ギンザルさんのページ“ポケモンXD乱数調整ツール”
http://www.geocities.jp/ginzaru_xd/
・ばすたぁさんのブログ“三度の飯より乱数調整”
http://d.hatena.ne.jp/buster_poke/20030102
http://d.hatena.ne.jp/buster_poke/20030801
・木登さんのブログ“ポケモンとD.C.とかの日々”
http://ameblo.jp/nowtreeclimb/entry-11798005428.html
コメント
無題
どうも拝見させてもらってます
二つ質問があるのですが
1.xdcheckでの「色違いルーチン」とありますが
ここに表IDと裏IDを入力すればダークポケモンでも色違いができるのですか?(因みにもう自分の裏IDは特定しています)
2.当記事での10の作業をする際でも7と同様に「強制消費数1」には26を入力とすればいいのでしょうか?
二つ質問があるのですが
1.xdcheckでの「色違いルーチン」とありますが
ここに表IDと裏IDを入力すればダークポケモンでも色違いができるのですか?(因みにもう自分の裏IDは特定しています)
2.当記事での10の作業をする際でも7と同様に「強制消費数1」には26を入力とすればいいのでしょうか?
2014年07月31日 20:23 | URL | かん | 編集
無題
すいません、自分の説明が下手なんで補足して頂くと
自分の質問の1.は要するにダークポケモンでも色違いを入手できるようになってるのか
それともBWのレシラム・ゼクロムみたく絶対に色違いが出ないようになっていますか?
ということです。
もし、そうなら裏ID特定した意味もxdpokemonで表裏ID両方を入力した意味もあんまないかな、と思ったのでお聞きしたいのです。
自分の質問の1.は要するにダークポケモンでも色違いを入手できるようになってるのか
それともBWのレシラム・ゼクロムみたく絶対に色違いが出ないようになっていますか?
ということです。
もし、そうなら裏ID特定した意味もxdpokemonで表裏ID両方を入力した意味もあんまないかな、と思ったのでお聞きしたいのです。
2014年07月31日 20:39 | URL | かん | 編集
無題
>かんさん
返信が遅れました、申し訳ございません。
1.色違いは出るのか?
最初に断っておくと、これは自分は正確に把握しておりません、すみません。
色違いブロックルーチンがあるということは色違いは出ないということだと認識しています。つまり、かんさんの補足のような認識で大丈夫だと思います。
2.その通りです。
返信が遅れました、申し訳ございません。
1.色違いは出るのか?
最初に断っておくと、これは自分は正確に把握しておりません、すみません。
色違いブロックルーチンがあるということは色違いは出ないということだと認識しています。つまり、かんさんの補足のような認識で大丈夫だと思います。
2.その通りです。
2014年08月22日 07:03 | URL | 1192 | 編集
無題
初めまして。
XD乱数ができる環境を持っていたので記事を参考に挑戦しているのですが、
質問があります。
10の作業をする際に、9の作業で候補が1つになったときの現在のシードをxdpokemonの「シード」のところにコピーして希望ポケモンの個体、消費範囲、強制消費数1を入力して計算を押したとき候補が出なかった場合は3に戻らないといけないのですか?
もしわかるのでしたらその原因(9の作業での入力ミス)をお願いします。
XD乱数ができる環境を持っていたので記事を参考に挑戦しているのですが、
質問があります。
10の作業をする際に、9の作業で候補が1つになったときの現在のシードをxdpokemonの「シード」のところにコピーして希望ポケモンの個体、消費範囲、強制消費数1を入力して計算を押したとき候補が出なかった場合は3に戻らないといけないのですか?
もしわかるのでしたらその原因(9の作業での入力ミス)をお願いします。
2014年09月06日 22:48 | URL | おかやん | 編集