LoginSignup
6

More than 5 years have passed since last update.

人狼知能用のクライアントをRubyで作ってみた

Last updated at Posted at 2017-07-04

はじめに

最近なにかと話題の人狼知能の、Ruby向けクライアントをgemにしてみました。
役割に必要なメソッドを埋める形で実装ができるようになっています。

人狼知能について詳しく知りたい方は、人狼知能の公式ページ( http://aiwolf.org/ )をご確認ください。

※今の所、人狼知能の主催者さんとこのgemには関係がありません。このクライアントに関する主催者さん方への質問はご遠慮ください。

導入

gemコマンドやGemfileに書くことで導入できます。

gem install aiwolf-client
gem 'aiwolf-client'

とりあえずの動かし方

サンプル実装として、何も考えていない無口な村人も作りました。
Tei1988/aiwolf-player-sample-villager

会話ではずーっと黙り、生きている村人から適当に投票します。
初日に吊るされそうな感じです。

これを動かことにします。

人狼知能のサーバを動かす

まずは、人狼知能のサーバを動かします。
Javaが必要になりますので、事前に導入しておいてください。
http://aiwolf.org/server から、人狼知能プラットフォームの最新版をダウンロードします。

展開するといろいろファイルが出てくるのですが、サーバを起動するには以下のシェルを実行します。

sh StartServer.sh &

(Windowsの場合はStartServer.batをコマンドプロンプトやダブルクリックで実行できると思います。)

ウィンドウが出て来たら、Connectボタンを押してください。

これで、host: 127.0.0.1, port: 10000でサーバが起動したはずです。

無口な村人を動かす

まずはクローンします。

git clone https://github.com/Tei1988/aiwolf-player-sample-villager.git

bundleします。aiwolfというコマンドを入れたいので、--binstubsもつけていますが、bundle exec aiwolfとして読み替えていただいても構いません。

cd aiwolf-player-sample-villager
bundle install --binstubs

村人を人狼知能サーバに接続します。

bin/aiwolf execute -h 127.0.0.1 -p 10000 SampleVillager

実行すると、以下の様なログが出た後に、待機状態になります。

I, [2017-07-05T00:27:15.728357 #79467]  INFO -- : Connecting to 127.0.0.1:10000 with SampleVillager

サーバ側には、接続された旨が表示されているはずです。

人狼を始める

デフォルトの状態だと、15人でゲーム開始のため、残り14人を参加させなければ始められません。
残りの参加者は、ダウンロードしてきた人狼知能プラットフォームのサンプル実装を使わせてもらいましょう。

自分は以下のコマンドでばばばっと繋げちゃいます。ごめんなさい、Windowsで良い方法はわかりません…。

for N in `seq 1 14`; do sh StartClient.sh -h 127.0.0.1 -p 10000 -c org.aiwolf.sample.player.SampleRoleAssignPlayer & done;

15人揃ったので人狼知能のサーバのStart Gameを押せるようになります。
押すと、人狼が始まります。

ゲームが終わると、人狼知能サーバからサンプル村人が切断されます。
結果は人狼知能サーバ側に、表示されているはずです。

おわりに

これで人狼知能の裾野が広がればいいなぁと思います。

不具合はもちろん、ドキュメントやコードなどなど、いろいろいろ足りていないかと思いますので、PRなどなどお待ちしています :bow:
aiwolf-clientのGithubのリポジトリはTei1988/aiwolf-client-rubyです。

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
6