動機
- テラピースを50個集めるのが面倒で、とにかく自動化したい。
- 複数のソフトやマイコン等を使う方法は確立されているが、テラピースさえ集められればよいので、もっとお手軽に実現したい。
手法
オンラインのテラレイドバトルをボタン連打で自動周回する。
注意事項
- バトル中は基本的にAボタン連打のため、★6レイドなどの高難易度レイドは難しい。
- そのため、簡単にクリアできるイベントレイド期間中に周回するなど、味方に迷惑がかからないように努める。
必要なもの
おおまかな手順
Joycontrolとは
ニンテンドースイッチのコントローラをエミュレートし、Bluetooth経由でPCとスイッチが通信できる。
つまり、PCがコントローラになる。理屈上なんでも自動化可能。
USBドングルが必要なケース
PCの内蔵Bluetoothアダプタが機能しない場合がある。
筆者のMac miniでも機能しなかったため、TP-Link UB400 (Amazonで1000円) を使用した。
後継品のUB500はMac miniに対応していなかった (1敗)
Linux環境構築とJoycontrol導入
こちらのサイトを参照し、"4. 動作テスト" まで完了する。
すでにLinux環境がある場合はJoycontrolのインストールのみでOK。
なお、上記サイトにあるVirtual Box, Ubuntuのリンク先のバージョンは検証時より新しくなっている。
検証当時のバージョンはこちら。
Virtual Box 6.1.12
https://download.virtualbox.org/virtualbox/6.1.12/VirtualBox-6.1.12-139181-Win.exeUbuntu 20.04
Ubuntu 20.04 LTS 日本語 Remix リリース | Ubuntu Japanese Team
レイド周回マクロ作成
上記の動作テストで使用したスクリプトの中身を書き変える。
ターミナル(端末)を立ち上げて、適当なエディタでスクリプトを開く。
nano plugins/tests/TestControllerButtons.py
一番下のrun関数
async def run(self): logger.info('TEST Controller Buttons Plugin') await self.push_all_buttons() await self.pushing_button_simultaneous() await self.long_press_button()
を以下のように修正する。
async def run(self): while True: await self.button_push('x') await self.wait(1.0) await self.button_push('a') await self.wait(0.5) await self.button_push('r') await self.wait(0.5) await self.button_push('a') await self.wait(0.5)
0.5秒間隔で X→A→A→R→A の順にボタンを押し続ける。
- Xでメニューを開いてテラレイドバトルの画面に移動する。
- Rでバトル中にテラスタルする。
レイドを周回する
事前準備
- Aボタン連打で勝てるポケモンを用意する。
- バッグ内のボールを空にする。自動で捕まえてしまうため。
- おまかせレポートをONにする。通信エラーによるフリーズ対策。
実行
sudo joycontrol-pluginloader -r 01:23:45:67:89:AB plugins/tests/TestControllerButtons.py
結果
ハピナスレイド最高。