- 追加された行はこの色です。
- 削除された行はこの色です。
[[FrontPage]]
#contents
麻雀AI同士を対戦させることができるサーバです。
* 試してみる [#ve19e862]
- [[Ruby:http://www.ruby-lang.org/ja/]]をインストール。
- [[RubyGems:https://rubygems.org/]]をインストール。
$ sudo gem install json
$ wget https://raw.github.com/gimite/mjai/master/samples/tsumogiri_player.rb
$ ruby tsumogiri_player.rb mjsonp://gimite.net:11600/manue-1kyoku
ここで指定したサーバでは、[[Manue:https://github.com/gimite/mjai-manue]]という開発中のAI(現状あまり強くない) 3人を相手に1局戦ができます。
テストにご自由にお使いください。途中で切っても大丈夫です。 http://gimite.net/mjai/log/ にログが出力されます。サーバが落ちていたらGimiteに教えて下さい。
* プロトコル [#g9117e2b]
サーバ、クライアントが交互にJSONを1行ずつ送り合います。ドキュメントはまだありません。
- [[sample3:http://gimite.net/mjai/samples/sample3.protocol.txt]] ([[牌譜ビューア:http://gimite.net/mjai/samples/sample3.mjson.html]])
- [[sample4:http://gimite.net/mjai/samples/sample4.protocol.txt]] ([[牌譜ビューア:http://gimite.net/mjai/samples/sample4.mjson.html]])
あたりのサンプルを見ればだいたい分かる…かもしれません。分からなかったらGimiteを捕まえて聞いてください。
* 自分でサーバを動かすには [#pfa7b8f2]
- [[Ruby:http://www.ruby-lang.org/ja/]]をインストール。
- [[RubyGems:https://rubygems.org/]]をインストール。
$ sudo gem install mjai mjai-manue
$ mjai server --port=11600 --game_type=one_kyoku --room=default --log_dir=./log
- 4人がポート11600に接続して {"type":"join","name":"xxxx","room":"default"} を送ると開始します。
または、
$ mjai server --port=11600 --game_type=one_kyoku --room=default --log_dir=./log \
mjai-manue ./my-ai1.sh ./my-ai2.sh ./my-ai3.sh
とすると内部で
$ ./my-ai1.sh mjsonp://localhost:11600/default
などが実行されます。
* ルール [#v9c4e39a]
天鳳の喰い断あり赤ありルール互換になる…予定です。現状色々[[未実装なルール:https://github.com/gimite/mjai/blob/master/doc/todo.txt]]があります。
* 牌譜ビューア [#s88246bc]
$ mjai convert 2012-04-30-215246.mjson 2012-04-30-215246.html
などとすることで、ログをHTML形式の牌譜ビューアに変換できます。今のところたぶんChromeでしか動きません。
* 安定度について [#dd8c411b]
プロトコルはあまりいじらないつもりですが、問題を見つけたら大きく変わる可能性もあります。RubyでAIを書く場合はmjai内のクラスを使うと便利かもしれませんが、Rubyのクラス構成やインタフェースはガンガン変わります。
* 天鳳のログの解析 [#x1a1dc4b]
[[天鳳の強い人2人の全牌譜:http://blog.tenhou.net/article/46797689.html]]が公開されています。天鳳のログ(.mjlog)はmjai convertで.mjsonに変換できます。また、Mjai::Archiveクラスで読めます。
* Mjai上で動作するAI [#lf126723]
- [[mjai-manue:https://github.com/gimite/mjai-manue]] (by Gimite)
- [[mjai-silica:https://github.com/wistery-k/mjai-silica]] (by wistery-kさん)
- mjai-shanten (mjai gem付属)
-- シャンテン数が最小になる打牌の中からランダムで選ぶ。
- mjai-tsumogiri (mjai gem付属)
-- ツモ切りするだけ。
* ソースコード [#u973661b]
[[Github - gimite/mjai:https://github.com/gimite/mjai]]
* 関連記事 [#f84d645e]
- [[統計による麻雀危険牌分析:http://gimite.net/pukiwiki/index.php?%C5%FD%B7%D7%A4%CB%A4%E8%A4%EB%CB%E3%BF%FD%B4%ED%B8%B1%C7%D7%CA%AC%C0%CF]]