inani_waonの日記

コンテスト覚書

ColorShapeLinks AI competition 2021 参加記録

ColorShapeLinks AI competitionに参加しました。

 

videojogoslusofona.github.io

変則4目並べのゲームAIコンペです。

結果は10チーム中、Base track同率1位、Unknown track1位でした。

Base Trackで1位タイと1勝1敗になった以外は全勝です。*1

 

ルール

f:id:inani_waon:20210812173331p:plain

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が順当に強そう。

 

実装

MCTSを書いて、前向き枝刈りをしました。*5

1手先と2手先の極一部を読んで、必勝の手は強制、必負の手は禁止しました。

あとはGC対策でノードを使いまわすようにしました。

 

コンテスト環境的な話

独自プラットフォームのコンテストでしたが、ゲームAIコンテスト慣れしていてC#が書ければやりやすい環境だったと思います。

・ドキュメントは凄くしっかりしてる。

・ゲームルールもシンプルで綺麗に纏まっているので楽しめる。*6

・言語はC#のみ。

・ゲームサーバはUnity版とコンソール版がある。*7

タイムアウト判定がちょっと怪しい。50msくらい早めに打ち切る必要があった。*8

・ゲームサーバ側がクライアント(個々のAI)を監視していて、時間がかかると切断して終了してしまうので、デバッガで値を追うのが難しい。*9

・特定の組み合わせで1000戦するみたいな仕組みは無いので強さの評価はしにくい。

・ローカルだと既存の対戦相手が弱めのサンプルしかいないので、やっぱり強さの評価がしにくい。*10

・提出はメール添付。エントリーもメール。*11

 

感想

コドゲのSpringChallenge 2021でも前向き枝刈りをやりましたが改めて、プレイアウトの精度を上げるのめっちゃ強いな…となりました。またノード展開時の挙動に関して言えば、MCTS-Solverに近い働きもしてくれていると感じました。

今考えると今回のゲームは"細い短い枝の先に逆転の手がある"系統だったので、そういうゲームと前向き枝刈りは相性が良かったんだろうなと思います。

あとGUI版、おでんにしか見えない。

 

*1:互いに後手が勝つ状態だったらしいです。

*2:白と赤、丸と四角。

*3:海外の宝くじの結果を見て決めるらしい。こういうの面白くて好き。

*4:22超えは想定していなかった…。

*5:展開とプレイアウトの両方です。

*6:Base trackは狭く感じるかも。

*7:私はコンソール版だけ使った。

*8:ローカルでコンソール版だと1ターン目に計測されない時間を含んでいる様子があり、提出サーバでは50ms弱のスパイクが割とあった

*9:無理矢理押し切ったけど、別のエントリーポイントを作るか単体テストを使うと良さそう。

*10:過去の自分と戦わせるか提出するしかなさそう。

*11:英語だけど短文のやり取りだったのでGoogle翻訳で快適にできた。