コロシアム乱数でスイクンを入手するまで
2020年09月09日 18:07
コロシアム乱数は2015年ごろに発見され、当時はスイクンが相当非現実的、ライコウは事実上不可能と言えるような状況であった。しかしその後長い時を経て開拓が進み、2020年になってスイクンは簡単、ライコウも現実的な難易度であるというところまで易化した。
遅ればせながら自分も触れてみたところ、確かにスイクンは簡単でライコウはそれでもまだ難しいという印象だった。スイクンの乱数調整に成功するまでの軌跡をここにまとめておく。
遅ればせながら自分も触れてみたところ、確かにスイクンは簡単でライコウはそれでもまだ難しいという印象だった。スイクンの乱数調整に成功するまでの軌跡をここにまとめておく。
■大まかな前提
XD乱数をやったことがあるくらいの知識を前提とする。
乱数調整の流れはXDと同様、
初期seedの特定→目標までの消費数の検索→おおざっぱに消費→消費数の特定→少し細かく消費→消費数の特定→微調整して消費→戦闘開始
といった感じ。
この中で、現在seedの特定がやや癖があるというのが、コロシアム乱数の関門である。
■必要なツール類
※あまりベラベラしゃべるとどこかから目を付けられかねないので、本記事はこれらのツール類を自力で入手できる程度のリテラシーを持った人を対象とすることにする。関係者などに不用意な質問などをして、迷惑をかけることのないようにお願いしたい。
・キャプチャボード
XD乱数は普通にテレビでプレイして横でPCを使いながら操作するのでも問題なく乱数調整ができたが、コロシアムの場合はキャプチャの有無で手間が大きく変わる。特に、GV-USB2を所持している場合は、Light Captureというキャプチャソフトに対応しているので、話が早い。そうでないキャプチャボードでも、AmaRecTVやOBS Studioというキャプチャソフトを使用すればOK。
・CoTool
瞬きを利用してseedの特定や調整を行うために必須。ver1.05以上推奨。
・COReader
これまで手入力していた各種入力を自動的に行ってくれる驚異のハイテクノロジーツール。ver0.91以上推奨。
・xdseed、xdpokemon、xdcheck
XD乱数をやったことのある方にはおなじみのツール。スイクンの乱数でも多少は使用するので、入手しておきたい。ジオシティーズが既にサービス終了していることに注意。
■参考記事
【コロシアム乱数】まばたきによるシードの特定 - かけらの記録ノート
https://sina-poke.hatenablog.com/entry/2020/02/23/134107
記事の途中だが突然参考文献を記載しておく。
正直この記事だけ読んでおけばスイクンの乱数調整はできる。しかし、COReaderと連携して乱数調整するという意味ではこの記事だけでは不十分で、しかも他に参考となる文献がない。少なくとも私は見つけられなかった。これが今回この記事を書くに至ったモチベーションである。すなわち、CoToolとCOReaderをうまく使い分けて効率よくスイクンの乱数調整を行う、という手順を記した(ことを目指した)のがこの記事である。
なので、大部分はこの記事と同じようなことを書いているのだということは承知の上であり、ご了承いただきたい。
適宜キャプチャ画像が挟まっており分かりやすいので、都度こちらの記事も参照するのがよいだろう。
■ゲーム内の準備
・スイクン前まで進める
ヴィーナスに話しかければ対戦が開始する状況までストーリーを進めておく。
・マスターボールを入手する
あるとないとで手間が大きく変わるので、特に初めてやる場合には取っておきたい。自分もそれほど周回したことがないのだが、エーフィ+オーダイルのような組み合わせで進めると楽かと思われる。
・ムウマを捕獲、リライブしておく
コロシアム乱数の要となるのがムウマ。XD乱数が主人公を眺めるゲームだとするなら、コロシアム乱数はムウマの瞳を見つめるゲーム。
・ムウマと、リライブしていないダークポケモンを一体手持ちに入れておく
・手持ちを5体以下にしておく
これは必須ではないが、スイクンを捕獲してすぐステータス確認できるので、明らかにこうしておいた方がよい。
以上の準備を済ませて、アンダーの宿屋でセーブ。
ちなみに続きからの再開後に最短で移動したり一定時間で移動したりという操作技術は不要であるが、あまりにブレても困るので、それなりに最短を目指してヴィーナスの部屋まで辿り着ける程度には慣れておきたい。
■練習でツールの使い方に慣れる
まずは各種ツールの使い方を覚えていこう。
・COReaderの初期設定
「DBのパス」「GCのフレームレート」「キャプチャソフトのプルダウン」「seed検索の形式」などを適宜修正して、「設定を保存」しておく。「GCのフレームレート」は30とする。
・COReaderを用いた初期seed特定
「とにかくバトル」タブを使用。「開始」ボタンを押してとにかくバトルのシングル最強を選択、Bで戻る、を繰り返す。正しくキャプチャソフトとの連携ができていれば、トレーナー名と最初のポケモンが読み込まれ、7,8回繰り返すと初期seedが特定できる。ちなみに「消費上限」「目標seed」は特に使用しなくてよい。
・適当な目標seedの設定
xdcheckに適当な条件を入れて、候補となるseedを出力する。このとき、緩めの条件を設定して多めに出力しておく。結果をxdseedの「目標のseed」タブの「目標のseed」コピペ。そして特定した初期seedを「シード」に入力し、消費数を適当に設定して目標seedを検索する。どうせ実際には消費しないので、ヒットするように消費数の範囲は広めに取っておく。この項はあまり本質的な作業ではないのだが、何かしらの目標seedを見つけるということが重要なので、仕方なく行っている。
このようにして特定した初期seedと目標seedを、COReaderの「瞬き」タブの「seed」「目標」に入力する。また、これらの間のフォームは、0~50000を入力する。これは消費数の範囲である。
・スイクン部屋に移動して初期seedを特定する
ここまで済んだらゲームを続きから始める。そしてそれなりに速さを意識してスイクンの部屋まで移動する。移動したら手持ちからムウマのステータスを見られるよう準備し、COReaderの「開始」ボタンを押してムウマのステータスを開く。手持ち画面では消費は進まないので、ここは急ぐ必要はない。先に「開始」して、そのあとステータス画面を開こう。
ここまでが正しくできていれば、ムウマの顔部分が枠内に映り込み、ゲーム内の瞬きに合わせて左の枠に瞬きがカウントされていく。そして10回目の瞬きと同時に音が鳴り、seed検索が始まる。(音が鳴ったらBボタンを押してムウマのステータス画面を閉じよう。)検索が完了すると、下の枠に消費数、現在seed、目標までの消費数が表示される。(「目標」のところに適当なseedが入っていないとうまく特定できないので、一見不要な前項の作業はそのために必要になる。)なお、入力する消費数の範囲は、初期seedから目標までの範囲ではなく、初期seedから現在seedまでの消費数の候補範囲であることに注意。
自分が操作した場合は大体20000弱の消費でスイクン部屋にたどり着けた。基本的には50000も取っておけば十分かと思われる。
うまくいったら手持ち画面に戻り、何度か試してみるのがよい。一回の特定作業で600程度の消費が進むので、同じ初期seedと消費範囲を取っておけば、使い回しが効く。そして、音が鳴ったらできるだけ早くBボタンで手持ち画面に戻る操作に慣れておこう。
※消費数の候補範囲を数万程度に取っている分にはすぐに検索が終わるが、数億のように広く取りすぎると検索に時間がかかってしまう。しかも、検索中なのか検索完了した結果0件ヒットだったのかを見分けるのが難しい。この先広い範囲を検索する場合は、タスクマネージャーを開いて、CPU使用率を見て検索中なのかを判断するのがよいだろう。基本的には上限下限を適当に取って、検索範囲が広くなりすぎるのを防ぐようにしたい。
ここまでが第一関門。初期seedの特定と、続きからでゲーム再開後の現在seed特定が手際よくできるようになっておこう。
・BlinkTimerの使用
「瞬き」タブを使うと現在のseedを特定できると書いた。実はこれは厳密には正しくない。というのは、10回目の瞬き後に音を聞いてそこからステータス画面を閉じており、このちょっとの間にも消費が進んでいるため、特定したseedから少し進んでしまうのである。ここを解消するのがCoToolのBlinkTimerである。
では練習のために、BlinkTimerを使ってみよう。CoToolの「瞬き検索」タブの「シード」に先ほど「瞬き」タブで特定した現在seedを入力。「消費数を指定」を選択し、0~5000を入力。「リストを表示する」にチェックを入れて「計算」をクリックし、結果が出力されたら「BlinkTimer」をクリック。別ウインドウが表示されるので、「開始」ボタンをクリックすると同時にムウマのステータス画面に入る。するとタイマーが動き出して数秒ごとに音が鳴り出す。この音がムウマの瞬きと連動しているのだが、そのままだと少しズレている。おそらく瞬きしたちょっと後に音が鳴っているはず。慣れるまではこのズレに気付くのが難しいが、瞬きしたちょっと後に音が鳴ると思って聞き続ければ、必ず少し遅れて音が聞こえてくることに気付くだろう。瞬きの感覚と音の感覚が合うことを意識して聞いていれば気付けるかもしれない。
このズレを補正する。瞬きの後に音が鳴る場合は、「早める」を何度か押して、瞬きと音が同じタイミングで鳴るように調節する。自分の場合は-70くらいまで押すとちょうど合うくらいになった。タイマー開始とAボタンを同時に押すタイミングやキャプチャ環境によるズレ、操作者の動体視力や反射神経などでここは人によって変わってくる。逆にズレている場合には「遅らせる」で調節していこう。
うまく音と瞬きのタイミングが合うようにできたらそのままタイマーが切れるのを待つ。そして残り時間が0になると同時にBボタンでステータス画面を閉じる。これで、今度こそ狙ったseedで消費を止めることが可能となる。CoToolの「瞬き検索」タブの検索結果の一番右下、「現在のシード」に表示されているのが、BlinkTimerが切れたときのseedである。
このBlinkTimerを使えるようになるのが一番の関門かと思われる。リセットしなくても試行は何度もできるので、COReaderでおよそのseedを特定しCoToolで正確にseedを特定するというこの一連の流れを、何度もやって慣れていこう。
また、ずれがある程度一定の値に収まるようになってきたら、開始オフセットに事前に入力してから開始すれば、調整不要となる。
・オフセットの特定
ここまでできればあと少し。BlinkTimerでの消費ができたら、そのままヴィーナス戦を開始しスイクンを捕獲。捕獲した個体のステータスをxdpokemonに入力する。「シード」のところにはCOReaderで特定したseedを入力し、強制消費数1を0~BlinkTimerで消費したのより少し多めに取った値を入力して検索する。これで個体がヒットするはずだが、結果の「強制消費数1」のところに注目する。CoToolでの「合計消費数」よりも少し余分に消費されているはずである。このずれがオフセットである。ある程度の操作精度でやれば、このずれは一定になるはずである。何度かスイクンを捕獲し、この値を特定する。このオフセットをBlinkTimerの「終了時オフセット」に入力すれば、あらかじめその分を差し引いて消費をしてくれるようになる。ちなみに自分はオフセット16であった。もしこの値がやるたびにブレるなら、おそらくBlinkTimerが切れるタイミングでBボタンを押すというのがうまくできていないと思われる。タイマーが0になる瞬間にBボタンを押す訓練をしよう。
以上で練習は完了。ポイントは以下である。
・COReaderとキャプチャソフトが正しく連動できていることを確認する
・ムウマの瞬きでおよその現在seedを特定できるようになる
・BlinkTimerで瞬きと音のタイミングを合わせられるようになる(自分のズレの値を把握する)
・BlinkTimerを用いて消費数を調整できるようになる
・オフセットの再現性がある操作ができるようになり、その値を特定する
特に、開始オフセットと終了オフセットを安定して特定することが大切。
ここまでできればもはやスイクンを捕まえたも同然である。
■狙った個体のスイクンを捕獲する
ここからはスイクンの乱数調整に入る。
・狙うseedを検索する
xdcheckで狙う個体候補を検索する。COSearchというツールでも検索はできるようだが、めざパに対応していなさそう。
一点狙いでもよいが、初めてやるなら少し緩めに範囲を取って多めに候補を出しておくことをオススメする。
・初期seedの特定
とにかくバトルで初期seedを特定する。
そしてxdseedの「目標のシード」タブで狙ったseedまでの消費数を検索。ちなみにこの後でも出てくるが、消費は毎秒17200くらいなので、1時間待機だと6000万消費くらい。自分が待てる時間に合わせて消費数の幅は取るようにしよう。
ちなみにCOReaderの「とにかくバトル」タブの「消費上限」「目標seed」項目を使えば、xdseedなしでこれを行うことも可能である。
・ゲームを再開しスイクン部屋に移動
いい感じの初期seedに巡り合えたら続きから始めるで再開し、スイクン部屋に移動、COReaderで現在seedを特定する。目標のところには狙うseedを入力しておく。
・消費を行う
ここからが練習と異なるところ。ダークポケモンのステータス画面を開くと17200/sくらいで消費できるので、大体数万くらいを残すようにして消費を行う。
・消費後のseedを特定
消費したら再度COReaderでseedを特定する。「seed」のところには消費前に特定した値を、消費範囲はxdseedで検索した目標までのseedを上限に、適当な範囲に取る。(最大17000/sくらいにはブレるようなので、待機時間[秒]×200くらいの幅で取るのがよいか。)
ここまでがうまくできていれば、それらしき消費数で現在のseedが特定できるはずである。
・少しずつ消費していく
ここからは前述のかけらさんのブログを参照として済ませたいが、一応同じようなことを書いておく。
まずダークポケモンのステータスを表示してすぐ閉じる、という行為である程度の消費を行う。自分の場合は1回やると4000くらい消費した。何度かやってみて、自分の操作感でやると一回どれくらい消費するのかを認識しておこう。一回やってCOReader、もう一回やってCOReader、これを繰り返し、ある程度安定した消費数でできるようになったらまとめて消費しても構わない。残り消費数が1万を切るくらいまで消費する。
・最後の微調整を検索する
ここまでできたらCoToolで最後の調整を行う。
まずは正確な残り消費数を検索する。xdpokemonに最後に特定した現在seedを入力し、強制消費数1の範囲を残り消費数分くらいまで取って、検索する。これでヒットした「強制消費数1」が残り消費すべき消費数である。
今度はCoToolの「シード」に最後に特定した現在seedを入力。「目標の消費数」チェックを入れてxdpokemonで特定した残り消費数を入力。これで「計算」するといくつかの結果がヒットするはずである。この中のどれを選んでもよいが、ここでは「ステータス」の列が0回のものを選ぼう。選んだ行の「スナッチリスト」の回数と「消費数」の値を覚えておくこと。
今度は「消費数を指定」にチェックを入れ、0~先ほど選んだ消費数の範囲で「リストを表示する」。これで結果の一番下の行は、先ほど選んだ行の「シード」と一致するはずである。さらに、「合計消費数」の値に「スナッチリスト」の回数×7を足すと、目標の消費数と一致するはずである。
・最後の微調整を実施する
ここまで確認できたらBlinkTimerを開き、終了オフセットに練習で特定した値が入っていることを確認して、開始と同時にムウマのステータスを開く。あとは練習同様に音のタイミングを合わせて、タイマーが切れると同時にムウマのステータス画面を閉じる。
最後にスナッチリストを指定された回数だけ開き、ヴィーナス戦を開始してスイクンを捕獲する。成功していれば、素敵なステータスのスイクンが手持ちに加わっているはずである。
練習でオフセットの特定がブレなく何度も再現できていれば、実践でつまづくポイントはほとんどないはずである。
※ちなみに、COReaderの機能でスナッチリストを開いた回数を自動的にカウントしてくれるようだが、自分はうまく動いてくれなかったので、泣きながら手で数えた。
※「ステータス」の列が0回のものを選ぶ理由は、神経を使う操作はできるだけやりたくないという私の個人的な理由である。もちろんこの操作ができた方がバリエーションが増えるので、できるに越したことはない。
■同じようにやればライコウも乱数調整できるの?
残念ながらライコウはスイクンよりも難易度が高い。
フィールド上で不定消費が入り、1Fごとに消費が進んでしまうため、seed特定→消費→フレーム合わせ、という工程を毎回踏む必要がある。
面倒なことに、どうやら不定消費は連続的にではなく離散的に行われているらしい。分かりやすく言うと、seedによっては狙った消費数が絶対に出ないという場合がありうるようだ。
加えて、一点狙いで乱数調整しているプレイヤーが多い都合か、今回のスイクンのように広い範囲を候補に乱数調整する場合の手順が十分に確立していない(ように少なくとも自分の見える範囲では思える)。特に、色違いを狙うとどうしても一点狙いになってしまう都合上、このような実情となっているのだろう。もしこの辺を解消できるようなやり方を確立できれば、また記事を書こうと思う。