58
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AutoMuteUs (Among Us の自動ミュート bot) のセルフホスティング

Last updated at Posted at 2020-11-23

はじめに

AutoMuteUs は Among Us を Discord で通話して遊ぶ際に自動でミュートのオンオフを行う bot です。有志によって非公式に開発されている OSS アプリケーションです。

導入方法はいろいろありますが、この記事では自前環境での利用方法を説明します。

実際に動かすには以下の 2 つが必要です。

  • bot アプリケーション (AutoMuteUs)
  • ゲーム状態をキャプチャするアプリケーション (AmongUsCapture)

AmongUsCapture の動作環境は Windows に限定されます。Among Us 自体も AmongUsCapture と同じマシンで動いている必要があるため同様です。AutoMuteUs の推奨動作環境は Docker (docker-compose) です。後述の理由により、そのプロセスは Windows マシンから HTTP でアクセスできる必要があります。未検証ですが、Docker Desktop for Windows や WSL を使えば一台の Windows マシンでもできると思われます。

概念図はこんな感じです。Galactus については後で説明しますが、AutoMuteUs の補助的なアプリケーションです。
image.png

バージョンはそれぞれ現時点 (2020/12/19) で最新のものを使いました。

  • AutoMuteUs 6.5.5
  • AmongUsCapture 2.8.4

ところで、https://github.com/denverquane/automuteus で invite me をクリックすると、セルフホストせずともどこか (Heroku?有志運営?) のサーバーで動くフリーの bot が招待できます。それでもセルフホストする利点は安定性です。フリーの方を使ってみると、混んでいる時間帯は反応が悪く(なかなかミュート解除されない)ゲームの進行に影響が出ることがよくありました。自分で立てると実用的なレベルで動きます。その際必要な情報がまとまった日本語の記事が無かったのでこの記事を書きました。

なお、Docker を使わなくても、AutoMuteUs はしばらく前まで Windows 版が出ていたので古いバージョンを遡って使うという方法もあります。しかし、今は動くようですが、今後 Among Us や AmongUsCapture のアップデートによって動かなくなる可能性が高いです。実際、現時点 (2020/12/19) で不安定です。そうこう言っている間にゲーム上で通話できるようになるかなとも思いますが。

AutoMuteUs の準備

git と docker-compose が使えるマシンで以下のコマンドを実行します。

git clone git@github.com:denverquane/automuteus.git
cd automuteus
cp sample.env .env # .env に docker-compose から参照される環境変数を記述する
vi .env # 下記の通り編集する

.env のうち設定が必須な項目は以下の 4 つです。残りは基本的にデフォルトのままにしてくだい。

AUTOMUTEUS_TAG=6.5.5
GALACTUS_TAG=2.4.1
DISCORD_BOT_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
GALACTUS_HOST=http://XXX.XXX.XXX.XXX:8123

AUTOMUTEUS_TAGGALACTUS_TAG はそれぞれ AutoMuteUs と Galactus の、その時の最新バージョンを設定してください。

それぞれのリリース一覧:

ここで Galactus とは何か説明しておきます (動かすだけなら知らなくてもいいです)。サーバーで動く AutoMuteUs と手元の AmongUsCapture 間で通信する必要があるわけですが、それを補助するのが Galactus です。Galactus は連携に必要な URL を作成し、その URL を受ける HTTP サーバーを立て、bot を通して URL をユーザーに DM で送ります。そして、AmongUsCapture が動いているマシンからユーザーが URL にアクセスすることで連携されます。さらに、その後 WebSocket によりゲーム状態の通信を仲介をします。

DISCORD_BOT_TOKEN は自作した bot のものにします。自作とトークンの入手手順は https://github.com/denverquane/automuteus/blob/master/BOT_README.md に従えばよいです。ただし、内容がやや古く、今 final.txt というファイルは存在しません。.env を使う形に変更されたので .env に書いてください。

GALACTUS_HOST には、AmongUsCapture が起動する Windows マシンから見た、docker-compose で動かす Galactus プロセスへの URL を設定します。私はグローバル IP が払い出されている ConoHa の VPS を使いポートはデフォルトの 8123 のままにしたので、上記のような設定となりました。ファイアウォールで外部にポートを開くのを忘れずに。

詳しくないので試していませんが、WSL や Windows 版 Docker を使えば全て手元で完結するかもしれません。インターネットから見えるようにする必要もなく楽そうです。

最後に起動します。

docker-compose up -d

Windows 側の準備

あとはセルフホストしない場合と同じです。

まず Windows で Among Us と AmongUsCapture を起動します。AmongUsCapture は https://github.com/denverquane/amonguscapture/releases から最新の .zip ファイルをダウンロードして、中の AmongUsCapture.exe を実行してください。

実行するとこのようなログが出力されているはずです。
image.png
試しにフリープレイをやると画面下の Game status が LOBBY や TASK に切り替わったり、会議時にメンバーの死活がログに表示されたりすると思います。

必須ではありませんが、安定性のために Discord bot token を設定すると良いです (bot の管理者以外の人がトークン無しで利用することもできます)。.env に書いたのと同じものを入力し、SUBMIT してください。
image.png
以下のようなログが出ていれば OK です。
image.png
bot がいる Discord サーバーのチャットで .au new と打ってみると以下のようなメッセージが投稿されるとともに bot から DM が届くはずです。
image.png
DM
image.png

DM のリンクをクリックすると AmongUsCapture と連携され、.au new と打ったチャットのメッセージがゲームの状態に応じて更新されるようになります。以下は連携に成功したときの AmongUsCapture のログと Discord のメッセージです。
image.png
image.png

キャラクターの色、ROOM CODE などがちゃんと反映されていますね。
image.png

docker-compose logs -f で様子を見て、変なログが見当たらないか確認してください。

ゲームをしてみて、ミュート状態がちゃんと更新されれば完了です!

58
41
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
58
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?