tsukammoの収穫記

上下左右の更地にアルゴリズムを

codingame:Spring Challenge 2022 ルール要約&モンスター生成ロジック

これはなに?

お題のゲームを解くプログラムを各自が作成、サイト上に提出して順位を競い合うゲームAIコンテストCodinGame「Spring Challenge 2022」について、ルール要約と予め設定されている内部パターンについて紹介します。
※記載内容の保証はし兼ねるので、自己責任で読んでください。
コンテストページ:https://www.codingame.com/contests/spring-challenge-2022
コンテスト期間:4月21日~5月2日

本ゲームは、拠点を守りつつマップ上に現れるモンスターになるべく多くのダメージを与えた方が勝ちです。

ルール説明

各プレイヤーは3体のヒーローを操作し、マップ端から出現するモンスターを倒して下さい。モンスターが自分の拠点に到達するとダメージ1回受けます。自分の拠点が3回ダメージを受けると負けとなります。 相手プレイヤーが先に3回ダメージを受けるか、220ターン経過時に相手より受けたダメージが少ない場合、あなたが勝利します。 なお、受けたダメージが同じ場合、各プレイヤーは拠点外でモンスターに与えたダメージ量の多いほうが勝者となります。

マップ

X=0、Y=0を左上、X=17630、Y=9000を右下のピクセルとする長方形のマップ上でゲームを行います。 wood2ランクまでは、マップ全域の視界を得ていますが、wood1以降は自分のヒーローから2200ユニット以内、または自分の拠点から6000ユニット以内の視界のみとなります。

エンティティ

各エンティティ(ヒーロー、モンスター)は、衝突せず、同じ座標に存在することができます。

ヒーローとアクション

毎ターン、あなたは各ヒーロー毎のコマンドを出力して下さい。ヒーローは以下のコマンドのいずれかを実行することができます。

  • MOVE:指定されたマップの座標に向かって最大800ユニット分前進します。
  • SPELL:(wood1以降)定められた呪文を使用します。
  • WAIT:その場に留まります。

互いのヒーローにはダメージを与えられません。 ヒーローの移動後、800ユニット以内にいるモンスターに2ポイントのダメージを与えます。

モンスター

モンスターは、プレイヤーの拠点以外のマップ端から点対称にランダムで出現します。出現時にランダムで定められた移動方向に毎ターン400ユニットの速度で一直線に進みます。点対称の対になるモンスター同士は、移動方向も点対称となります。全てのモンスターには一定のHPが定められており、ヒーローからのダメージでHPが0になったモンスターは消滅します。

ターン終了時に拠点から5000ユニット以内にモンスターがいた場合、その拠点を目的地として移動方向を変更します。ターン終了時にHPが0でないモンスターが拠点から300ユニット以内にいると、そのモンスターは消滅し、拠点に1ポイントのダメージを与えます。
なお、WINDコマンドでターゲットされた拠点の半径外に押し出された場合、再度ランダムに定めた移動方向に移動し始めます。

ゲームのターンが進むにつれ、モンスターの初期体力はわずかに多くなることがあります。

マナと呪文

あなたのヒーローがモンスターにダメージを与えるごとに1ポイントのマナを獲得する。HPが0のモンスターからでも獲得する。
獲得したマナ10ポイントを消費することで、あなたのヒーローは1つの呪文を唱えられる。

  • WIND :1280ユニット以内にいる自軍のヒーロー以外のエンティティは、呪文を唱えたヒーローから x, y の方向に2200ユニット移動させられる。
  • SHIELD :2200ユニット以内の指定したエンティティは、12ターンの間スペルの対象にならない。
  • CONTROL :2200ユニット以内の指定したエンティティは、次のアクションを指定された座標へ強制的にMOVEさせられる。

リーグ毎の特徴やルール開放

  • bronze:「SHIELD」「CONTROL」の呪文が解放されます。
  • wood1:「WIND」の呪文が解放されます。マップ上の視界が制限されます。
  • wood2:呪文は使えません。マップ全域の視界が得られます。

行動順

  • CONTROLの呪文が対象に適用される。
  • SHIELDの呪文が対象に適用される。SHIELDは次のターンから有効になる。
  • すべてのヒーローが移動する。
  • ヒーローは範囲内のモンスターに攻撃し、マナを生成する。※モンスターは移動前であることに注意
  • WINDの呪文が範囲内のエンティティに適用される。
  • すべてのモンスターは速度に応じて移動する。ただし、WINDを受けたモンスターは移動しない。
  • SHIELDの残りターンが減少する。
  • 新しいモンスターを出現させる. 死んだモンスターが取り除かれる.

モンスター生成ロジック

ゲーム中のモンスターは下図赤丸の4点から発生します。実際の発生地点はy軸方向に799マップ外に進んだ点となります。

各点から初期体力10のモンスターが1匹/5ターンの速度で発生し、10ターン毎に初期体力が+1されます。
200ターン経過後、サドンデスモードとなり、発生するモンスターは各プレイヤーの拠点をより狙うようになります。

呪文周りの細かい仕様

  • 複数からCONTROLを受けた場合、各移動先の平均に向かいます。
  • 複数からWINDを受けた場合、各移動量の合計に飛ばされます。
  • SHIELD中は、新たなSHIELDも弾きます。
  • SHIELDは次ターンから有効になります。同じターンの呪文は作用します。
  • WINDなどでモンスターはマップ外に飛ばされます。ただし、拠点半径内の場合は境界線を超えません。
  • WINDを受けたモンスターはそのターン移動しません。
  • ターン終了時にマップから800ユニット離れたモンスターは消滅します。(マップ外でもモンスターは存在。)
  • マップ外のモンスターは視認できません。
  • マップ外からモンスターが拠点エリア内に侵入することはできません。