対戦型AIコンテスト Halite-IIIの始め方
10/16から始まった https://halite.io/ がけっこう面白かったので、始め方を解説します。
Halite-IIIとは
HaliteはTwo Sigmaという会社が開催しているプログラミングコンテストで、Halite-IIIはその第三回目になります。
Halite-IIIは2〜4人対戦型のゲームで、海に船を出して海中の"halite"を回収し、一定ターン後に一番たくさんhaliteを蓄えたプレイヤーが勝者となります。試合はAIを投稿するたびに自動的にサーバ側で行われ、勝率によってレーティングが変化します。
開催期間は年明けの2019/1/22までとけっこう長いです。
使用可能な言語
https://halite.io/learn-programming-challenge/downloads に一覧がありますが、C++、Java、Rust、Goなどさまざまな言語で参加することができます。
ここにない言語については、https://github.com/HaliteChallenge/Halite-III/pulls に追加のPull Requestがあるかもしれません。僕は#30のRuby kitを使っています。1
参加方法
アカウントを作って、コードをzipに固めてこのページからアップロードするだけです。各言語のstarter kitにはサンプルのAIが入っているので、とりあえずそれをzipして投稿してみると良いでしょう(ランダムに動くだけなので、高得点は期待できませんが)。
コードの書き方について
https://halite.io/learn-programming-challenge/tutorials の「Code Tutorial」を押すと、ブラウザ上でチュートリアルがプレイできます。サンプルAIの解説があるだけでなく、この画面上で練習試合もできたりして、よくできています。
Halite-IIIの面白いところ
投稿したAIについては試合結果が出るだけでなく、試合の経過もアニメーションで見ることができるので、それを眺めてるだけでもけっこう楽しいです。勝ち試合のリプレイは気持ちいいし、負け試合のリプレイは改良方法を考えるのに役立ちます。
レーティング制度のおかげで同レベルのAIが対戦相手になるので、サンプルに毛が生えた程度のAIでも「なんとなくいい試合になる」のも良いですね。また、そこから徐々にAIを強化していくと対戦相手も強くなり、互いにうろうろしてるだけだったのが動きに「意思」を感じるようになったのも面白かったです。