traP Works

AI Rogue

このエントリーをはてなブックマークに追加

screenshot-from-2016-11-01-00-35-27

[Play!] Coming soon…

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に対応しています)

アイテム

  • meat にく
    • 満腹度が50回復する
  • herb やくそう
    • HPが50%回復する

ミニマップの見方

minimap

  • 緑: プレイヤー
  • 青: アイテム
  • 黄: 階段
  • 赤: 敵

Tips

  • Enableにチェックを入れると下に書かれたAIのコード(JavaScript)が実行されていきます
  • 途中でチェック・再チェックできるので場面に応じて使い分けてください
  • AIが行動しているときにもプレイヤーが操作することができます

Credits

  • Programmer
    • Osa-pyon
    • to-hutohu
    • nari
    • kzshiro
    • long_long_float
  • Modeler(旧SenshaCode)
    • nao
  • Sound
    • popopon-seadragon
  • Materials
このエントリーをはてなブックマークに追加

コメントを残す

メールアドレスが公開されることはありません。