<span style="font-size: 110%;"> こんにちは。[**ニアト**](https://twitter.com/21i10r29)です。 先日は[BDSP乱数ツール "XsReader" の紹介](https://hackmd.io/@niart/SkCpMpk9n)をしましたが、今回は別のBDSP乱数ツールである[**Go Reader**](https://www.dropbox.com/sh/2kv6tp6d54opkfx/AAA2VmSdrooAodC5KzGLxv58a?dl=0)を紹介します。 ## Go Readerの概要(1) Go Readerは2022年3月に夜綱氏によって開発された、BDSP向けのID調整ツールです。 Readme.txtでの紹介を以下に引用します。 > BDSPのゴンベの瞬きを観測するやつです。 流石にこれだけだと味気ないのでもう少し解説しましょう。 ## Go Readerの概要(2) このツールは以前私が考察した[**ID調整のアルゴリズム**](https://hackmd.io/@niart/BJZc7whZ5) と、夜綱氏本人による[**改良アルゴリズム**](https://hackmd.io/@yatsuna827/SkC4h5JZq)をC#上で実装したものとなっています。 GoReaderを使ってID調整を行う場合の想定フローは以下の通りです。 1. init(基準Seed)を特定する 2. 欲しい6桁のidを入力して検索する 3. 名前入力->キャンセルを繰り返して乱数消費する 4. seed再特定をして目標消費数にどれだけ近づいたか調べる 5. `消費数`が`けんさくけっか`で出てきたものに十分近づくまで3,4 を繰り返す 6. `消費数`が`検索結果`で表示されているものと等しくなったときに主人公の顔写真を選択する 7. 目的のIDに調整完了! PlayerBlink(Python製BDSP乱数ツール)でもID調整は可能ですが、GoReaderの方が高速なアルゴリズムを採用しており、さらに動作安定性が高いのが特徴です。 ID調整を行う場合は基本的にこちらのツールを利用することを推奨します。 ## 手法の説明 GoReaderを利用したID調整の手法について説明していきます。 ### 準備:環境構築 必要な機材・ソフトウェアを以下に示します。 #### 機材 - Windows PC - Nintendo Switch - キャプチャーボード switchの画面をPCに取り込める環境が必要となります。 #### ソフトウェア - (任意)OBSなどのキャプチャ用ソフト キャプチャーボードを持っている方であればOBSなどは既に導入されていると思います。 もし導入されていない方の場合でも、Windows10以降のPCをお使いであれば"カメラ"アプリが標準で入っているのでそちらで代用可能です。 :::info 以降の説明ではOBSを用いて説明します。他のソフトをお使いの方は各自の環境に読み替えてください。 ::: ### 準備:ツールのDL 以下のURLからリンク先の`ダウンロード`ボタンをクリックして`GoReader.zip`をダウンロードします。Dropboxの登録を求められることがありますが、無視して問題ありません。 https://www.dropbox.com/sh/2kv6tp6d54opkfx/AAA2VmSdrooAodC5KzGLxv58a?dl=0 ![](https://hackmd.io/_uploads/SJbRvMZsh.png) zipファイルをダウンロードしたらファイルを展開(解凍)します。 :::info zipファイルをダブルクリックして開いても動作しません。必ず展開したフォルダから実行してください。 ::: ### 実践:基準Seedの特定 #### Switch側の準備 任意の言語を選んで新しくゲームを開始して、ナナカマド博士がゴンベを出す画面まで進めてください。 ![](https://i.imgur.com/owPqaQl.png) 以降、基準Seed特定が完了するまでSwitch側を操作する必要はありません。場合によっては長時間放置することになるため、自動スリープは切っておきましょう。 :::warning Switch側でやりがちなミスとして - 画面がスリープして観測が中断された などが挙げられます。 ::: #### 画像の撮影 つづいてPC側でゴンベの目の画像を撮影しましょう。 ツールを開き、`キャプチャ枠表示`をクリックすると小さなウィンドウが表示されます。 今後、このウィンドウのことを**キャプチャウィンドウ**と呼称します。 ![](https://hackmd.io/_uploads/HJelsz-o3.png) キャプチャウィンドウをキャプボの画面上まで移動させ、ゴンベの目の位置に合わせます。 このとき、ウィンドウのサイズを変更してなるべくゴンベの目だけが入るように調整してください。 位置があっていることを確認して、ツールの`画像保存`ボタンをクリックします。 ![](https://hackmd.io/_uploads/SyCPof-i3.png) すると、`GoReader.exe`と同じフォルダに撮影した画像(`yyyymmddhhmmss.png`)が保存されます。必要に応じてリネームした上で、`Source` フォルダに格納してください。 :::warning PCの画面設定によっては目の画像を正しく撮影出来ない場合があります。 その場合は`設定`タブ内の`ディスプレイスケール`の項目をお使いのディスプレイのスケーリングと同じ値にセットしたうえで再度撮影してください。 ![](https://hackmd.io/_uploads/SJDeI4Min.png) 参考: [Windows 10 PCを導入したらすぐにディスプレイの表示サイズを設定しよう(スケーリング)](https://tanweb.net/2019/10/27/29025/) ::: また、目の画像が大きすぎる場合は正常に瞬きを検知できないことがあります。 その場合は保存した画像に対して、`画像ファイルを右クリック->プログラムから開く->ペイント`からペイントツールを起動しトリミングしてください。 ![](https://hackmd.io/_uploads/Hy603G-i2.png) :::info ペイントを用いたトリミングの方法等に関しては本記事の趣旨上解説しません。使い方が分からない場合は各自で調べていただくようお願いします。 ::: #### 瞬きの観測 いよいよ基準Seedの特定を行います。 `設定`タブ内の`瞬き画像`リストから先ほど撮影した画像を選択します(もし見つからない場合は`Reload`ボタンをクリックしてください)。選択したら`保存`ボタンを押します。 ![](https://hackmd.io/_uploads/B1WXAMWoh.png) 先ほど撮影に用いたキャプチャウィンドウは少し広げておきます。 その後`seed特定`タブに戻り、`自動検索`に☑を入れて`開始`ボタンをクリックすると瞬き観測が開始されます。 :::warning `想定誤差`の項目は基本的に変更する必要はありません。もし特定に失敗する場合はここの値を増やすと解決する場合があります。 ::: ![](https://hackmd.io/_uploads/BypkJ7-ih.png) 観測中は左側のテーブルに観測した瞬き間隔とその種類が追加されていきます。 エントロピーの値が128以上になるとSeedの復元処理が走り、特定出来ると`init`の値が更新されます。 :::warning ツール側でやりがちなミスとして - 他の画面を全画面にした所為でOBS側のウィンドウが隠れてしまう - キャプチャウィンドウの位置がズレている - 間違った画像を選択している などが挙げられます。 ::: 特定終了後は、ゴンベの瞬きと同期する形で`current`枠の消費数のカウントが増加し、`同期`タブ内で次のゴンベの瞬きまでのカウントダウンタイマーが走り始めます。 映像上のゴンベの瞬きとツールが同期していることを確認してください。 :::danger **注意:** ゲームソフトを完全に終了させてしまうとSeedがリセットされます。 基準Seedの特定からやり直してください。 ::: ### 実践:idの検索 特定した基準Seedを用いてid検索を行います。 `検索`枠の`た~げっと`内に狙いたいidを幾つか記入し、`消費数上限`を設定し`検索`ボタンをクリックすると`けんさくけっか`の欄に`消費数[F] 目的のid` の形式で候補が表示されます。 候補の中から適当なidを選んでください。 ![](https://hackmd.io/_uploads/Bkjng7bs2.png) ::: info id調整の場合、高速で乱数を消費することが困難なため、`消費数上限`は大きくても10万程度にすることを推奨します。 また、目的のidが見つからなかった場合はゲームをリセットして瞬きの観測からやり直してください。 ::: ::: warning GoReader単体ではいわゆるTSV特定(あるいは裏id特定)を行うことはできません。PokeFinder経由で目的のidを探す必要があります。 もし孵化乱数を行うためにTSVを知る必要がある場合は、以下のリンクを参考に進めてください; [**はじめてのBDSP ID調整**](https://note.com/junky_poke_/n/n86bb3d204b6b#X2nAp) ::: ## 乱数の消費 ゴンベの瞬きだけで目的のIDまでの消費を行う場合、次の瞬きまでの間隔が3~12秒かかる都合上、非常に時間がかかることになります。 より高速に乱数消費を行うには、名前入力による消費を利用します。名前決定とそのキャンセルの度に5消費が入ることを利用して時間短縮が可能です。 ナナカマド博士のメッセージを読み飛ばして、名前入力画面を表示させます。 ![](https://hackmd.io/_uploads/BybMrEbon.png) この画面からOKを選択して名前を仮決定したタイミングで乱数が5消費されます。 ![](https://hackmd.io/_uploads/BJOGU4Wih.png) その後、名前を確認する選択ウインドウでいいえ(No)を選択すると、再度名前入力画面に戻ってきます。 これらの手順を必要な回数だけ繰り返してください。 :::info 乱数消費に関する詳細な情報は以下のリンクを参考にしてください; [**はじめてのBDSP ID調整**](https://note.com/junky_poke_/n/n86bb3d204b6b#reB3h) ::: ## 実践:seedの再特定 ゴンベの瞬きや名前入力キャンセルによる乱数消費を行ったところで、現在の消費数を知るためにseedの再特定を行います。 `seed再特定`タブを開くと、幾つかの入力項目が表示されます。 - `検索範囲` seed特定を行う検索範囲です。 - `観測回数` 検索を行うのに必要な瞬き間隔の回数を指定します。消費数の範囲が10000程度の場合は4回、100000程度の場合は6回が目安です。 これらを入力の上、seed特定と同様に`開始`ボタンをクリックして検索を行います。 再特定の際は名前確認画面で特定を行ってください。 ![](https://hackmd.io/_uploads/BJOGU4Wih.png) 名前確認画面(再掲) ## 実践:ID決定 目標としている消費数が近づいたら、実際に名前を決定しましょう。 `seed再特定`タブから再特定を行った後、名前確認画面でいいえ(No)を選択して顔写真の画面で待機します。 ![](https://hackmd.io/_uploads/BkDXhEZon.png) この間に`同期`タブを開いておきましょう。次の消費がいつ起こるかが分かりやすいため便利です。 `current`枠内の消費数が目的のIDの出る消費数に到達すると同時に、主人公の顔写真を選択します。その後希望の名前を入力して決定したうえで、ナナカマド博士の名前確認にはい(Yes)と答えると調整完了です。 オープニング終了後ストーリーを進め、チュートリアル戦闘を完了させると、ポケモンのステータス画面からIDが確認できます。 ![](https://hackmd.io/_uploads/BkoSlBWsn.jpg) :::info もしID調整に失敗していた場合、そのままソフトを終了することでセーブデータ削除の手間を踏むことなくリトライできるため、オープニング後主人公の部屋を出る前に設定からオートセーブを切っておくことを推奨します。 ::: ## おわりに 本記事ではBDSPにおけるID調整ツールである**GoReader**の紹介と使い方の解説をしました。 もしツールの使い方などで分からないことがあれば、Discordのポケモン乱数鯖までお問い合わせください。`#ダイパリメイク`チャンネルにてお伺いいたします。 </span>