スポンサーサイト

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

前途多難どころかお先真っ暗すぎて死にたい

意味一緒?ほっとけ

天子ちゃんのAIを作る…前に何にもわかってないcnsやcmdの記述を理解するために和訳KFMに名無し氏の1からのAI講座を見ながら実践中
講座1を見てとりあえず移動にジャンプ以外はしないAIは組めたもののこれ丸コピペだしなあ
で、講座2ができてたので早速眺める

つまり…どういうことだってばよ!

自分の無知加減にウンザリしてきた

例えば

[State 20, 1]
type = VelSet
trigger1 = command = "holdfwd"

x = const(velocity.walk.fwd.x)

[State 20, 2]
type = VelSet
trigger1 = command = "holdback"

x = const(velocity.walk.back.x)

という名無し氏の講座2における歩きステート制御の例題で
上の記述をAIに使わせるために書き換えると…


[State 20, 1]
type = VelSet
trigger1 = var(59) <= 0
trigger1 = command = "holdfwd"
trigger2 = var(59) > 0
trigger2 = enemynear,vel x <= 0 || p2movetype = H

x = const(velocity.walk.fwd.x)

[State 20, 2]
type = VelSet
trigger1 = var(59) <= 0
trigger1 = command = "holdback"
trigger2 = var(59) > 0
trigger2 = enemynear,vel x > 0

x = const(velocity.walk.back.x)

こうなる。らしいのだがこの原理がさっぱり理解できていない
細かく見ると

最初の
[State 20, 1]
type = VelSet
trigger1 = command = "holdfwd"

x = const(velocity.walk.fwd.x)

これ
講座1を見てAIに使わせるためにはcommandがあるtriggerの前にtrigger1 = var(59) <= 0を入れなければいけない
というのはわかるんだけど

[State 20, 1]
type = VelSet
trigger1 = var(59) <= 0
trigger1 = command = "holdfwd"
trigger2 = var(59) > 0
trigger2 = enemynear,vel x <= 0 || p2movetype = H


x = const(velocity.walk.fwd.x)

trigger2からの2行。これが何故必要か、というのがいまいちわからない
これは名無し氏の説明が悪いんじゃなくて基礎の基礎も知らない俺が悪いんだけど

意味はなんとなく分かるんだけどなあ
上のなら「相手が近くにいて、かつ相手のmovetypeがHの時」ってことなんだろうけど
movetype = Hって調べたら食らい状態…?どういうことなの…?


うーん、こんなんでAIが作れるんだろうか
時間はあるとは言え、わからないところを一つずつ潰して行かないと応用も利きそうにねえ…
ニコMUGENwikiとか他の初心者用AI系のサイトだけで色々理解できる人はマジ天才だと思うのですよ
スポンサーサイト
[ 2010/03/27 13:26 ] 未分類 | TB(0) | CM(4)

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます
[ 2010/03/27 15:11 ] [ 編集 ]

No title

台無しは犠牲になったのだ…犠牲の犠牲にな…

Vel X は相手の速度を調べるトリガーなので、
一番下の記述は相手が逃げている時、
またはガード、喰らい状態のときってことですね。

trigger2 が何故必要か、を勝手に説明してみます。
一般的なMUGENのキャラは、StateNo = 20 で
Command = "holdfwd" のとき(前にキー入力されているとき)前進、
Command = "holdback" のとき(後ろにキー入力(ry)後退の処理を行っているので、
AIにそのまま StateNo = 20 と記述すると、
AIは適当にキーを入力をしてる状態なので
前進と後退が交互に出る変なことになります。

それを防ぐために trigger1 = Command = "holdfwd"にVar(59) <= 0 (人操作時)を
入れているのですが、
このままでは前進も後退もしないので、
歩いているのに前にも後ろにも進まないという
これまた変な状態になるんですね。

だから trigger2 をわざわざ入れているわけです。 
練習なのでどんな条件でも構わないのでしょうが、
一般的に相手が逃げているときやガードしているときに接近しないのもおかしいので、
名無し氏の説明では前進の記述に
trigger2 = enemynear,vel x <= 0 || p2movetype = H
と付け足しているわけです。

ただ、前進か後退の記述のどちらの条件にも
含まれない状態になると、
前述の通り歩いているのに前にも後ろにも進まない
ことになるのでお気をつけ下さい。

私なりに解説してみましたが、いかがでしょうか…?
[ 2010/03/27 15:35 ] [ 編集 ]

No title

すみませェん…わかりづらくて…w
まぁはっぱ氏が書いてくださってるとおりです

ちょこちょこ直していくんで、AI作成頑張ってください~
[ 2010/03/27 16:41 ] [ 編集 ]

No title

>>匿名さん、はっぱ氏
細かい解説ほんっとうにありがとうございます
本来ならこれも自分で調べるべきなんだろうけど、マジで助かります

ちょっと難しいですけど、ゆっくり噛み締めながら理解していきたいと思います

>>名無し氏
いえいえ、俺がどうしようもないポンコツブレインなだけで他の人には凄くわかり易いと思います。多分
改めてこんなことをスイスイやってるAI作者の人って凄いなあと思う次第ですw
[ 2010/03/27 19:39 ] [ 編集 ]

コメントの投稿













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

トラックバック

この記事のトラックバックURL
http://mugendainashi.blog48.fc2.com/tb.php/28-8bb3ff75








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