CodinGameのコンテスト、Fall Challenge 2022に参加しました。
お題はマルチエージェント陣取りゲームです。
結果はGoldリーグ999人中9位で、全体では4577人中67位でした。
問題
ツカモさんが問題要約を書いてくださいました。
考察っぽいもの
相手より多くの陣を取って、buildで地形破壊して分断するゲーム。
ユニットは基本相打ちで1:1交換。リソースアドバンテージは、マター差や地形破壊によるユニット消滅や隔離、あとはどれだけのユニットがアクティブかでしか付けることができない。
つまり大体移動が本質。*1
(セルオートマトン的なあれこれも考えたが、活用するところまで至っていない or Legendまで本質ではないため割愛)
最終的にやったこと
自分ユニット(spawnも考慮)と相手ユニットからの距離をそれぞれ取り、ほぼ同距離となる境界に向けてユニットを動かす。相手と隣接するマスはなるべく防衛する。
処理順に書くとこんな感じ。
・リーサル(spawnによる分断)
・防衛
・敵と隣接していないユニットを前線に動かす。貪欲。
・敵と隣接するユニットを、敵と同数まで待機させる。
・敵と隣接する自陣にbuildする(敵が多い場合や、敵陣に食い込んでいる場合)
・敵と隣接する自陣にspawnする
・稼ぎbuild(盤面サイズにより、0~5回のbuildを行う)
・未行動ユニットを境界へ動かす(このとき、マターが余っていれば待機したユニットを移動に変更し、spawnによる穴埋めを行う)
・適当な移動(分断後のマップ埋め用)
境界への移動
ユニット(または自陣)と目標位置で雑なマッチングを行った。
2つの位置の組み合わせから、移動コストが最小のものを貪欲に決定する。
コスト
・遠いほど高コスト
・自陣を通るほど高コスト
・他のユニットが通過予定の場所を通る場合高コスト(他のユニットより遅れて通る場合、より高コスト)
・目標位置が敵陣なら高コスト(交戦より前線確保を優先するため)
・現在地が敵から近いほど高コスト(タイブレーク)
どんな感じ?
まあまあ動くが、上下端の目的地にユニットが割り当てされないことが稀によくある。発生するとまず負け確なので、発生をもっと確実に防ぐ仕組みが欲しかった。
感想
今回は開催期間が長く、熱心な人、ほどほどに参加した人、ほぼ参加しない人が分かれたなーという印象です。私もほとんど工場作ってました。
開催を引っ張った割に、ゲーム的に面白いかと言われると…?というのや、ソロゲー部分は方針こそ全てなのでネタバレ言及をしにくい空気で、開催中の盛り上がりは微妙でした。やっぱり2週間くらいで駆け引きがあるゲームの方が皆で熱中できる気がする。
12~1月は秋。いいね?
*1:お決まりの防衛だけすれば、Legendまではいかに接敵までを効率化できるかというソロゲー。