0. はじめに
Dockerの知識がほぼ0の私が,思いつきで進めた内容の記録です.
この記事は前後編に分かれています.この記事は前編です.
後編はコチラ
1. 人狼ゲーム
人狼ゲームとは,アメリカのゲームメーカLooney Labsが発売した「Are you a Werewolf?(汝は人狼なりや?)」の通称,及びその派生ゲームの総称です.
一言で説明するなら,対話によって村の中に紛れ込んだ人狼を見つけ出していくゲームです.チェスや将棋などのような現在の状態に至るまでの全ての情報がわかるゲームを完全情報ゲームというのに対し,人狼のようなゲームを不完全情報ゲームといいます.
2. 人狼知能プロジェクト
人狼知能プロジェクトは,こうした不完全情報ゲームである人狼ゲームを人工知能にプレイさせることを目的としたプロジェクトです.
(※人狼知能で学ぶAIプログラミングより引用)
人狼知能プロジェクトの公式サイトはコチラから
同プロジェクトは,開発言語としてJava, Python, C# の3つを公式にサポートしており,これらの言語に対しては開発用のドキュメントやライブラリの提供をしています.
また,作成した人狼知能(以降,人狼知能プロジェクトと混同しないようにエージェントと呼ぶ)を,ローカルで他のエージェントと戦わせたり,動作テストをするための環境として,人狼知能プラットフォームが提供されています.正確には,Javaでエージェントを作成する際のライブラリの一部として入っています.なお,説明の便宜上,人狼知能サーバと呼ばせていただきます.
3. 人狼知能サーバ
人狼知能サーバは
- aiwolf-client.jar
- aiwolf-common.jar
- aiwolf-server.jar
- aiwolf-viewer.jar
- jsonic-1.3.10.jar
- AutoStarter.ini
- SampleSetting.cfg
から成り立っています.下2つは設定ファイルなので,名前はこの限りではありません.ゲームに参加させるエージェントのクラスパスやファイルのフルパス・プラットフォームの設定などをAutoStarter.iniに,ゲームルールなどをSampleSetting.cfgに書き込みます.
その上で
java -cp aiwolf-server.jar:aiwolf-common.jar:aiwolf-client.jar:aiwolf-viewer.jar:jsonic-1.3.10.jar org.aiwolf.ui.bin.AutoStarter AutoStarter.ini
でゲームが実行されます.
なお,サーバに必要な環境は
- 適当なOSの乗ったPC・仮想マシン他
- Javaのサーバとエージェント,Python・C#のエージェントのためOS依存はない
- Java8・Python3.6.5・.NetCore2.2がインストールされていること
- 年に数回行われる公式大会のサーバにできるだけ似せた環境にする
- Pythonに関しては,anaconda上に仮想環境を構築し,必要なパッケージ類もインストールしておく
といった感じです.
4. 言語の壁
公式にサポートされている言語であれば,どれを使うのも自由です.しかし,ローカルでゲームを実行するには人狼知能サーバのためにJavaが必要になります.自分が開発に使用した言語以外のエージェントを動かそうと思えば,その言語の導入が必要になります.Pythonに至ってはライブラリの導入も必要です.学習のために並列してサーバを実行したい場合もあるかもしれません.その度に,全言語対応させるのは手間であったりもします.
5. Dockerを使ってみよう
後編に続きます.