Help us understand the problem. What is going on with this article?

[前編]人狼知能をDokcerで動かしたかった

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を使ってみよう

後編に続きます.

PaSeRi
社会人1年目のPaSeRiです.普通科高校から工業大学の情報系学部に進み,プログラミングを学び始めました.Javaをメインに使っており,Python3も少し触れたりします.大学時代には人狼知能プロジェクトの大会に参加したりしてました.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away