これは公式運営サーバ上で自身のエージェント5体で自己対戦を行うためのプログラムです。公式運営サーバへの接続の確認用、公式運営サーバに自己対戦のログを残す際にご使用ください。本戦では使用しないことに留意してください。
以下の環境で実行を確認しております。
- Python 3.8.10
以下のコマンドで必要なライブラリをインストールしてください。
$ pip install -r ./res/requirements.txt
./res/ssh-config
を以下の無いように従い設定してください。
HostName
:公式運営サーバのipアドレスを入力してください。
User
:参加登録の際に希望ユーザ名として提出頂いたユーザ名を設定してください。
IdentityFile
:参加登録の際に提出頂いた公開鍵に対応する秘密鍵のパスを設定してください。
RemoteForward [remote_port1] localhost:[local_port1]
: 運営が提供するするサーバに対するリモートフォワードの設定です。運営が提供するサーバの[remote_port*]と参加者の皆様の[local_port*]をフォワーディングします。この1ポートを1エージェントが使用し、対戦接続システムと通信を行います。remote_port*
に関しては参加登録後、運営が指定するポートを指定してください。
Host aiwolf-server
HostName [公式運営サーバのipアドレス]
User [user name]
IdentityFile [秘密鍵のパス]
RemoteForward [remote_port1] localhost:[local_port1]
RemoteForward [remote_port2] localhost:[local_port2]
RemoteForward [remote_port3] localhost:[local_port3]
RemoteForward [remote_port4] localhost:[local_port4]
RemoteForward [remote_port5] localhost:[local_port5]
ここでは、以下設定の例で./res/ssh-config
の記述例を示します。
設定
参加登録の際に提出した希望ユーザ名: kanolab
参加登録の際に提出頂した公開鍵に対応する秘密鍵のパス: ~/.ssh/id_rsa
参加登録の際に運営から指定された公式運営サーバのipアドレス: 0.0.0.0
参加登録の際に運営から指定されたポート番号: 50000 ~ 50004
自身の環境にバインドするポート番号: 50100 ~ 50104
設定に沿った場合の./res/ssh-config
Host aiwolf-server
HostName 0.0.0.0
User kanolab
IdentityFile ~/.ssh/id_rsa
RemoteForward 50000 localhost:50100
RemoteForward 50001 localhost:50101
RemoteForward 50002 localhost:50102
RemoteForward 50003 localhost:50103
RemoteForward 50004 localhost:50104
以下の手順で使用してください
- ご自身のエージェント5体を実行し、対戦接続プログラムの待ち受け状態にしてください。
- 以下のコマンドでこのプログラムを実行してください
$ python3 inform_bind_port.py
公式運営サーバへの接続・公式運営サーバ上の対戦接続プログラムを使用しての対戦に成功した場合、以下のURLに実行したログが残ります。 http://[公式運営サーバのipアドレス]/aiwolf/2024/pre
2023年までは主催者が提供する対戦サーバに自身のエージェント5体を接続して頂くことで対戦を自動実行していましたが、予期せぬプログラムの実行エラーや日程調整の兼ね合いが困難なことなどを鑑み、本年度からは参加者の方々に対戦サーバの待ち受けをして頂き主催者がそこに接続をする形で開催することに致しました。そのため、公式運営サーバに自己対戦のログを残す際にどのポート番号にエージェントのプログラムが待ち受けているか確認する必要がでてきました。このプログラムではエージェントが待ち受けているポート番号を対戦接続プログラムに伝えることを行います。
まず初めにssh-config
の内容を参考に公式運営サーバへ接続を行い、公式運営サーバ上で実行している対戦接続プログラムが待ち受けをしているポートとconfig.ini
で指定したローカル環境のポートをポートフォワードによって接続します。その後、接続されたローカル環境のポートを通し、ssh-config
に記載されているエージェントが待ち受けをしているポート番号5つを対戦接続プログラムに伝え、接続を終了します。
対戦接続プログラムはエージェントの待ち受けているポート番号が分かり次第接続を試みるので、事前にエージェントプログラムは実行しておいて下さい。
この場合の接続方法はssh-agentを使用する方法となります。
- まずはローカルの環境で以下のコマンドを実行してください。
[秘密鍵]
の部分は参加登録の際に頂いた公開鍵に対応する秘密鍵を指定してください。$ eval `ssh-agent` $ ssh-add ~/.ssh/[秘密鍵]
- 次に以下のように
-A
オプションを付与してご自身のリモートサーバ等にアクセスしてください$ ssh -A [host name]
./res/config.ini
の一部を以下に合わせてくださいuse_ssh_agent = true