CodinGame Spring Challenge 2022 ~Spider Attack~ 参加記

CodinGame Spring Challenge 2022に参加しました。

www.codingame.com

順位はGoldリーグの1,769位でした。
やった内容と感想について書いていきます。

問題内容

対戦型タワーディフェンスって感じのゲームでした。

  • 3ユニット操作
  • 盤面のブラインド有り
  • 非グリッド(実質)

辺りがクセの強い箇所だったように感じます。

詳しいルールはツカモさんの解説記事*1をご参照ください。
https://tsukammo.hatenablog.com/entry/2022/04/22/010522

最終内容

Gold昇格できるラインでできるだけ軽めの実装を、みたいな方針で作ってました。

大枠の方針はルールベースです。

最初30ターンは、全ユニットがモンスターの発生口近辺に張って、マナ稼ぎをします。
ここの実装は、移動可能範囲に1,000点ランダムプロットして一番敵数を巻き込める位置を選ぶ*2、という風にしました。

それ以降のターンは、DF2人とFW1人に分け、以下の方針で動かしました。

  • DFの1人は、自ゴールから距離約600の位置に固定配置して、WINDを打ちまくる。
  • もう一人のDFは、自ゴールから距離約5,000のエリアでマナ稼ぎ。
  • FWは、相手ゴールから90度に引いた直線上を距離400~3,500の範囲でランダムウォークしながら、見つけたモンスターを敵陣に向けてWINDする。

感想

今回はルールベースマシマシ実装のつらさからか、いまいち気持ちが乗らなかったのもあってGold昇格のタイミングで切り上げてしまいました。
ルールベースや非グリッドはあんまり好きじゃないかなあ*3とかを感じたり。
次回は無理なくゲーム木探索できるような問題が出て欲しいですね。今年は秋は開催されるのでしょうか?

今回、コドゲでは初めて Rust で参加してみました。
AHCとかだと、トレイトやポリモーフィズム周りの機能をあんまり使ってこなかったのですが、今回その辺りを勉強するきっかけになって良かった気がします。
Rust 開発用のスクリプトも色々用意できたので*4、次回に繋がりそうでこの辺も収穫でした。

*1:いつもありがとうございます。

*2:原始モンテカルロ法

*3:コドゲの中で相対的に

*4:複数ファイルでの実装を一つにまとめるスクリプトとか、簡素なコード生成スクリプトとか。