tsukammoの収穫記

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

codingame:GREEN CIRCLE ルール要約

これはなに?

お題のゲームを解くプログラムを各自が作成、サイト上に提出して順位を競い合うゲームAIコンテストCodinGame「GREEN CIRCLE」について、ルール要約を紹介します。
※記載内容の保証はし兼ねるので、自己責任で読んでください。
コンテストページ:https://www.codingame.com/ide/challenge/green-circle
コンテスト期間:6月16日~6月27日

本ゲームは、スキルカードを揃えて相手より早く5つのアプリケーションをリリースした方が勝ちです。
元となるボードゲームはこちらのようです。 https://okaluda.fr/samsara-le-jeu/

ルール説明

あなたはハッカソン参加しました。アプリケーション開発における各種作業を適切に行い、相手チームよりも効率的に5 つのアプリケーションをリリースして下さい。

ゲームでは8つの作業場所が存在し、プレイヤーは各作業場所を周りながら成果(スキルカード)を収集、収集したスキルカードを使用することでアプリケーションをリリースする。 各作業場所は以下の名称で、括弧内はゲーム内ID。

  • TRAINING (0)
  • CODING (1)
  • DAILY_ROUTINE (2)
  • TASK_PRIORITIZATION (3)
  • ARCHITECTURE_STUDY (4)
  • CONTINUOUS_INTEGRATION (5)
  • CODE_REVIEW (6)
  • REFACTORING (7)

右から順に時計回りに作業場所が置かれている。

収集したスキルカードはデッキに格納される。

手札とデッキと墓地

所持しているスキルカードは自由に使えるわけではなく、手札・デッキ・墓地の3つの場所があり、手札にあるスキルカードのみ扱える。 各プレイヤーは自身のターン終了時に手札を全て捨て、デッキから所定の枚数(標準4枚)を引く。 カードを引く際に山札が無かった場合、墓地のカードをデッキに戻し、シャッフルした上で引く。

スキルカード

スキルカードは10種類存在する。 各8つの作業場所に対応する8種類の基本カードの他、ボーナスカードと負債カードがある。 各スキルカードが手札にある場合、アプリケーションのリリースに必要な作業スキルを生み出すことができる。 基本スキルカードはそれぞれの作業に応じた優良スキルを2つ、オールマイティな粗悪スキルを2つ生み出す。※スキルの優良/粗悪については後述
ボーナスカードはオールマイティな優良スキル1つ、粗悪スキルを1つ生み出す。 負債カードはスキルを生み出さない。

  • TRAINING のカードが1枚手札にあった場合は、TRAINING(優良) x 2、オールマイティ(粗悪) x 2 のスキルが使用できる。
  • CODING のカードが2枚手札にあった場合は、CODING(優良) x 4、オールマイティ(粗悪) x 4 のスキルが使用できる。
  • ボーナスカードが1枚手札にあった場合は、オールマイティ(優良) x 1、オールマイティ(粗悪) x 1 のスキルが使用できる。

アプリケーション

ゲーム開始時に12種類のアプリケーションが指定される。アプリケーションは以後追加されない。 各アプリケーションには8つの作業に応じた要求スキルが設定されている。 手札のカードから生み出せるスキルが要求スキルを満たしている場合、そのアプリケーションをリリースできる。 アプリケーションのリリースは自身のターンで1度のみである。

アプリケーショのリリース

アプリケーションをリリースする際、優良なスキルと粗悪なスキルをそれぞれ使用できるが、粗悪なスキルを使用する場合はデメリットが発生する。 アプリケーションのリリースにおけるスキル消費は以下のように処理される。

  1. 要求スキルに対し優良スキルから優先的に割り当てる。
  2. 優良スキルが足りない場合、粗悪なスキルが割り当てられる。
  3. 割当られた粗悪なスキルの数だけ、リリース後に負債カードが墓地に送られる。

また、最後の5つ目のアプリケーションは、粗悪なスキルを用いてリリースはできない。

スキルの使用(上位のリーグのみ)

基本のスキルカードが手札にある場合、1枚だけスキルを使用し、特別な効果を得ることができる。

  • TRAINING (0):デッキから2枚のカードを引き、さらに1枚追加で使用することができる。
  • CODING (1):デッキから1枚のカードを引き、さらに2枚追加で使用することができる。
  • DAILY_ROUTINE (2):次にアプリケーションをリリースするまで、このカードを除外し移動後の作業場所に隣接する作業場所のスキルカードを手に入れることができる。使用した枚数に応じて、より遠くの作業場所のカードを取得できる。リリース後に墓地に戻る。
  • TASK_PRIORITIZATION (3):手札からスキルカードを1枚取り出してボードに戻し、枚数の残っているスキルカードを1枚指定し取得できる。
  • ARCHITECTURE_STUDY (4):次にアプリケーションをリリースするまで、このカードを除外し標準の手札枚数が+1枚される。使用した枚数に応じて枚数が加算される。リリース後に墓地に戻る。
  • CONTINUOUS_INTEGRATION (5):手札から指定したスキルカードを除外し、アプリケーションをリリースのためにいつでも利用可能にする。(自動化)
  • CODE_REVIEW (6):ボーナススキルカード2枚を墓地に置く。
  • REFACTORING (7):手札から負債カードを1枚取り除く。

移動(MOVE)

各プレイヤーは作業場所を移動しながらスキルカードを集める。 自身のターンの初めに必ず移動しなければいけません。また、相手プレイヤーの作業場所、もしくはその隣接した作業場所に移動した場合、負債以外のカードを1枚相手プレイヤーに渡さなければいけない(コロナの迷惑料という設定)。手札に負債カードしかなく、迷惑料を支払えない場合負債カードを2枚取得する。 移動に際し、作業場所IDが小さくなる移動をした場合、手札にある負債以外のカードを2枚除外しなければいけない。除外できなかった場合、その数に応じて負債カードを取得する。

REFACTORING (7) → TRAINING (0) の移動
※つまり時計回りに作業場所を周り、1週したら通行税を払う必要がある。

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

  • bronze:全てのスキルが使用できる。通行税を支払う必要がある。
  • wood1:「TRAINING 」「ARCHITECTURE_STUDY 」「CODE_REVIEW 」「REFACTORING 」のスキルが使用できる。迷惑料を支払う必要がある。
  • wood2:スキルは使えません。迷惑料や通行税は存在しません。

各ターンの行動順

各プレイヤーは交互にプレイする。

  • 移動(MOVE)を行う。その際に迷惑料や通行税が必要なら支払う。
  • 手札に基本スキルカードがある場合、そのスキルを使用できる。
  • リリース可能なアプリケーションがある場合、指定したアプリケーションをリリースできる。

その他細かい仕様※順次update

  • 基本スキルカードは5枚、ボーナスカードは36枚、負債カードは100枚しか存在しない。
  • 基本スキルカードが5枚全て所持されている場合、対応する作業場所からはボーナスカードを取得できる。
  • 先手が5つ目のアプリケーションをリリースしても後手のターンが終わるまでゲームは続けられる。
  • アプリケーションリリース数が同じ場合、負債カードの獲得数が少ないプレイヤーが勝者となる。

アプリケーションの生成

アプリケーションは大きく2種類存在する。

  • 各スキルを2つずつ、3種類求めるアプリ小。
  • 各スキルを4つずつ、2種類求めるアプリ大。

大小のアプリに必要なスキルは予め決められた組み合わせがあり、IDはゲームが異なっても共通の番号が振られる。ブロンズリーグ以降は大アプリのみとなる。

  • 0: 小 { 0, 0, 0, 2, 2, 0, 2, 0 }, 大 { 4, 4, 0, 0, 0, 0, 0, 0 }
  • 1: 小 { 0, 2, 0, 0, 2, 0, 0, 2 }, 大 { 4, 0, 4, 0, 0, 0, 0, 0 }
  • 2: 小 { 0, 0, 2, 0, 0, 0, 2, 2 }, 大 { 4, 0, 0, 4, 0, 0, 0, 0 }
  • 3: 小 { 0, 2, 2, 2, 0, 0, 0, 0 }, 大 { 4, 0, 0, 0, 4, 0, 0, 0 }
  • 4: 小 { 0, 2, 0, 2, 0, 0, 0, 2 }, 大 { 4, 0, 0, 0, 0, 4, 0, 0 }
  • 5: 小 { 0, 0, 2, 2, 0, 2, 0, 0 }, 大 { 4, 0, 0, 0, 0, 0, 4, 0 }
  • 6: 小 { 0, 0, 2, 0, 0, 2, 2, 0 }, 大 { 4, 0, 0, 0, 0, 0, 0, 4 }
  • 7: 小 { 2, 0, 0, 2, 0, 2, 0, 0 }, 大 { 0, 4, 4, 0, 0, 0, 0, 0 }
  • 8: 小 { 2, 0, 0, 0, 2, 2, 0, 0 }, 大 { 0, 4, 0, 4, 0, 0, 0, 0 }
  • 9: 小 { 2, 0, 2, 0, 0, 0, 2, 0 }, 大 { 0, 4, 0, 0, 4, 0, 0, 0 }
  • 10: 小 { 2, 0, 0, 0, 0, 0, 2, 2 }, 大 { 0, 4, 0, 0, 0, 4, 0, 0 }
  • 11: 小 { 0, 0, 2, 2, 2, 0, 0, 0 }, 大 { 0, 4, 0, 0, 0, 0, 4, 0 }
  • 12: 小 { 0, 0, 0, 0, 2, 2, 0, 2 }, 大 { 0, 4, 0, 0, 0, 0, 0, 4 }
  • 13: 小 { 0, 0, 0, 0, 2, 0, 2, 2 }, 大 { 0, 0, 4, 4, 0, 0, 0, 0 }
  • 14: 小 { 2, 2, 0, 2, 0, 0, 0, 0 }, 大 { 0, 0, 4, 0, 4, 0, 0, 0 }
  • 15: 小 { 2, 2, 0, 0, 0, 0, 0, 2 }, 大 { 0, 0, 4, 0, 0, 4, 0, 0 }
  • 16: 小 { 2, 0, 0, 0, 0, 2, 2, 0 }, 大 { 0, 0, 4, 0, 0, 0, 4, 0 }
  • 17: 小 { 2, 2, 0, 0, 0, 2, 0, 0 }, 大 { 0, 0, 4, 0, 0, 0, 0, 4 }
  • 18: 小 { 0, 0, 2, 0, 2, 0, 2, 0 }, 大 { 0, 0, 0, 4, 4, 0, 0, 0 }
  • 19: 小 { 0, 2, 2, 0, 0, 0, 0, 2 }, 大 { 0, 0, 0, 4, 0, 4, 0, 0 }
  • 20: 小 { 0, 0, 0, 2, 0, 0, 2, 2 }, 大 { 0, 0, 0, 4, 0, 0, 4, 0 }
  • 21: 小 { 0, 2, 2, 0, 0, 2, 0, 0 }, 大 { 0, 0, 0, 4, 0, 0, 0, 4 }
  • 22: 小 { 0, 2, 0, 2, 0, 0, 2, 0 }, 大 { 0, 0, 0, 0, 4, 4, 0, 0 }
  • 23: 小 { 2, 0, 0, 2, 0, 0, 0, 2 }, 大 { 0, 0, 0, 0, 4, 0, 4, 0 }
  • 24: 小 { 0, 0, 0, 2, 0, 2, 2, 0 }, 大 { 0, 0, 0, 0, 4, 0, 0, 4 }
  • 25: 小 { 2, 2, 0, 0, 2, 0, 0, 0 }, 大 { 0, 0, 0, 0, 0, 4, 4, 0 }
  • 26: 小 { 2, 0, 2, 0, 2, 0, 0, 0 }, 大 { 0, 0, 0, 0, 0, 4, 0, 4 }
  • 27: 小 { 0, 0, 2, 0, 2, 2, 0, 0 }, 大 { 0, 0, 0, 0, 0, 0, 4, 4 }

現在の不具合※2022/06/20

2022/06/21 既知のバグが修正されました。TRAINING/CODING の追加スキル使用が正常化。DAILY_ROUTINE 使用時の無移動が不可に。通行税を払う際、同種2枚のスキルカードを保持していると1枚の支払いとなっていた不具合が解消。
また、visualizerのツールチップ情報として、アプリケーショ一覧が見えるようになりました。 https://www.codingame.com/forum/t/contest-green-circle/196455/77

2022/06/18 一度使用したスキルカードは脇に置かれ、ターン終了まで墓地に送られないようになりました。 これにより、一部スキルの無限ループは解消されます。 https://www.codingame.com/forum/t/contest-green-circle/196455/39

2022/06/17 各種処理の発生が不安定だったり、一部のスキルを無限に使用できるなど、ゲームの不具合が見つかっています。 以下のフォーラムにて参加者からFBがなされているので、順次対応される見込みです。 www.codingame.com