ニンテンドースイッチでおすすめ!オート連射/連射ホールドができるコントローラ【あつ森】

『あつまれ どうぶつの森』を最近よく遊んでいるのですが、純正のプロコンでは不便に感じることがいろいろとあります。
なんとかできないかと思い、幾つか得た情報を紹介いたします。
以前も連射コントローラを紹介しましたが、故障してしまいました。
am͜a͉zonで取り扱ってる中華製のものは、星5の評価でアマゾンギフト券を贈るなどといった「ヤラセ」や「さくら」の風潮が当たり前になっています。
Amazon.co.jpが販売・発送する商品はこれに限りません。
アクション、シューティング、レースゲームなどの対戦ゲームは純正のプロコン一択
Nintendo Switch Proコントローラ | Amazon.co.jp
最近ではHORI製のコントローラが任天堂に認可されていますが、amiiboを読み込むNFCやジャイロセンサーの補正機能などに対応していません。いろいろと不満はありますが、総合的なパフォーマンスから純正のプロコンをお勧めします。
コントローラによるスリープからの復帰、NFC機能、自動連射
はじめに前提条件として、この3つの機能があるものを探しました。
他にも指定した動作を自動で行うマクロ機能を持ったサイバーガジェット製のコントローラもありますが、某大手掲示板などの情報によると不評のようです。
これらが揃っている商品を熟考してみました。
中華製 Switch Proコントローラ : Amazon.co.jp
中国のBooKingというブランド名でGCHTというショップ(マーケットプレイス)が販売し、Amazon.co.jpが発送記事執筆時の価格:¥3,499
2020/08/24の夜から取り扱いを開始しているためレビューは今のところありません。ショップが無くなる可能性もあります。
OEMビジネスを利用したもので他のショップのコントローラにも使用されています。商品名だけでなく外観を確認する必要があります。
確認できる範囲でのマーケットプレイス名:scorel、Maxku、 etc…
コントローラによるスリープからの復帰
TVモードの場合、プロコンに慣れたら無くてはとても不便な機能amiiboを読み込ませるNFC機能
頻繁には利用しませんが無いよりもあった方が便利自動連射ホールド機能
以前に紹介した「ECHTPower」というブランドのものや類似商品は5分で自動的にコントローラの電源が切れるため、放置して連続作業を行わせるということはできないようです。他の同じコントローラのレビューなどを見る限りボタンを押している間だけ連射となるようです。
(洗濯バサミなどで物理的に固定する方法もあり?)
ジャイロセンサーと振動機能
6軸ジャイロセンサーとデュアルモーター振動とのことですが、プロコンと比べると確実に劣ります。ゲームにある機能を最大限楽しむなら、素直に純正のプロコンを使用するのが賢明です。
USB Type Cケーブル
充電などはUSB Type Cで行いケーブルも付属されます。結論
国内メーカーで、このような機能を持つコントローラは現時点ではないことと、安物買いの銭失いになる事を考えて、購入を見送りました。PCからBluetoothで接続し自動化出来る「joycontrol」
敷居は高くなりますが、手持ちの環境で無料で行うことが出来たこちらの方法を紹介します。
必要なもの/環境
- PC(Windows 10にて使用)
- Bluetooth環境
- ネット環境
- Linuxを動かすためのバーチャルマシン
※ご利用は自己責任でお願いします。
バーチャルマシンのインストール
VirtualBoxを利用して紹介されているものが多いですが、私の場合はVMwareをずっと使っているのでそちらで紹介します。Link:VMware-workstation-15.5.6-16341506.exe.tar
VMware Workstation 15.5.6が現在最新のようです。実際に使用するのは付属するPlayerなので無料で利用できます。圧縮されたtarファイルを展開後、「VMware-workstation-15.5.6-16341506.exe」をダブルクリックして、インストーラに従ってインストールしてください。
圧縮・解凍ソフトは「7-Zip」をお勧めします。
すでにインストールしている方は入れなくてもOKです。
elementary OSのダウンロード
個人的にお気に入りのUbuntuベースのOSを使用しました。isoファイルだけ使い、PC本体にインストールはしないので「elementary OSのダウンロード」の部分を参照してください。
VMwareにelementary OSをインストール
1)VMware Workstation Playerを起動して「新規仮想マシンの作成」容量の余裕がある場所を選択(SSDだと起動や動作が速い)
6)ハードウェアをカスタマイズをクリックしてメモリ容量などを変更
- 最近のIntel Core i3またはそれと同等のデュアルコア64bitプロセッサ
- 4 GB のシステムメモリー (RAM)
- 15 GB のディスクスペースのある SSD
7)「完了」をクリックして「仮想マシンの再生」
- キーボードレイアウトはJISキーボードが大半だと思うので日本語のままでOK
- 「elementaryのインストール中にアップデートをダウンロードする」にチェックを付けたまま続ける
(サードパーティ製ソフトウェアのインストールはチェックしなくてもOK) - ディスクを削除してelementaryをインストール
- Tokyoのまま続ける
- 名前とパスワードをわかりやすく設定し自動的にログインするにチェック
- インストール完了後「今すぐ再起動」をクリック
- 「Please remove the installation medium, then reboot」と表示されるので、ゲストを再起動
後々このパスワードを使うので忘れないようにしてください。
位置情報サービスは使わないため、それだけオフにして初期設定を済ませたあと、アップデートをインストールします。
VMware Toolsのインストール
ホスト(Windows)とゲスト(elementary)間でクリップボードやファイルのドラッグ&ドロップを有効にします。1)ドックにあるAppCenterを開きます
ウインドウのサイズを変更すると自動的にデスクトップが拡大・縮小します。
表示がおかしい場合はフルスクリーンにして戻すと治ると思います。
ターミナルとファイルをドックに追加
左上のアプリケーションをクリックして、ターミナルとファイルをドックにドラッグして追加します。joycontrol-kbのインストール
Linux上でニンテンドースイッチのコントローラをエミュレートできる「joycontrol-kb」を利用します。
「joycontrol-kb」は「joycontrol」の派生でキーボードでボタン操作ができるようになるソフトウェアです。
以下からターミナルを使ってコマンド入力で操作していきます。
joycontrolに必要なパッケージのインストール
ターミナルを起動して以下を実行1)依存関係のあるパッケージをインストール
sudo apt-get update -qy
sudo apt-get upgrade -qy
sudo apt-get install -qy git python3-pip libglib2.0-dev python3-dbus libhidapi-hidraw0 libhidapi-libusb0 libdbus-1-dev
sudo -H pip3 install hid aioconsole crc8 dbus-python keyboard
ターミナルへのコピペは「Ctrl+Shift+v」で貼り付けすることができます。
初回に警告が出るので「貼付け時に保護警告を表示」のチェックを外して「了解して貼り付け」をクリック
貼付け後「Enter」で実行します。
git clone https://github.com/QueenLinuxGlitch/joycontrol-kb.git
sudo -H pip3 install joycontrol-kb/
これで赤文字や黄色などのエラーがでなければインストール完了です。
joycontrol-kbの実行方法
はじめに、ドックにある「システム設定」から「電源」の非アクティブ時の項目を「なし」に設定してください。
Bluetooth環境
PCにBluetooth環境が必要です。
私の場合、以前購入したUSB2.0接続のBluetoothドングルを使用しています。
I-O DATA Bluetoothアダプター Class 2対応 4.0+EDR/LE対応 USBアダプター USB-BT40LE : Amazon.co.jp
Amazon.co.jpが販売・発送なので安心です。
記事執筆の価格が¥1,564なので、価格コムとam͜a͉zonの売れ筋1位である「TP-Link製 UB400」でも問題ないと思います。
TP-Link Bluetooth USBアダプタ Ver4.0 UB400 : Amazon.co.jp
Bluetooth 4.0ですが、5.0以降で販売されているものは今のところ全て中華製のバルク品になります。
機能で簡単に説明すると、5.0で通信速度と距離が拡大され、5.1で方向探知機能が追加となっています。
PCに接続するUSBドングルでは特に気にする必要はありません。
仮想マシンへのBluetoothの接続
VMwareの右上にあるUSBのマークを右クリックして「接続(ホストから切断)」joycontrolの基本的な操作
ターミナルを開き以下を実行します。1)ディレクトリの移動
cd joycontrol-kb/
「jo」と入力後にTabキーを押すことで入力補完されるので利用してください。
2)joycontrolの実行実行するときはNintendo Switchの「ホーム画面」→「コントローラ」→「持ち方順番を変える」の画面にします。
sudo python3 run_controller_cli.py PRO_CONTROLLER
実行ログが流れ、ペアリングが成功したら以下のログが数行続いたあとに止まります。
INFO – received output report – Sub command SubCommand.SET_PLAYER_LIGHTS
Enterキーを押してあげることで操作が可能になります。
次回実行時はキーボードの↑を押すことで過去の入力履歴が表示されます。「cmd>>」という表記になるので、「a」→「b」→「home」といった感じで入力してみてください。
「help」と入力すると英語で説明が表示されます。
【基本的なボタン入力】
a Aボタン
b Bボタン
x Xボタン
y Yボタン
l Lボタン
r Rボタン
zl ZLボタン
zr ZRボタン
l_stick Lスティックボタン
r_stick Rスティックボタン
minus -ボタン
plus +ボタン
up 十字ボタン(上)
down 十字ボタン(下)
left 十字ボタン(左)
right 十字ボタン(右)
capture キャプチャーボタン
home HOMEボタン
「keyboard」と入力するとキーボードでコントローラを操作することができます。
q=LEFT w=LstickUP e=UP r=ZL t=L y=R u=ZR i=RstickUP
a=LstickLEFT s=LstickDOWN d=LstickRIGHT f=RIGHT g=capture h=home j=RstickLEFT k=RStickDOWN l=RstickRIGHT
c=DOWN up=X down=B left=Y right=A
]= + [= –
recording機能などもありますが、今回は使わないので割愛させていただきます。
終了する場合は「exit」もしくはキーボードの「Ctrl+c」を押すことで終了します。
Bluetooth接続がエラーとなる場合
VMwareのUSBドングルの接続を右クリックして一度ホスト(PC)に接続、再度ゲスト(VM)に接続してみてください。elementary OSのBluetooth設定を開いた状態が接続されやすいです。
joycontrol-pluginloaderとプラグインのインストール
「Almtr」さんの「joycontrolプラグイン」を利用させていただきました。
詳細はこちらに書かれています。
joycontrol-pluginloaderのインストール
ターミナルを開き以下を実行git clone --recursive https://github.com/Almtr/joycontrol-pluginloader.git
sudo -H pip3 install joycontrol-pluginloader/
稚拙プラグインのダウンロード
簡単なものですが、どんぐりと松ぼっくり回収用に「AとYを連射ホールド」するスクリプトを作りました。ターミナルを開き以下を実行
git clone https://github.com/ichitaso/joycontrol-plugins.git
わかりやすく短くなるように名前を変更
mv joycontrol-plugins plugins
ディレクトリ(フォルダ)名が joycontrol-pluginsからpluginsという名前に変わります。
使い方
1)住民に話しかけないように、坂のない崖に木を植えます。2)木の正面で以下のように実行します。
「HOME」→「コントローラ」→「持ちかた/順番を変える」の画面にする
sudo python3 run_controller_cli.py PRO_CONTROLLER
「a」→「b」→「home」と入力して「exit」
3)ディレクトリの移動とコマンドの実行cd joycontrol-pluginloader/
以下のコマンドで連射ホールド
sudo joycontrol-pluginloader ../plugins/utils/RepeatAY.py
うまく接続されたら、AボタンとYボタンの連射が続けられ足元に落ちたものを回収していきます。
ポケットの持ち物は少ない方がより長い時間継続できます。
同じような要領でAボタンのみを連射ホールドします。
sudo joycontrol-pluginloader plugins/utils/RepeatA.py
5)終了方法
キーボードで「Ctrl+c」を押して終了します。
6)ディレクトリをもとに戻す
cd ..
これで一つ前のディレクトリに移動します。
自作プラグインの参考サンプル
MyPlugin.py
import logging
from JoycontrolPlugin import JoycontrolPlugin
logger = logging.getLogger(__name__)
# クラス名とファイル名を一致させる
class MyPlugin(JoycontrolPlugin):
async def run(self):
await self.button_push('a') # Aボタンを押す
await self.wait(0.3) # 0.3秒間待つ
await self.button_push('a', 'b') # AとBボタンを同時に押す
await self.wait(0.3)
await self.button_press('a', 'b', 'x') # A、B、Xボタンを同時に押し続ける
await self.wait(0.1)
await self.button_release('x') # Xボタンだけ離す
await self.wait(0.1)
await self.button_release('a', 'b') # AとBボタンも離す
await self.wait(0.1)
await self.button_push('a', press_time_sec=3.0) # Aボタンを3秒間長押しする
await self.wait(0.3)
スティック入力サンプル
StickPlugin.py
import logging
from JoycontrolPlugin import JoycontrolPlugin
logger = logging.getLogger(__name__)
# クラス名とファイル名を一致させる
class StickPlugin(JoycontrolPlugin):
async def run(self):
await self.left_stick('up') # 左スティックを上に傾ける
await self.wait(0.3) # 0.3秒間待つ
await self.right_stick('down') # 右スティックを下に傾ける
await self.wait(0.3)
await self.left_stick(angle=45) # 左スティックを左上(45度)に傾ける
await self.wait(0.3)
half_power = self.max_stick_power / 2
await self.left_stick('right', power=half_power) # 左スティックを半分の力で右に傾ける
await self.wait(0.3)
await self.left_stick('center') # 左スティックを中央に戻す
await self.right_stick('center') # 右スティックを中央に戻す
await self.wait(0.3)
実際に実行している動画
まとめ
一度環境さえ作ってしまえば、思ったより簡単かつ安価に行うことができました。
PCが無い、もっと手軽にやりたいという場合は「HORI製の有線コントローラ」がいいかと思います。
ホリパッドミニ for Nintendo Switch : Amazon.co.jp
NFCやジャイロ、振動機能などがありませんが、任天堂のライセンス商品です。
連射ホールド機能があり5分間でオートスリープしない、スティックを動かしながら連射機能を使える、国内メーカーでAmazon.co.jp が販売、発送など安心です。
カラーバリエーションの中ではピカチュウ&イーブイが好みです。
ディスカッション
コメント一覧
エラーが出る訳でもなくて、「Arduino を使わずに Bluetooth 経由で Nintendo Switch の操作を自動化する【ポケ…
Qiita」のWaiting for Switch to connect… Please open the “Change Grip/Order” menu.」の表示から動かない状態なってしまいました。その後もあちらの方に書いてあった対処方法を取ったのですがペアリングできず困っています。よろしければご助言を頂けると幸いです。
仮想マシンへのBluetoothの接続は完了されている状態でしょうか?
Nintendo Switchの「HOME」→「コントローラ」→「持ちかた/順番を変える」の画面にした状態で実行するのがポイントになりますので、その画面でコマンド実行後にしばらく待機してみてください。
※初回はelementary OSのBluetooth設定を開いた画面に「Nintendo Switch」と表示されないので時間がかかります。一度、接続されれば表示されるようになります。
Bluetoothへの接続は完了していて、任天堂スイッチの方も「持ち方/順番を変える」の画面にしてました。
その後に設定を開いてBluetoothを開いて見ると任天堂スイッチが出てきて、接続を許可するかどうか出てきたので許可を押すと繋がりました。接続の許可をしていなくて繋がらないことが分かりました。
大変ご迷惑をおかけして申し訳ありません。
またなにか分からないことがあった時には質問させていただきます。
過去投稿へのコメント失礼致します
有意義な投稿ありがとうございます。
参考にさせて頂き、現在、試行錯誤しているのですが、
時期が変わると色々と手順が異なるようで・・・・・苦戦しております(´;ω;`)
■苦戦(例)
・インストールOSが「elementaryos-6.1-stable.20211218-rc.iso」だと、そもそも日本語でインストールがNG。英語でインストールする必要があるよう。
・「sudo -H pip3 install hid aioconsole crc8 dbus-python keyboard」については、
hidが「1.0.5」だと、紹介頂いているロジックがエラーとなるため、
hidのインストール時に「sudo -H pip3 install hid==1.0.4 aioconsole crc8 dbus-python keyboard」とする必要がある
などなど・・・
■できればのお願い
この記事を記載頂いた状態のVMはまだありますでしょうか??
・OSについては、「elementaryos-5.1-stable.20200814].iso」がアーカイブとして存在していましたので、ほぼ同じ環境だと思います
・その他、インストールしたパッケージのバージョンが知りたいです・・・
何が原因で上手くいっていないのか、調査するのに苦労しております・・・
助けて頂けますと幸いです
SwitchのFWアップデートで当方法は不安定になっていたとのことでした
すみません、取り下げさせて下さい
※参考:
https://qiita.com/almtr/items/38a7f0c3056024532e8d#2-joycontrol-%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
コントローラをelementaly osに接続する際、bluetooth機能はUSBで接続しないといけないのでしょうか?
現在では試していないため的確な答えができなくて申し訳ないです。