fc2ブログ

NPC操作

ターン制を曲がりなりにも実装したので、いよいよAI構築に入っていきます。
ローグライクではこのAI行動処理を1ターンごとに、存在するオブジェクト数分ループさせるので、超高頻度で呼び出す処理になります。

そして、お分かりでしょうが、このコモンイベントの内容によってゲーム自体の処理の重さが決まってきます
自分でもローグライクを作った結果、快適速度で主人公を移動させつつ、処理の重さを気にさせない(コンマ以下のつっかかりが気にならない程度の)コマンド数はだいたい1ターンに2~3万が限度ってところでしょう。
それ以上を超えてくると、移動のたびに体感できるレベルでつっかかったりするので、とにかく無駄な処理を省くつもりで作っていきたいところです。

で、AIをつくるまえに自分なりに思ったことを書いておきますが、ここの処理は意図的に簡略化させた方がよいです
気合入れて「超高度なAIつくってやるぜー!」ってつくりだすと、かなり後悔することになります。
AIは必要最低限にしておいて、ゲームの深みは攻撃処理とかで出せばいいや、くらいの気持ちでつくっていくとちょうどいいんじゃないかと思います。

サンプルは以下の通り。
1.行動可能判定。行動不能なら終了。
2.攻撃判定。使用できる特技に応じて、特技の効果範囲内に敵がいるか判定。敵がいたら攻撃処理を呼び出して終了。
3.攻撃しなかった場合、移動判定。移動するのであれば座標関連のDBを動かして、キャラピクチャ(ないしイベント)の移動描画処理を呼び出す。

シンプルですが、だいたいこんな感じになるのではと思います。
移動判定に関しては、目的座標とか目的オブジェクトとかいう概念を活用するとつくりやすいでしょう。
目的が設定されていればその座標ないしオブジェクトに接近するように行動、目的が設定されていなければ、近くに(自分から見て)敵状態の生物がいればそいつを目的に設定、みたいな感じで。
純粋な不思議のダンジョン系ローグライクの場合は、フロアの循環のために、目的座標に部屋の入り口の座標なんかを利用することになりそうです。

AIは作り込めば作り込むほどゲームの奥深さを増す可能性がありますが、作り込んだ分だけ処理が遅くなるということを常に頭に入れておくとよいと思います。
関連記事
スポンサーサイト



コメントの投稿

非公開コメント

Twitter
カテゴリ
最新コメント
月別アーカイブ
カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR