RTS製作日記。その18

アバター
MNS
記事: 35
登録日時: 15年前

RTS製作日記。その18

投稿記事 by MNS » 14年前

久方ぶりの更新です。

前回の記事で何を書いてたかすらおぼろげですが、
とりあえず、
ユニットの滑らかな動きを実装しようとする→挫折。
陣形をスマートに構成させるようにする→挫折。
あきらめて素直にAIの実装→四苦八苦→何とかできた。
ということがありました。

なんにせよ、とりあえずAIを作りました。AIについては、
      
      統括AI
        |
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
戦術AI ―協力― 内政AI

このような形にしようと思っています。
今回実装したのは戦術AIで、統括・内政AIはまた今度。
戦術AIを作ったといっても、形だけで何もしません。
じゃあ何を作ったんだというと、軍団のAIです。
最下位をユニットとおいて、最上位をPlayerとおくと、

●プレイヤー(人間)の場合
 プレイヤー
   ↓ 指示(操作)
 ユニット

●AIの場合
  統括AI → 内政AI
   ↓ 指示
  戦術AI
   ↓ 指示&組織
  軍団
   ↓ 指示
 ユニット

ゲーム進行はこのような手順で行われます。
プレイヤーの軍団は、プレイヤーが勝手に見立てるだけで、
内部の処理として作られるわけではありません。
それに対し、AIでは全ての兵士ユニットを何らかの軍団に配備し、
その軍団は戦術AIから指示を得て、それを実行します。

現状では、戦術AIは「KillEnemy」(=敵を殲滅しろ)という指示しかしません。
軍団は、その指示を受け取ると、目標を「EnemyIsDead」(=敵が殲滅される)を定め、
次の行動から適当なものを選択します。
Action_AttackEnemy … 敵に攻撃
― 前提条件:敵が見える&敵に近い&整列している
    結果 :敵が殲滅される
Action_ApproachEnemy … 敵に接近
― 前提条件:敵が見える
    結果 :敵に近い
Action_Arrange … 整列
― 前提条件:なし
    結果 :整列している
Action_Explore … 探索
― 前提条件:なし
    結果 :敵が見える
指示を受け取った状態では、なにもありませんから、
選ばれる行動は”前提条件なし”のものに限られます。
軍団AIは指示を受け取った段階で、その目標を満たすまでの一連の行動を組み立てます。

例:探索 → 接近 → 整列 → 攻撃

実際の軍団AIが組み立てた一連の行動:
actions.png
actions.png (3.88 KiB) 閲覧数: 109 回
無駄が多いのはそのとおりで、最適な行動を組み立てる処理がまだ出来ていないせいです。
まいどのA*アルゴリズムを使おうとしたのですが、適用するのが難しくて、
結局、ただ単調に目標を満たすまでの行動を組み立てあげる処理を作りました。
まあ、その結果、上のような無駄が出てしまうのです。いつか改善する予定です。


これで、一応、遊べる(?)ようにはなったので、
どんなシロモノなのか、AIの動きに関心があればやってみてください。

[拡張子 zip は無効化されているため、表示できません]

AIの行動は、
白いものが終えた行動、
オレンジが現在実行中の行動、
緑のものが将来の行動
です。
AIはわりかしバカなので、ヘタなことをしない限りは勝てます。
ちなみに、勝利・敗北の判定はないので、敵/味方ユニットが全滅しても何も起こりません。
最後に編集したユーザー MNS on 2011年3月09日(水) 18:21 [ 編集 1 回目 ]

アバター
Tatu
記事: 445
登録日時: 14年前

Re: RTS製作日記。その18

投稿記事 by Tatu » 14年前

プレイしてみたところ、敵を全滅させるのに5回かかりました。

操作説明を付けてくれるとありがたいです。
最初、左クリックを何回しても動かなかったので困惑しました。

次に追加されるのは資源など人口増加に関係する要素かな?

ISLe
記事: 2650
登録日時: 15年前

Re: RTS製作日記。その18

投稿記事 by ISLe » 14年前

シミュレーションゲームは苦手なのでまったく勝てる気がしません。
操作方法はいままでの日記を見てたのですぐ分かりましたよ。

アバター
MNS
記事: 35
登録日時: 15年前

Re: RTS製作日記。その18

投稿記事 by MNS » 14年前

地震は大変なことになってしまいましたね。
こういうときに、こういうゲームを作るのはなんだか気が引けますが、
とりあえず、被災者の方々のご無事をお祈りしております。

>Tatuさん
現状、移動中は攻撃しないので、動かすと基本的に不利です。
逆に、動かさなければ大概負けないと思います。

操作説明の不備については、ホント、すみませんでした。
付け加えて置きます。

そうですね。内政を実装することになりそうです。
ただ単にスタンダードなRTSを作るのも悪くはないのですが、
やはり独自性を出したほうがよいかな、と思うところもあるので、
いろいろと考え中です。

>ISLeさん
いや、現状ではプレイヤー側からは戦術のやりようがないです。
多く敵を取り囲める状態で、かつ止まっている状態が最も強い陣形であると思いますが、
たぶん動かないだけで十分です。

いつも日記を見て頂いているというのはすごく励みになります^-^
頑張ってゆきたいです。