全自動カムラポイント回収機作ってみた
「強走薬とお食事券いっぱいほち~~~~~!!!!」
全自動カムラポイント回収機を作るきっかけとなったのはつまりそういうことです。
特にマイコンをいじってた経験もなく、C言語やPythonなどがが多少わかる程度の一般人ですが、自動化でメジャーなポケ〇ン自動孵化や自動ワット稼ぎについてググったら案外簡単かつ安価で作れそうだったので
「モンハンの作業ゲーも自動化してやろう!」
と思い切って作ることを決めました。後ほど作り方説明しますが、まずはどんな感じか動画をご覧ください。
どうでしょうか?
人間が操作しなくてもこのような動きが簡単に行えるのです。ではこれから何が必要で、どのようにして作っているのかをざっくりと解説していきたいと思います。
準備するもの
- PC
- Arduino IDE(無料でインストールできます)https://www.arduino.cc/en/software
- Arduino Leonardo
- USBケーブル(タイプA - マイクロB) ※テレビ出力の場合
- USBケーブル(タイプC - マイクロB) ※携帯機として使う場合,Liteの場合
必要なものは以上です。めちゃめちゃ古いPCや、リンクで貼り付けたようなPCでなければ多分大丈夫です。
Arduino Leonardoというやつが今回使っていくマイクロコンピュータ、いわゆるマイコンです。他にもArduino UNOなどありますが、マイコン経験ゼロでよくわかんないのでポケモン自動孵化関連のサイトで紹介されたたものと同じものを購入しました。リンク貼り付けたのは3つセットなので単体で買えばもっと安く済むと思います。
秋葉原とか難波にも売ってそう。知らんけど。
テレビ接続時に使うUSBケーブルは、昔のアンドロイドとかPS4コントローラーの充電ケーブルとして使っているものと同じタイプなので流用しても構いません。
予備知識
プログラミングに関する知識が多少必要ですが、初心者でも簡単に書けるほどのレベルなので諦めないでください。本当に簡単です。
全自動カムラポイント回収機を作るにあたって最低限知っておいたほう方がよいプログラミング言語・基本文法はC言語のfor文、自作関数程度です。ボタン操作に関する関数は、有志によって作られたNintendoSwitchControlLibraryというライブラリをインクルードすることによって簡単に書くことができます。具体的な記述方法はダウンロードページに記載されています。
github.com
メルカリで許可なく売られる可能性があるので、ここでは自分の書いたコードを全部載せることはしませんが、今後不定期で簡単な操作の記述方法や、作っておくと楽な関数について解説していこうかなぁと思っております。
環境の導入
Arduino IDEというソフトをインストールして実際に書いていくのですが、書く前に先程紹介したNintendoSwicthControlLibraryをインストールし、Arduino IDEに追加しましょう。Switchを動かすためのArduino IDEの設定や、ライブラリの追加方法などは、詳しく書いていただいている方がいらっしゃるので、以下のリンクから飛んで参考にしてください。ポケモンでもモンハンでも同じSwitchのソフトなので同様の作業をすれば大丈夫です。
雑ですみません。
マイコンを導入して、ポケモン剣盾を自動化しよう!【Mac・Windows】|ポケモニット
作業の流れ
準備物を調える
↓
開発環境を調える
↓
コード書く
↓
実機で検証
↓
コード書く
↓
実機で検証
↓
コード書く
↓
\^o^/
って感じです。雑ですみません。長い操作をしようと思うと無限にこれの繰り返しです。これを楽しいと思うか楽しくないと思うかはあなた次第と言いたいところですが実際楽しいです。思った通りに動いてくれた時の快感はたまりません。気付いたら20時間溶けますから。
コードを書くにあたって意識したこと
時間指定で操作を書き込むので、フレームレートの不安定性の影響で特にLスティックの視点操作に若干の差が出てきます。対処法としては、そもそも視点操作をせずにキャラを動かすか、Lスティックを使わずLボタンのみの視点移動(正面向き)に縛るくらいです。ただ、Lスティック操作によるズレが生じても自分の調整次第によっては思い通りに動いてくれます。
しかしそのようなずれが生じた場合でも、壁の角に挟まるように走って位置を固定(動画では3:43あたり)したり、崖飛び降り時に壁に沿ってAボタン連打ダッシュすることで必ず決まった位置で宙吊り状態(動画では2:20あたり)を作ることができます。
また、翔蟲使用したときや飛び降りた時の着地硬直時間をカットすると割と時間短縮に繋がるのでおすすめです。
最後に
かなりざっくりとした全体的な流れとコーディングに当たっての留意点を述べました。これだけではまだ
「どんなもん書いとるんじゃあああ!!!」
という方がほとんどだと思います。ということで実際にどのようなコードを書いているのかを次回以降で説明していきたいと思います。