サイファーの日記

過去作の乱数について書きます

VCセレビィ厳選の自動化をやってみた

VCクリスタルのセレビィが1/8192の超低確率で色違いになるのは、多くの人が知っていると思います。今回はVCセレビィの厳選を自動でやってみました。

画像を差し替えればセレビィ以外にスイクン、ホウオウ、ルギアの厳選も出来ると考えられます。やることが単純なので書くまでもない気もしますが、備忘録として。
※このやり方はStartとSelectの構造上、旧3DSでは難しいと思われるので注意。

準備したもの
・偽トロ or ウェブカメラ
・太さ1.6ミリくらいの針金(参考動画)
サーボモーターSG92Rを2,3個程度
・ジャンパワイヤ10本程度
・ブレッドボード
・クランプなどのサーボを押さえる道具
Arduino UnoとUSBケーブル
・高さ調節用のダンボール板や木版など

使ったプログラム
シリアル通信を利用します。最初にArduinoにプログラムを書き込んでおき、その後にPythonで動かします。
事前にデスクトップ上に映った緑色のセレビィの画像(今回は「27.png」がそれ)をスクショ→トリミングで用意します。画像はユーザーフォルダに置いてパスを指定しないとエラーを吐いた気がします。

Python
(左が本番用、右は画像認識の閾値調整用)

PyAutoGUIを利用して、デスクトップ上から指定した画像に近い物体を検出します。私の場合confidenceが「0.83」となっていますが、ここは右の閾値確認用を使い、吟味して調節して下さい。一致していると判定されるギリギリの値に調節します。赤色のセレビィが出たらconfidenceを下回るため、サーボの動きが止まるようになっています。

Arduino

ライブラリはVarSpeedServoでなくても大丈夫だと思います。ハンチングを抑えるために利用しました。
サーボの動く角度が小さいとソフトリセットがうまく出来ず、大きいと徐々に位置がズレていくので少し面倒です。何回かやってみて適切な数値を見つけることになります。ネジを絞めておくのを忘れると、途中でサーボホーンが外れます。

実際の様子
上の動画で紹介されているように、捻じ曲げた針金を用意し


New3DSのStartとSelectを挟み込みます。挟む力が丁度いいので、ボタンが凹むことはないと考えられます。針金の厚さ分、補うためのダンボールを下に敷きます。グラグラしないように工夫してみて下さい。

AとBを押すサーボは超適当にダンベルで押さえさせています。私の場合は問題ありませんでしたが、ホームセンターでいい感じのクランプを用意した方が安心です。


やった結果

無事にゲット、やったぜ。

合計で色セレビィ2体、色ホウオウ1体を出してくれました。3体中2体はウェブカメラでやりましたが、やはり偽トロの方が楽でした。
ちなみにタッチパネルを使ったハードリセットでリセットすると個体に再現性が出やすいらしく、おすすめできません。同じ個体に繰り返し出会っている可能性があるとかないとか(参考サイト)。
今回はそれを避けるべく、リセットは個体の再現が起こりにくいA+B+Start+Selectで行いました。

※追記(2022/8/1)
サーボを使って簡単に調べてみました。OP最速飛ばしはしていません。
タイトル画面の表示時間が2Fズレるだけでも、同じ個体には遭遇しませんでした。
ただ、同じタイミングだと6〜8通りの個体が、時々重複も起こりつつ出てきました。
たかだか1/8192なので、手動による厳選に限って言えばハードリセットでも問題ないように思えます。


終わりに
プログラムの作り方を調べ、それを実行したのは初めてだったのでいい機会になりました。物理的なボタン操作なので不自由な点が多いです。Controller Mod使え。音もまあまあ大きいので、集中して作業する部屋ではやらない方がいいと思います。もっといい方法があれば、アドバイスを頂けると嬉しいです。


おまけ

一日のプレイ時間カンスト(どうでもよい)


輸送したら「A05V色セレビィ+6文字NN」という極悪違法個体()になった