ColorShapeLinks AI competitionに参加しました。
変則4目並べのゲームAIコンペです。
結果は10チーム中、Base track同率1位、Unknown track1位でした。
Base Trackで1位タイと1勝1敗になった以外は全勝です。*1
ルール
Base track
二人零和有限確定完全情報ゲーム。
幅7高さ6のグリッドがあり、列にブロックを落とす形で交互にブロックを配置する。自分のブロックを直線上に4つ連続で揃えると勝利。お互い揃わずにグリッドが埋まった場合は引き分け。
ここまではConnect 4というゲームと同じルールだが、Connect4との違いとしてブロックは4種類あり、それぞれ色と形状*2を持つ。色は自分の色のブロックを持つが、形状は互いの形状のブロックを半々くらいで持つ。自分の色か形状を4つ連続で揃えた側が勝つが、同時に揃った場合は形状が優先される。
Unknown track
ルール自体はBase trackと同じだが、幅、高さ、勝利に必要な連結数などが投稿締切後に決定される。*3
今回は幅37、高さ9、勝利連結数5。結構な変態設定である。*4
考察
二人零和有限確定完全情報ゲームだし、1手の選択肢が(Cols * 2)種類、終局までの手数が(Rows * Cols)しかないのでMCTSが順当に強そう。
実装
1手先と2手先の極一部を読んで、必勝の手は強制、必負の手は禁止しました。
あとはGC対策でノードを使いまわすようにしました。
コンテスト環境的な話
独自プラットフォームのコンテストでしたが、ゲームAIコンテスト慣れしていてC#が書ければやりやすい環境だったと思います。
・ドキュメントは凄くしっかりしてる。
・ゲームルールもシンプルで綺麗に纏まっているので楽しめる。*6
・言語はC#のみ。
・ゲームサーバはUnity版とコンソール版がある。*7
・タイムアウト判定がちょっと怪しい。50msくらい早めに打ち切る必要があった。*8
・ゲームサーバ側がクライアント(個々のAI)を監視していて、時間がかかると切断して終了してしまうので、デバッガで値を追うのが難しい。*9
・特定の組み合わせで1000戦するみたいな仕組みは無いので強さの評価はしにくい。
・ローカルだと既存の対戦相手が弱めのサンプルしかいないので、やっぱり強さの評価がしにくい。*10
・提出はメール添付。エントリーもメール。*11
感想
コドゲのSpringChallenge 2021でも前向き枝刈りをやりましたが改めて、プレイアウトの精度を上げるのめっちゃ強いな…となりました。またノード展開時の挙動に関して言えば、MCTS-Solverに近い働きもしてくれていると感じました。
今考えると今回のゲームは"細い短い枝の先に逆転の手がある"系統だったので、そういうゲームと前向き枝刈りは相性が良かったんだろうなと思います。
あとGUI版、おでんにしか見えない。