FC2ブログ

銀日記

このブログはマビノギ&ウディタ制作のブログです。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

ウディタでSRPG講座(12)ステート6について[後編]

どーも、瀬戸です!

今回のサンプルも更新はありません!
今回はAIの中身について!

Ev23 23行からループで敵陣営キャラの処理を回していますね。

敵の処理の一番大事なところは Ev23 43行目にある「敵AI処理」です。
ここで、敵陣営キャラの挙動を計算しています。
今回はここについて書いていきます。

やっていることとしては。

キャラの移動可能範囲計算
移動可能な各地点に関してもっとも評価値が高い行動を計算
↑の中からもっとも評価値が高い行動を選択
文字列変数に代入して返り値として出力

です。
ここで、「評価値」という単語が出てきました。
これは「行動の優先度を数値化したもの」と考えて貰ってOKです。

例えをあげるなら、100円と10000円どちらかをもらえるとしましょう。
どちらかひとつだけもらえるとしたら、どちらをもらうだろうか。

私はふところが寒いので迷わず10000円をもらいます。

ほとんどの人もきっと10000円のほうを受け取ると思います、だって諭吉さんだもん!(何
無償でお金をもらえるなら、より高額なほうが得ですしね。

これをAIに考えさせる場合にどうするか?
ここで「評価値」の概念が登場します。
お金の価値を評価値に換算して、より高いほうをもらうように判断させればいいのです。
ここでは簡単のために

100円    評価値100
10000円  評価値10000

としましょう。
評価値がより高いほうを選択させます。
何回判断させても10000円をとってくれることがわかると思います。

つまり、実際の人の考える価値をできるだけそれっぽく数値化させたものが評価値です(と、瀬戸は勝手に思いこんでいる)。
この評価値が人の感覚に近い数字であればあるほど、AIのかしこさが増します。
ぶっちゃけていえば、AI作成で一番力を入れるべき部分はこの評価値計算の機構だと考えます。
あ、これはあくまで瀬戸の考えなので、絶対そうじゃないですよ!(・∀・;ノ(←ここまで言っておいて自信なくなってきた) 

話を戻しーの。

今回の瀬戸システムのAIは、各マスについて評価値を計算し、最終的にもっとも評価値が高かったものを選択して行動するようになっています。
では、詳しい流れを追っていきます。

Ev45 敵AI処理
30行目までは、移動可能な範囲の計算と、これから検索する範囲の絞り込みを行っています。
プレイヤーの移動可能範囲計算とおなじ方法で、移動可能な範囲を計算し、ループを回す範囲を特定しています。
イメージとしてはこんなかんじ。数値が0のマスについては数字を省略しています。
下図の太枠でかこまれた部分でループを回すカラクリです。
要素数でうまく回数を計算して、回数指定ループを回します。
udhita
こうね。
udhita

そして、現在調査中のマスが移動可能なマスである場合、図で言うと青色のマスの場合は、そこからEv46 評価値計算に飛び、評価値の計算を行います。

Ev46 評価値計算 では、CDB[7:~:~]にそのマスでのすべての行動パターンと評価値を一時的に記録し、最終的にもっとも評価値がたかかった行動を戻り値で返します。
udhita

Ev46 評価値計算 の流れを見てみます。
まず2行目で、もっとも近くにいる相手のIDを取得します。
これは3~20行の処理で、相手に接近するがなにも攻撃しないという行動パターンを記録するためです。
この場合の評価値は、

(評価値)= 15 - (自分と相手の距離)

という式にしていますが、15という数字に特に深い意味はありません。
また、今回は簡単のためにこのような計算方法にしていますが本当に正確に相手に接近するAIの場合、この計算方法は正しくありません。
それについてはまた今度話すことにします(。w。

そのあとの計算はCDB[5:~:10](攻撃1)に登録されたスキルIDをもとに攻撃射程・攻撃範囲を参照して計算しています。
ここで、先ほどの移動可能範囲同様にループをかけて評価値を計算し、相手に攻撃がヒットする場合は評価値+30、自陣営に攻撃がヒットする場合は評価値-10します。

ループをぬけると、こなした計算がCDB[7:~:~]に入っているので、この中からもっとも評価値が高い行動をとりだし、戻り値として返し、 Ev45 39行目にもどります。
ここで Cself55[評価値]よりも計算結果の評価値が大きければ、上書きします。
「どつく」の場合は、イメージとしてこんなかんじの検索を全体としてかけていることになります。
udhita
わかりづらかったらごめんね。w。

一番下の階層が移動可能範囲。
二番目が攻撃射程。
一番上が攻撃範囲。

この3段階でループを回して、全パターンの評価値を計算するんです。
このループをすべて回し終えれば、手元には評価値が一番高い行動がのこっているはずですよね。

あとは、これをもとに画面上で動かすだけです。
スキル発動の手順はプレイヤー側とおなじような処理をします。
全敵キャラについて処理がおわったらプレイヤー陣営のターンにもどります。

敵のターンについては、こんなもんかな?

さて!!

ここで問題ですが。
上の図を見てみると、一番下の階層の移動範囲のループについて一回り余分な部分がありますよね。
では、これが一回り小さくなるようにEv45に一文書き加えてみてください。
解答は次回の講座で載せます。w。ノ

前の講座   次の講座


テーマ:同人ゲーム - ジャンル:ゲーム

  1. 2012/10/04(木) 19:50:20|
  2. ウディタ講座
  3. | トラックバック:0
  4. | コメント:0
<<こんなんチーターやないけ!! | ホーム | ウディタでSRPG講座(11)ステート6について[前編]>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://ginyoku892.blog69.fc2.com/tb.php/105-5c5c6df3
この記事にトラックバックする(FC2ブログユーザー)

検索フォーム


blogramのブログランキング
↑ブログが面白かったらクリック!

アフィリエイト


プロフィール

silvertorch

Author:silvertorch

キャラ名:銀燈
タルラークサーバ
10CHに住むジャイアント
自称壁職(笑)

キャラ名:パドさん
タルラークサーバ
格闘メイド

ウディタペンネーム:瀬戸星人
凡才な初心者
スキルアップしたい(願望)



Edit

かうんたー

スキル状況

銀燈 2012年10月29日現在

提供:Ababill/聖典群のブログ

ひまつぶし

クリックでエサをあげられます


最新記事

最新コメント

カテゴリ

アフィリエイト (1)
ぐだぐだな日記 (89)
スキル (7)
プレイ動画 (4)
戦術指南? (7)
イベント (15)
MML (6)
演奏動画 (1)
ネタ (2)
装備関係 (8)
無駄レポート (12)
ウディタ (16)
ウディタ関連ソフト (1)
ウディタ講座 (29)
ウディタ素材 (1)
ウディタ講座まとめ (1)
ウディタでSRPG目次 (1)
ウディタでベースシステムを自作する系目次 (1)
ウディタ創作物まとめ (1)
ゲーム制作あれこれ (2)
今日の映画 (1)

リンク

カレンダー

11 | 2018/12 | 01
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -

月別アーカイブ

QRコード

QR

ブロとも申請フォーム

この人とブロともになる

RSSリンクの表示

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。