Codingame - Ghost in the Cell の参加記
keraです。
世界4位という肩書をもらえて幸福度が絶賛上昇中です。
↓順位表へのリンク
内容
・codingameとは
・今回のゲームの概要
・コンテストを振り返る
・本コンテストで必要だと感じたスキル
・感想
Codingameとは
・世界中の人が参加できるゲームAI系のプログラミングコンテスト
・年に5~6回のペースでコンテストが開催
・1週間ほどの制限時間の中で戦う
Webページ上で参加できるので、参加するためにまず○○を導入する(よくこれに結構時間がかかる)というものが無い点では、初心者に優しい。(ただしページは英語)
今回のゲームの概要
今回のGhost in the Cellというゲームは、簡単に言えば軍隊に指示を出して敵を倒すゲームって感じです。(似ているゲームが思いつかない...よくストラテジーゲームと言われるものに近いかも)
ゲーム勝利条件は相手の軍隊の殲滅か、最後に軍隊数が多かったほうが勝利となっています。
↓のリンクに実際のゲーム画面が載ってます。
https://plus.google.com/+Codingame/posts/AnXzBKaSaUH
ゲーム自体は質素に見えるかもですが、自分の作ったAIが世界の誰かが作ったAIと勝負すること自体に燃えるので意外と楽しい。
コンテストを振り返る
今回の期間は2017/2/26(日) 2:00(深夜)~2017/3/6(月)4:00(深夜)
(フランス企業が主催なのでどうしても時差が)
ちなみに学生で春休みだったので毎日6〜14時間ほどやってました。
2月26日
朝起きたら日本のスタートダッシュ勢の一人が暫定世界一位を獲得!この人を目標に頑張る
2月27日〜3月1日
ずっとバグに悩まされる。やればやるほど弱くなっていって自信を無くしてた。
コードが汚いのが原因だと考え、一度コード全体を整理整頓した。コードの全体像を把握することができ、そして必勝法を思いついた(あとで考えてみればそうでもなかった)。
このゲームには必勝法がある(このゲームには必勝法が無い)
— kera (@kera6rhy) 2017年3月1日
3月2日
ひらめいた戦略(攻撃型ではなく防御型が最強なはずだ!)を実装したら順位が急上昇(確か3000人中500位→40位)
細かい付け足しの後、暫定世界一位に (一瞬)
実績解除:暫定世界一位 pic.twitter.com/Yf8lJsvEdl
— kera (@kera6rhy) 2017年3月2日
3月3日〜6日
終盤に入り、強い人が続々と追い上げてきた頃。
・細かいバグ取り
・対戦してわかった戦略上の穴を埋める
・強い人の戦略を盗み取る
をひたすら繰り返す。(ちなみにコンテスト中は自分のAIがずっと他の人と対戦してます)
そして最終的には世界4/3508位、日本1/81位に決定!(ちなみに学生のみなら世界1/1150位)やったぜ!
本コンテストで必要だと感じたスキル
考察力
・このゲームはどのような戦略なら勝てるか
・ルール上の穴は無いのか
・相手の戦略は何が来そうか
のようなことを考える力
観察力
・なぜ今この相手に負けてしまったのか(相手との差は何か)
・相手のAIから盗めるものは何か見つけられるか
・今の自分のAIにバグのような挙動は見られるか
のようなものを対戦リプレイから見つける力(コンテスト中は対戦のリプレイを見ることができる)
実装力
・いかに制限時間内に頭の中の戦略をソースコードに変換できるか
・いかに早くバグに対処できるか
のような、いわゆるプログラミング力
逆を言えばこれらの力が身についたと感じました。
感想
今回僕が上位に行けた要因は、多少の考察力・観察力・実装力に対してのドーピング役となる「有り余る時間」 があったからですね。いわゆる時間パンチです。(あとレッドブル毎日飲んでました)
つまり他の全てのことを犠牲にしてるので、あまり賢くないです。
今後の目標は、このようなコンテストがあっても自分の勉強や文化的生活レベルを犠牲にする必要がない程度まで、 考察力・観察力・実装力をあげることですね。
追記 4/4
Github上に載せていた最終版AIのコードを削除いたしました。
Codingameはコンテスト終了後も同じゲームを継続してプレイできることが特徴です。
実は私のコードを丸コピしてプレイしている人が一定数いるらしく、コンテスト後の継続プレイに対する楽しみ(トップを目指す楽しみ)を奪ってしまうことに繋がるため、今回のような削除をしました。(私の配慮が足りていませんでした。)
裏を返せば(?)、いつでもGhost in the Cellをプレイできます!みなさんやりましょう!