ぷよぷよ通のAIを書くためのフレームワークです。
実際に動いているAIの例: http://www.nicovideo.jp/watch/sm26167419
現状、Mac OS X と Ubuntu、Windows でビルドできることを確認しています。 また、32bit環境では全くテストしていません。
C++14 がサポートされているコンパイラを使う必要があります。 Mac OSX や Linux では clang もしくは gcc を、Windows では Visual C++ を使うことが想定されています。
高速化のため、CPU に AVX 命令が載っていることを前提にしている箇所があります。 すなわち、2011 年〜 2012 年以降の CPU のみを対象にしています。 現状は AVX2 は前提にしていませんが、AVX2が使える場合はAVX2対応のコードがあり、AVX1版と比べて1.5倍〜2倍高速です。ただし、AVX2版のコードはgcc-4.7では全く性能がでないことが分かっているため、clangを使ってください。より新しいgccであれば直っているかもしれませんが、確認していません。
depot_tools
をインストールしてください。PATH
を通すのを忘れないように。
$ sudo apt-get install git clang
$ sudo apt-get install libprotobuf-dev libcurl4-nss-dev
$ sudo apt-get install libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev
$ sudo apt-get install libmicrohttpd-dev libffms2-dev libusb-1.0-0-dev
Xcode、コマンドラインツール、homebrew をインストールしてください。
デフォルトで /usr/local/include
などを見ないようになっている可能性がありますが、xcode-select --install
を叩いておくと解決するはずです。
$ brew install pkg-config
$ brew install sdl2 SDL2_ttf SDL2_image ffmpeg libusb protobuf
Visual Studio 2017 をインストールしてください。
また、他プラットフォームと同様にビルドツールとして ninja を使いたい場合は VC 関係の設定を行うため以下の bat を各コマンドプロンプトで実行してください。
> %ProgramFiles%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat
- ターミナル、もしくはコマンドプロンプトで、適当なディレクトリ (e.g.
~/repos/puyoai
) を作って移動し、そこでgclient config --unmanaged https://github.com/puyoai/puyoai
コマンドを入力してください。.gclient
ファイルがそのディレクトリに作られます。 gclient sync
コマンドを入力してください。必要なファイルなどがダウンロードされます。
For contributors note: puyoai レポジトリに push できる権限がある場合、gclient config
は、次のようにしてください。
$ gclient config --unmanaged [email protected]:puyoai/puyoai
GUI を付与したい場合、さらに次のライブラリが必要です。
http サーバーを利用して、GUIを付与することもできます。この場合、次のライブラリが必要です。
- microhttpd
実機でAIを動かすなど、ビデオキャプチャーが必要な場合、さらに次のライブラリが必要です。
- lib-usb1.0
$ cd ~/repos/puyoai/puyoai
$ gn gen --args="is_debug=false" out/Release
$ ninja -C out/Release
ただしこのままだと SDL が必要なものはビルドされません。
$ gn args out/Release
とするとエディタが立ち上がるので、
is_debug = false
use_capture = true
use_usb = true
use_gui = true
use_httpd = true
use_libcurl = true
use_tcp = true
use_curl = true
とすると、全部入りになります (2019-02-23 現在)。どのようなオプションがあるかは、build/BUILDCONFIG.gn の declare_args
内(複数あります)を参照してください。
is_debug
を true
にすると、デバッグビルドになります。
> cd %HOME%\repos\puyoai\puyoai
> gn gen --args="is_debug=false" out/Release
> ninja -C out/Release
Linux/Mac で使えるコンフィグ option のうちいくつかは動きません。
もし Visual Studio の solution file を生成したい場合、
> cd %HOME%\repos\puyoai\puyoai
> gn gen --args="is_debug=false" --ide=vs out/Release
とすると、all.sln
ファイルが out/Release
以下に生成されます。
ビルドした後、
$ cd ~/repos/puyoai/puyoai
$ python build/run_unittest.py --build-dir=out/Debug
で全テスト走ります。
もしかしたら、master ブランチが壊れているかもしれません。この場合、気づいたメンバーによってすぐに修復されます。
このドキュメントの先頭に貼ってあるCircleCIのバッジが PASSED
になっていなければ、現状のコードは壊れています。
Issue List に問題を報告、もしくは Pull request を送ってください。
$ cd out/Release
$ ./duel ./cpu/sample/sample ./cpu/sample_rensa/sample_rensa
duel
は対戦サーバで、筐体のような役割を果たします。1 つ目の引数 sample
は 1P 側を担当する AI、2 つ目の引数 sample_rensa
は 2P 側を担当する AI です。
duel
にオプションを渡すことで対戦速度を上げたり、ぷよの色を指定できたり、といろんな機能を引き出すことができます。ドキュメント化されていないものもありますが、
$ ./duel --help
とすると実装されている機能と必要なオプションが全部出てきます。とりあえずはそちらを参照してください。
- doc/ ドキュメント
- src/ 主なプログラムのソース。
- build/ ビルド関連のスクリプトなど。意味のわかる方のみ使ってください。
- arduino/ Wii 実機やアーケード基板と接続する際に使う、arduino関連のソース。
- data/ フォントとか画像とか。
- testdata/ キャプチャー用のテストデータ。
- tools/ いろいろなツール類。なぜ src/ 以下じゃないのか?