AI RogueとはローグライクのAIを作成してできるだけ深くまで潜ることを目指すゲームです(もちろん手動でも操作できます)。敵を倒しつつなるべく下の階数を目指します(階数がスコアとなります)。
AIはJavaScriptで書くことができます。以下はデフォルトのAIです。
const item = env.nearestItem();
if (env.distance(env.nearestEnemy()) < 3) { const e = env.nearestEnemy(); const d = env.distance(e); const dist = env.accDirection(e); if (d % 2 === 0) { return env.wait(); } else if (d > 1) {
return env.move(dist);
} else {
return env.attack(dist);
}
} else if (!env.fullItem() && env.sameRoom(item)) {
return env.move(env.accDirection(item));
} else if (env.hp() / env.maxHP() < 0.4 && env.hasItem('やくそう')) {
return env.useItem('やくそう');
} else if (env.hunger() < 10 && env.hasItem('にく')) {
return env.useItem('にく');
} else if (env.hp() < env.maxHP() && env.hunger() > 50) {
return env.wait();
} else if (env.sameRoom(env.goal())) {
return env.move(env.accDirection(env.goal()));
} else {
return env.moveToRoom(env.unexploredRooms()[0]);
}
このAIがすることを簡単に説明すると、
- 敵が距離3(チェビシェフ距離)以内にいて、
- 距離が偶数だったら待つ(先制攻撃をするため)
- 1より大きかったら敵の方向に移動
- それ以外は攻撃する
- アイテムが同じ部屋にあったらアイテムの方向に移動
- HPが4割未満で、やくそうを持っていれば使う
- 空腹が10未満で、にくを持っていれば使う
- HPが最大ではなく空腹が50より大きかったら待つ(体力回復)
- ゴールと同じ部屋だったらゴールに移動
- 以上の条件に当てはまらなかった場合、まだ訪れていない部屋に移動する
です。割と直感的に書くことができると思います。
操作方法(手動での操作)
- W: 上へ移動
- A: 左へ移動
- S: 下へ移動
- D: 右へ移動
- L: ホールド(上の移動キーと一緒に押すと方向転換)
- エンターキー: 攻撃
- 1~9, 0: アイテムを使う(左から1, 2, ...9, 0に対応しています)
アイテム
- にく
- 満腹度が50回復する
- やくそう
- HPが50%回復する
ミニマップの見方
- 緑: プレイヤー
- 青: アイテム
- 黄: 階段
- 赤: 敵
Tips
- Enableにチェックを入れると下に書かれたAIのコード(JavaScript)が実行されていきます
- 途中でチェック・再チェックできるので場面に応じて使い分けてください
- AIが行動しているときにもプレイヤーが操作することができます
Credits
- Programmer
- Osa-pyon
- to-hutohu
- nari
- kzshiro
- long_long_float
- Modeler(旧SenshaCode)
- nao
- Sound
- popopon-seadragon
- Materials
- http://enchantjs.com/ja/
- マップチップ、スライム
- WOLF RPGエディター支援素材集(part2) http://www47.atwiki.jp/woditormaterials/
- プレイヤー