Artificial Intelligence for Games, 2021 edition course, University of Wrocław, 2021.の授業の最中。
授業内容はローグ系のゲームのAIを作成するというもの。CodinGameのYOUR LAST ACTIVITIESになぜか、
https://www.codingame.com/multiplayer/bot-programming/code-keeper---the-hero
が入っている。家の座敷わらしかヨーロッパの妖精さんがいたずらをしたのか、University of Wrocławから
オファーをいただいたのかは不明。
CodinGameの久しぶりのBOT プログラム。今年はもう終わりかなと思っていたら、自分がやってみたかった
ローグ系のAI作成 さっそく参加。
自動生成された最初のプログラム
まずデータを保持する部分を作成。クラスの配列でメインのデータをキープ
勇者の武器は剣、弓、大鎌、ハンマー。剣以外は利用回数が存在します。最初は剣を装備します。
攻撃対象がなければみえる範囲(ユニット中心で7x7)、出口(10000ポイント)、宝(100ポイント)、
ポーション(HP10回復)、箱の優先順で移動します。
バグをとります。
大鎌とハンマーも購入(実装)します。
なんやかんや真ん中ぐらいまでいけるかなーとか思っていたのですが...ブービー賞。ヴロツワフ大学生
なかなかやるではないか。
ここでキャラクターの紹介、勇者(グーニーズの主人公タイプ)、スケルトン、ガーゴイル、オーク、ヴァンパイア
オークは間接攻撃をしかけてきて、ヴァンパイアは視野が広いです。スケルトンは疲れていて、勇者がとなりに
きた時だけ、動き出します。
数日前にチャレンジして挫折した、ファミコンウォーズのAIの要素がいろいろと詰まっていることに少しずつ気が
付かされました。ローグを検討しているうちにファミコンウォーズが浮かんだのかなと思うぐらい。これにさらに
生産のアルゴリズムがあればそれっぽいものになりそうです。
順位をあげるための作業
1) マップの作成(このゲームでは視界範囲の壁などのキャラクター情報のみでマップは与えられない)
2) 全ての武器の実装
3) 移動をパスファインドで検索
4) 怪物たちの各ポイントでの攻撃の合計を計算しておき、死地には移動しない
5) 移動順の修正(出口にはすぐ向かわない。ダメージが少ない時はポーションを取らない等)
6) 順位1,2,3位の方をローカル対戦に招聘して鍛えてもらう
なんとかここまで、あとはいい関数を2つ作成して、すばらしい関数を1つ作成できればトップに届きそう。
1,2,3位の方達との対戦は微差だけど埋まらない厚い壁を感じました。例のごとくここから、いい関数では
ないかと思っていた関数の実装失敗して(設計ミスかも)、投稿できないレベルまで弱くなっています。
かなり実装したつもりですが、手強いです。