Codingame Fall Challnege 2020 参加記

Codingame Fall Challnege 2020 に参加して、世界 183位/7,036、日本53位/320 のGoldリーグ終了でした。Goldボスめちゃくちゃ強かったですね。

www.codingame.com

やったことや所感を書いていきます。

ルール

ツカモさんの記事が分かりやすいので、こちらをご参照ください。

tsukammo.hatenablog.com

やったこと

ざっくり言うと、保持している価値を重視したビームサーチって感じでした。

遷移を「BREW」「REST」「CASTのリピート全パターン」って感じにして、ビーム幅700の深さ5にしてました。「LEARN」は、序盤にまとめてやる方が有利な場合が多いだろうと考えて切ってます。
相手の盤面は基本的に見てないです。枝刈りは「RESTの2連続使用を切る」くらいでした。

評価関数は、「スコア」と「inventoryのスコア換算値」の合計をベースにしました。
inventory が逼迫しないように、BREW 操作にはボーナスで 2 * (1 - depth/maxDepth) 点を加点しました。
素材をできるだけ余らせたくなかったので、終盤に行くほど inventory の価値が下がるようにもしてます。

リーチが掛かった(作成ポーション数が5に達した)状態だけ追加のロジックとして、
「相手側のターン毎の取得可能スコア最大値(Tome取得は考慮しない)4手分」を事前に探索しておいて、それを上回るスコアを得られる手順が有ったら打ち切る、
をやってました。

Tome の取得は、最初の7ターン(と、税が溜まっている場合だけ回収用にプラスもう1ターン)だけで行ってました。
その内、最初の5ターンで、先頭2つの内獲得価値が大きい方を選び、
最後2ターンで、保持TomeSpell の tierごとの数値の合算を「マイナス要素だけで行ったものの標準偏差」と「プラス要素だけで行ったものの標準偏差 * 0.75」の合計を最小化するものを、税が足りる全てのTomeの中から探すようにしました。
保持スペルの組み合わせをバランス良くするための試みで、特に特定のtierが余ってしまう状態を避けたくてマイナス側を重くしています。
提出結果を見ての体感ですが、標準偏差の工夫の方はまあまあ効いていたように感じます。

所感

このゲームは何を競っているのか、を考えるのが特に楽しいコンテストでした(未だ分かって無いですが)。

自分は所有価値の増幅を優先して動きつつ、最後にポーションに換金しきった状態で終了を迎えたいゲームなんだろなって感覚でプレーしてました。
相手の妨害やボーナスの争奪とかもゲーム要素としてあると思うんですが、どの程度重要だったんでしょうかね。

Tome の取得は、色々考えてみたんですが最後までよく分からずでした。
単色消費単色生成系が、錬成サイクル回しやすくて有利そうだなって感覚は有ったんですがどうなんでしょうね。
単色消費複色生成もポーション生成しやすくて強い、みたいな意見をTLで見かけてなるほどなって思ったりしました。

終わりに

コンテスト後に早速ゲームが常設化されたので、 www.codingame.com Legend 到達できるまで引き続き遊んで行こうかなと思ってます。

※2020/12/4追記:
コンテスト後にLegend行くまでの記事を書きました。 gobi-tk.hatenablog.com