今回のゲームはふつうにRTS
4種の資源を調達して5種のユニットを操り 相手より領土を保持したら勝ち
これはコンテスト最後の戦いの結果
ステージを宇宙にして表示を俯瞰に奥行きなんかも表現したら大流行してもおかしくない気がする
問題点としてはWood1クリアまでメインゲームが始まらず
Wood1クリアがなかなか大変というところ ある程度の実装力がないと
チュートリアルでつまづいてしまう そのためか面白さのわりに参加者が少なかった
Wood2とかもそんなに簡単ではなかった
各Woodの攻略を雰囲気で書いてみる
Wood4
まずデータからゲームの盤面を作る能力が必須 作らずにもできそうだけど難易度はかなり高くなりそう
平面のラインデータがないので、初心者には厳しいかも 作れたらパスファインディングでAを通過できればOK
Wood3
さらに資源を何度も取るHARVESTERを設置、Aを通過しないようにして領土を広げ続ければクリア
Wood2
領土を効率よく広げる必要がある 相手に近い点に動かせればたぶんOK
相手ROOT位置からの距離をパスファインドで作成
次に自分の全ユニットから一手動かした位置がその距離から近いものを選択
Wood1
世界全体の参加者の半数ぐらいはここで力尽きている 実装はかなり大変
正解はまず資源の隣の隣にROOTを設置できる位置にSPORERを向け
ROOTを隣の隣に設置、次に資源にHARVESTERを向けて設置できればあとは領土を広げるだけ
隣の隣の実装が面倒でした とにかく一手目ROOTから東に東を向けたSPORERを置きます
資源の位置は変わるのですが、いずれでも、資源の隣の隣まで置けます
SPORERからおける位置全部の隣と資源の隣の位置が交わる所に打ち込みます
あとは2手読みで新しいROOTからHARVESTERを設置できて、複数ROOT時の命令分
設定できればクリア
ブロンズは外壁のデータがないのでまずその実装をする
盤面のデータに外枠分を追加しないとパスファインドの条件分岐が面倒になります
Wood1の実装は一度外してROOT一つで数日漂っていました
今回は2,3日ごとに休み休み実装を繰り返していました
少し開けたほうがどことなく頭の中が整理されて良さそう
最終日とその前日は7割ぐらい稼働していました
いろいろと実装できて楽しかったです いくつか作ってはみたけど取り込めなかった機能もあります
集合型を使ってパスファインディングを軽減させてみました
1ターン目で各座標から4、3、2、1動かせる範囲をそれぞれ開始位置をキーに動かせられる座標を集合型で持たせ
あと相手の座標とか資源の座標も集合型でもたせAND条件等で、その位置の周り3マスに相手のユニットがいるとかしてました
タイムアウトは数回発生していました 全体的に時間管理は運営側で多めにみてもらえていたような...
50msは厳しいです
さらに無駄読みを減らす高速化もいくつか実装してみましたが、
バグを取るのが大変でできなかったものもありました
順位について、今回思ったこと
序盤同じぐらいの順位でもお互い何もしていなくても、中盤で大きな差になっていくこと
細かい実装ミスの修正をしても、その局面の発生条件が少ないのでひとつふたつ直しても順位が悪くすれば下がる
それでもいくつか重ねていくと上がる
50位ぐらいは対戦相手の運で変わる 250位ぐらいのとき
RTSのAI作ってみたかったんだという方にお薦めです