ポケモン BDSP 固定シンボル乱数調整手順メモ(Project_Xs)

BDSPの固定シンボル乱数調整を遅ればせながら試してみたので手順などをメモしておきます。

使用ツール

Project_Xs

Project_Xsというツールの以下のforkを使用する。(記事時点でv1.0.3)
Releases · jjaldridge2009/Project_Xs · GitHub
上記ページからダウンロードできるBDSP.RNG.zipには必要なファイルが全て含まれているため、基本的にこれだけ落としておけばOK。

使用デバイス

HDMIキャプチャ

switchをドックに挿して映像をHDMIキャプチャでPCに取り込む。
最初に試したのはAVerMedia Live Gamer Portableという8年前の化石だったが、槍の柱に入ると重くなる・PokeControllerで映像が映らない等かなり問題が多かったので、安くて小型になっている現代のキャプボを購入推奨

準備

本体設定

switch本体の拡大機能を利用するので、本体の設定→本体→画面のズームをオンにしておく。
(拡大モードに入るにはHOMEボタンを素早く2回押す)

ゲーム内の準備

ソノオタウンでコダックじょうろを受け取っておき、+ボタンのショートカットに登録しておく。
これにより任意の場所で博士の「使いどきがあるぞ!」のメッセージを出すことができ、メッセージが出ている間は主人公のモーションが固定されるので、乱数調整に利用できる。
以後、拡大モードに入る際は主人公が下(画面手前)を向き、このメッセージを表示した状態で入るものとする。

ツールのインストール

Project_XsのzipにPlayerBlink Quick Start Guide.pdfというファイルがあり、基本的にはここに書いてあるとおり。

  • Python 3.9.6のインストール

まず同梱のpython-3.9.6-amd64.exeからpythonをインストール(「Add to Python 3.9 to PATH」にチェックを入れる)し、Project XSフォルダのinstall.batを実行する。

  • カメラ番号の確認

HDMIキャプチャを繋いでいる状態でcamera.batを起動すると現在PCで認識しているカメラデバイスの一覧が表示されるので、繋いだキャプチャのデバイス名が何番目に並んでいるかを確認しておく。なお先頭を0とする。

  • 自分用のconfigファイルの作成

Project XSフォルダ内にあるconfigsフォルダを開き、config_***.jsonというファイルのどれかをコピーし、わかりやすい名前に変更する。
(後述のseed特定と現在位置再特定で2つコピーすると便利。ここでは「config_テンガン山.json」と「config_槍の柱.json」とした。)

  • Player Blinkの起動

その後run.batを実行すればPlayer Blinkが起動する。
「+」のボタンの左にあるボックスをクリックし、先程作成したconfigファイルを選択後、Camera: と書いてある欄に先程確認したカメラ番号を入力し、「Preview」ボタンを押してツール上にゲーム画面が表示されたら成功。

目の画像の準備

拡大モードに入って画面をPC上に映した状態で、Win+Shift+Sで主人公の片目部分を選択して切り抜き、Project XS/imagesフォルダに画像として保存する。

Player BlinkのSelect Eyeボタンを押し、保存した画像を選択。その後Save Configで保存しておく。
(複数のconfigファイルを作った場合は全てに対しSelect Eye→Save Configを行う。)

乱数調整の手順

現在seedの特定

NPCポケモンのシンボルがいない場所(槍の柱からテンガン山に入ったところ、地下の秘密基地など)で拡大モードに入る。(主人公を手前に向かせてコダックじょうろを使おうとした状態にすること。)
Player Blinkの画面上に四角が表示されているので、右のXYを調節して四角が主人公の片目(画像として保存した方の目)を囲むようにする。

この時、しばらく見ていて主人公がまばたきした時だけ一瞬四角が消える状態になっていれば成功。

この状態でStop Previewを押した後にMonitor Blinksを押すと測定開始。主人公が40回まばたきをするとseedが特定される。
(ツール側の仕様で何らかの計算をする前は必ずPreviewを止めないといけないらしい。)

PokeFinderの準備

BDSP.RNGフォルダに同梱されているPokeFinder-windowsフォルダ内のPokeFinder.exeを起動。メニューのTools→SettingsでLanguageをJapaneseにしておくと便利。
Gen8→Staticで固定シンボル用のツールを開く。
上部のProfile Managerでプロファイルを登録(必要なのはVersionの設定のみ。あとは適当でOK)して選択し、SettingsのCategoryとPokemonを設定する。

先程特定したseedをSeed 0Seed 1の欄に入力したらGenerateで個体リストを生成できる。
Filtersで個体値や色違い等のフィルターを設定でき、欲しい個体を検索できる。

Delayについて

BDSPの固定シンボル戦闘では、戦闘前のイベントで最後にAボタンを押してから実際に個体が生成されるまで、ポケモンごとにある程度乱数が消費される。(これがDelayと呼ばれている。)
ポケモンごとのおおよその値は既に調査されているが、ボタンを押すタイミングなどの微妙な個人差があるため必ず自分で試して実際の値を確認する必要がある。
参考値は以下のようになっていて、より詳細にはBDSP.RNG同梱のBDSP FAQ - Latest Version.pdfで確認できる。

ポケモン Delay
ディアルガ/パルキア 84
アルセウス 133
ダークライ 84
目標までのDelayの確認

seedが求まった状態で対象のシンボルの前まで行き、再度拡大モードに入る。
場所によってカメラの角度が違うので、seed特定とは別のconfigファイルを指定し、目の位置調整をやり直してSaveしておく。
そしてReident 1 PK NPCにチェックを入れ、Reident Maxを100000程度にしてからReidentifyを押すと現在のAdvances(求めたseedから何個乱数が消費されたか)を特定できる。
ここからはツール上で自動的に時間経過による乱数消費が計算されるため、ツールを開いたままにし、拡大モードを解除したら上キーを押した状態で博士のメッセージを閉じ、そのまま戦闘前イベントに突入する。
(方向キーを入れていないとメッセージを閉じた瞬間に主人公の待機モーションが再生されてしまうことがあり、消費数がズレてしまう。)

あとAボタン1回で戦闘に入れるようにした状態で待機し、ツール上のAdvancesがキリのいい数字になった所でAボタン。この時の数字を覚えておく。

ポケモンを捕まえたら個体値を測定し、PokeFinderのリスト上でAdvancesいくつの個体が出たかをチェックする。このPokeFinderのリスト上のAdvances-Aボタンを押した時のPlayerBlinkのAdvancesがDelayの実測値となる。(大体は参考値+-2ぐらいには収まると思うので、大きくはずれている場合は手順が間違っていると思われる。)

実際の乱数調整

自分の環境でのDelayが求まったら、PokeFinderのFilterのUse Delayにチェックを入れ、右のボックスにDelayの数値を入力しておく。これを設定しておくと、PlayerBlink上のAdvancesがPokeFinderでの目標個体のAdvancesの値と一致した時にAボタンを押せばよくなる。

まずはリセットして現在seedの特定からやり直し、seedが求まったらPokeFinderで目標個体のAdvancesを確認。
この時目標のAdvancesがとても大きい場合、図鑑を開くことで大量に乱数を消費することができる。

図鑑を開いた場合の乱数消費数は図鑑の完成具合にもよるので、こちらも実際に自分の環境で確認しておく必要がある。
適当に殿堂入りした後のデータでは以下のようになっていた。

行動 消費数
図鑑を開いて閉じる 約200
図鑑を開き、→4回、←4回を素早く入力して閉じる 約1200
図鑑を開き、→5回、←5回を素早く入力して閉じる 約1500
図鑑を開き、→10回、←10回を素早く入力して閉じる 約2700


図鑑による消費で目標のAdvancesにおおよそ近づけたと思ったら、Delay測定時と同様にポケモンの前まで行きReidentifyで現在のAdvancesを確認する。
PlayerBlink上で現在のAdvancesが確認できるようになったら、同様の手順でAボタン1回で戦闘に入れるようにした状態まで行き、目標のAdvancesになるまで待機し、目標のAdvancesになった瞬間にAボタンを押す。
これでずれがなければ目標の個体が出るはずだが、もしずれるようだったらDelayの測定をやり直し、少しずつ調整していけばOK。お疲れ様でした。