今年もCODE VSの季節がやってきました。プログラマ日本一決定戦だそうです。
問題についてのヒントになるといけないのであまり詳しいことは書けませんが、今回は同時に多くの自軍のゲームユニットに命令を出して敵軍と戦うタイプの戦略型ゲームとなっています。
ゲーム自体はなかなかよく考えらているなと感心します。
またサンプルコードはパッと見、よく出来ています。というか、出来過ぎています。ランダムプレイヤーぐらいかと思ったら、かなり本格的に作られていて、このサンプルコードに勝つAIを書くだけでも一苦労しそうです。予選の期間が長いこともあって、上位陣は非常にレベルの高い戦いになりそうです。
ローカルホスト上で対戦できるAIプリセットにchokudAI(高橋 直大さん)とかcolunAI(コルンさん)とかのAIが用意されているので、彼らの作ったAIと対戦できるとは、ワクワクしますね。
このゲームは自軍のゲームユニットの視界にある情報しか得られないので、完全情報ゲームではありません。敵の情報があまり得られないので(もう少し視界は広くてもいいと思うんですが)、戦略と言っても限られてきます。
1ターンで自軍のゲームユニット全部に対して命令を出さないといけなくて、組み合わせは膨大になりますし、敵の情報にも乏しいので、将棋のようなゲーム木探索の問題に帰着させるのはなかなか難しいです。
ランキング上位陣が横並び(?)なのは、
- ゲームユニットの「視界」が狭すぎて戦略を立てにくい
- 城のHPが低すぎて戦術的なことを考えずにともかく速攻で潰すほうが勝ちやすい
みたいな点においてゲームバランスが少々悪いことに起因するのではないかと思います。(あくまで想像です)
あとサンプルコードを見ていて、気づいたのですが、自分の城、2P側だと左上でなく右下らへんに出るようです。自分の城が左上サイドか右下サイドかによって、処理を変えないといけなくてソースコードが少しややこしくなります。こういうのは、ゲームホスト側で正規化して(要するに1P側になるように(X,Y)を(99-X,99-Y)のようにXY flipしたものを)渡して欲しいものです。
ざっとCODE VS4.0について紹介しました。いまからでもエントリー間に合いますし、十分上位を狙えるはずなので、我こそは日本一!と思われる方は挑戦してみられてはどうでしょうか。