[
板情報
|
カテゴリランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
|
1-
101-
201-
この機能を使うにはJavaScriptを有効にしてください
|
AI製作関係スレ その2
1
:
MUGEN名無しさん
:2010/07/18(日) 15:05:37 ID:AP4BZlNs
AIについて語るスレです。
AIについての質問とか見つけたネタを書いてくカンジです。
前スレ
AI製作関係スレ
ttp://jbbs.livedoor.jp/bbs/read.cgi/internet/1117/1232180149/
71
:
MUGEN名無しさん
:2011/08/12(金) 12:23:23 ID:3QApvRMs
p2nameを使っちゃうのは?
helper指定して出ている間は攻撃振らないようにしちゃうのがカンタン
なんじゃないかな
まあそのhelperが常時発生してるなら使えないんだけど
72
:
MUGEN名無しさん
:2011/09/17(土) 01:38:47 ID:yTMaV9kM
AI製作について語りたいから来てみたけど・・
あまり書き込まれてない?
>>67
自分の場合、ダッシュは
Statedef -1 に動作開始条件を、
飛んだ先のステートで終了条件を書いてる。
73
:
MUGEN名無しさん
:2011/09/19(月) 13:32:06 ID:eGOoZPwo
>>72
>>67
のやってることは半分それじゃないかな。
いつまでも続けられる+いつでも止められる+Ctrl=1タイプのラン型ダッシュは、
AIに制御させる場合、Ctrl=1のままだと色々調整が難しいから
>>67
のようにダッシュステートをAI時にCtrl=0にしてしまって、
AI側にあるCtrl=1の動作条件にTriggerAll = (Ctrl||StateNo=100)で
ダッシュステート加えてしまう方式が一番安定するんじゃないだろうか。記述に手間かかるけど。
ただその場合「ダッシュステート内のChangeState(ダッシュ終了処理)で立ちステートへ」戻す時、
ChangeStateのオプションとしてCtrl=1を入れとかないとCtrl=0で立ちステートに戻ってしまうんで、
Ctrl=1を入れるかダッシュステート内のChangeStateをAI時に使わないようする必要があるけど。
自分も動作開始を-1(AI記述)でダッシュステートをCtrl=0に、
Ctrl=1動作条件にダッシュステートを加えてるけど、
自分の場合Var使って終了条件そのものは-1で調整してる。
その方が細かい調整をしたい時に、一々そっちのファイル開かなくて済むから。
ちょっと特殊なのとしては、Ctrl=0の状態を「ダッシュの出始め数F」だけにして、
AIはCtrlのみのままで【ダッシュ開始直後に他の動作をできないようにする】ようなものもあるけど、
他の人はどんな具合で調整してるんだろうか。
74
:
MUGEN名無しさん
:2011/09/23(金) 23:48:25 ID:cdMy6nIw
色々考えてみたけどCtrl=0にするのが一番いいな。
75
:
MUGEN名無しさん
:2011/09/26(月) 22:06:48 ID:TNRBPrp.
学習機能つけている人いる?
76
:
MUGEN名無しさん
:2011/09/27(火) 18:40:39 ID:nw0NZSmE
>>75
自分はガード中下段の記憶装置と対当て身投げの記憶装置を全部のAIにつけてる。
どっちもテンプレート使いまわせて対応も中下段は立ち屈み指定の切り替えて、
対当て身投げは状況判断Varで攻撃しないよう制御して終わり目を狙って攻撃する感じ。
ただそれら以外の細かいのはほどんど手を付けてない。面倒そうで。
77
:
MUGEN名無しさん
:2011/09/29(木) 01:56:12 ID:nP7iLijo
俺はガード不能とコンボ失敗と攻撃失敗の学習機能を付けている。
コンボ失敗は失敗したらそのコンボを使わないというもの
ガード不能と攻撃失敗は失敗直前の相手のStateNoを記憶して
次からその技を出された時は別の対応してる。
攻撃失敗(ジャンプとゲージ溜めも含んでる)はちょっと面倒だけど
記憶するプログラム書けば他のAIでも使えるし便利です。
ただ、自分のはVar一つで2つのStateNoしか記憶できないので
かなりVarを消費しました
78
:
MUGEN名無しさん
:2011/09/30(金) 00:27:12 ID:BFrcSfE.
敵攻撃f学習(未完成)、中下段学習、コンボルート失敗学習の3つかな
システム上コンボが安定しないキャラなもんで最後のは特別
普段は前者二つだけで済ませてる
今度は当て身用に、相手の攻撃判定の大きさ等をある程度測定、学習する
機能をつけたいんだが、厨忍氏のQ&A参考にしてもさっぱりわからん……
79
:
sage
:2011/09/30(金) 05:13:21 ID:uiv.vhk.
>>78
厨忍氏のQ&A
攻撃が当たった時に相手のStateNoと距離と
攻撃開始してからの時間を記憶。
距離が長くなれば更新しているみたいだね
80
:
MUGEN名無しさん
:2011/09/30(金) 08:59:19 ID:uiv.vhk.
>>78
厨忍氏のQ&A
varの偶数値にStateNo、奇数値に当たるまでの時間
fvarの偶数値に距離X、奇数値に距離Yを記憶している。
var(47)は順番に保存するためのカウンタ。
81
:
MUGEN名無しさん
:2011/09/30(金) 14:55:12 ID:p7FsDtTE
ttp://homepage3.nifty.com/andil/mugen/AI_atemi.txt
前スレで話題が出たときに作ったヘルパーを使った当身投げ用の記憶装置。
2年前のなんで色々と型落ちしてるけど、参考になれば。
10個分(Var各4個)までの技しか記憶できないものの相手の攻撃に当たったら
相手のStateNo,Time,ID,相手とのX距離Y距離(本体が動いた分も補正),etcまで覚えて
複数の記憶からX距離の近しい方を参照するようにする機能も。
(突進系の技とかは相手との距離で命中するタイミングがずれるので)
実際の使い道ではシールド持ちキャラのAIへ、bitに改良してStateNo,Time,X距離、
ID,攻撃回数,失敗回数,直前のStateNo,直前のMoveTypeまで記憶させて
最大20個分の技を覚えられるようにしてるのを使ってる。(Var各2個)
今それを元にループ処理を加えて新しいAIに搭載準備中。
細かい調査が不要ならStateNo,Time,X距離の記憶だけでいいだろうけど。
攻撃の発生Fを認識させて色々と利用しちゃうと凶悪になるけどね。
相手の攻撃にあわせて始動無敵の技を重ねるとか。
82
:
MUGEN名無しさん
:2011/10/01(土) 05:27:09 ID:nh/r5i2k
飛び道具でループコンボをつくろうとして
trigger1=var(55):=var(55)+1
のような記述を入れてみたのですが数値が代入されません
勝手に初期化されたのか、トリガーの一番下にかいてあるのかいろいろ疑ってみたのですがやはり代入できません
打撃技だと問題なく代入されるのですが、飛び道具だとこの記述は使用できないのでしょうか?
83
:
MUGEN名無しさん
:2011/10/01(土) 13:01:19 ID:8X3lUDWc
んなこたない
他のトリガーでミスってるんだろう
84
:
MUGEN名無しさん
:2011/10/01(土) 13:58:25 ID:tEuzyBeY
>>82
代入のしくみが良く分らないならこれを見てみよう。
ttp://homepage3.nifty.com/andil/mugen/Var.txt
85
:
MUGEN名無しさん
:2011/10/01(土) 15:03:43 ID:7rHsflRE
>>82
もしかしてtrigger1=var(55):=var(55)+1の前に「MoveHit,MoveContact」系のトリガーが入ってるんじゃないだろうか。
そうなら「攻撃があたった」という条件の為にMoveHitだとかにしたのかもしれないけど、
MoveHitとかは自身の攻撃しか認識できないので、飛び道具はHelper型ならHelper(*HelperID*),MoveHit=1だとか、
Projectille型ならProjHitTime(*projID*)=1だとかの参照方法で認識させる必要がある。
ただHelper側はMovetype=Aによる処理の前後でもしかしたらそれでも上手くいかない場合があるかも。
Helper型用でもっと確実なのは、Helperのステート側にParentVarAdd(親のvarに加算)をする加えるとか、
もしくは飛び道具を出すステート(始動用,ループ用両方)へのChangeStateをValue=**** +(var(55):=var(55)+1)*0にして、
相手の状態も条件にしてループするとかかな。Valueだとかの:=は「処理が行われる際に代入される」ので。
86
:
MUGEN名無しさん
:2011/10/02(日) 04:37:47 ID:sUWrMYD6
>>84
を熟読してようやく解決できました
>>85
の解説も非常に参考になりました、お二人様ありがとうございました
87
:
inae
:2011/10/02(日) 12:49:45 ID:8ADYXSVM
主に以下のような感じで浮かせ技を作ろうと思っているのですが、
trigger1 = time = 16
trigger2 = time = 22
trigger3 = time = 30
animtype = Diagup
ground.velovity = -1.5,-8
air.velocity = -1.5,-8
fall = 1
空中の敵に当てると問題無いのですが、
地上の敵に当てると浮かずにダウンしてしまいます。
何が原因でしょうか?
88
:
MUGEN名無しさん
:2011/10/02(日) 13:35:55 ID:794g7uFo
>>87
キャラ作成のスレで聞いて
89
:
MUGEN名無しさん
:2011/10/02(日) 16:51:14 ID:794g7uFo
質問です。helper(ID),〜って相手のヘルパーも参照できるんですよね。
相手のヘルパーIDと重なった時は自分のヘルパーを参照するのですか?
90
:
MUGEN名無しさん
:2011/10/02(日) 20:28:44 ID:H0U0Ivpk
>>89
Helper(ID),で他のキャラの出したヘルパーは参照できませんよ。
Helper,で参照できるのは自分が大本となっているヘルパー、
自分が出したヘルパーの他、そのヘルパーから射出したヘルパー(その子も可)などだけです。
なのでパートナーのHelperも同様に参照できません。安心してください。
ただ参照する方法がないのではなく、PlayerID(*ユニットID*),ならば敵味方関係なく参照できます。
そうした参照方法を多用して相手のヘルパーを探す場合、自分のヘルパーでないことも確認する必要があるのですが、
他のキャラが同キャラの場合は、PlayerID(xx),Name="xxxx"などが一緒になってしまう問題があります。
そこでPlayerID(xx),IsHelper(xx00+ID)という風な処理にすることで、確実な判断が可能になるわけです。
※ちなみにPlayerID(xx),TeamSide=TeamSideだけの判断では「パートナーの」と混同する可能性が出てきます。
(それ以外にもヘルパーのIDを記録して照合する方法もありますが、手間的にはHelperIDに+IDしてしまう方が圧倒的に楽)
そうした理由から射出するHelperIDに自身のIDもくっつけるという手法を用いている人たちがいるのでしょう。
私もそういうのCNSを覗いてHelperIDは重なるとマズいのかなと思ったわけですけど、
テスト用にいじってるKFMを使ってテストして調べて大丈夫だと確認しました。
91
:
MUGEN名無しさん
:2011/10/03(月) 18:15:56 ID:YTHbDy/E
>>90
自分のヘルパーだけでしたか。
なら、持ち越さなくていい数値はヘルパーに管理させても問題なさそうですね。
詳しく説明していただきありがとうございます。
92
:
MUGEN名無しさん
:2011/10/05(水) 07:53:33 ID:29s/I0cE
記述がわかりやすくて参考にしやすい作者のAIなんてありますか?
93
:
MUGEN名無しさん
:2011/10/05(水) 12:39:34 ID:xq0bvpUQ
どういうAIを作りたいのか、何を知りたい・何の参考にしたいのか、初心者かどうか
もう少し情報くれないとちょっと答えづらいな
デフォAIは基本的な記述でマイルドに作られることが多いし、初心者さんがAIに慣れるには良いかも
人それぞれ癖や好みがあるから、色々なAIを見るのが良いと思う
俺がぱっと思いつくのはPotS氏、GM氏、Gal129氏、rei氏、別府氏かな
94
:
MUGEN名無しさん
:2011/10/05(水) 14:57:20 ID:29s/I0cE
参考にしたいものはいろいろありますが、主に攻撃がヒットして浮いた敵まで走ってタイミングよく技を出して拾う、という一連の動作が知りたいです
今のところ平成㌢氏の説明書を参考にしてEnemyNear,vel yや時間調節用のvalue = 0などを使っていますが、
最初の浮かせる攻撃がヒットした時の打点が高すぎ・相手との距離が離れすぎて拾うタイミングがズレ、最悪の場合受身を取られて反撃されたり
相手によって体が小さい・重いなどの理由で追撃に失敗したりしてどうしても精度の悪さが気になります
それでよく作りこまれてる製作者のAIをのぞいてみたのですが、やはりそこはしっかりしてるようで
あまり馴染みのない記述がビッシリと書かれていて理解に苦しんでいるところです
95
:
MUGEN名無しさん
:2011/10/05(水) 15:50:27 ID:xq0bvpUQ
ここで書くのは結構しんどいですねw
とりあえず大雑把にいきます
・重力計算をする
相手が重かろうが計算が正しければそんなに空振りません
地上コンボの場合は摩擦計算をお忘れなく
・追撃の種類を増やす、受身を取られる場合は追撃しない
・浮かせる攻撃を当てる際に追撃のことも考えておく
→浮かせる攻撃が当たる条件以外に当たった後の動きを予め計算し、
受身可能時間となるまでに追撃範囲に入るかを計算する
・相手の喰らい判定の変化を考慮して計算する
→空中では足元が薄くなったり、絵に合わせて判定が動いたりします
その分を考慮して余裕を持ったy方向のヒット条件を考えます
立ち状態の腹〜胸の高さは空中でも喰らい判定に入ってると予想して
p2dist y(足元)にconst(size.mid.pos.y)を加えた位置を狙うようにする、など
「時間調節用のvalue = 0」とは0番ステートでしょうか?
立ちにせよ歩きにせよ、AI専用ステートにした方が管理が楽です
もう少し細かく、ということであれば捨てアドでも用意していただければ
96
:
MUGEN名無しさん
:2011/10/05(水) 20:50:30 ID:29s/I0cE
返事遅れてすみません、ご丁寧にまとめられていてとてもわかりやすいです
お言葉に甘えて、捨てアドの用意が出来ましたので記述の流れなんかを簡単に書いて頂けると助かります
mugenaisuteado@yahoo.co.jp
97
:
MUGEN名無しさん
:2011/10/05(水) 22:47:01 ID:w3LoBL32
>>95-96
相手の吹き飛び中の当たり判定について零れ話を。メールの方では話してるかもしれませんが。
「吹き飛び状態」の時、相手の体は体の中心当たりを基準に「斜め〜横」になりますが、
その時当たり判定の横は「衝突判定(Const(Size.Air.Front))」より広いが良くあります。
特に体の大きい相手は横にしても大きくはみ出すことが多いので、Const(Size.Head.Pos.Y)<-70くらいを目安に、
P2Dist X-Const(Size.***.Front)+Enemy,Const(Size.Mid.Pos.Y)/3程度、縮める計算をした方がいい場合もあるようです。
>>94
のようなタイプだと大差ないかもしれませんが、吹き飛ばし直後に追撃するタイプの場合、
大きさの違いによる空中と地上の衝突判定の設定差のせいで追撃の判断に違いの出ることもありました。
(実際には当たるはずなのに、当たらなさそうな場合の判断をしてしまう、など。)
98
:
MUGEN名無しさん
:2011/10/05(水) 22:52:32 ID:Ojx0C6.g
相手の差は後回しにして
まず一つずつ調整するのが良い。
そんなにいっぺんに質問したら答えにくい・・
99
:
MUGEN名無しさん
:2011/10/07(金) 19:54:24 ID:RAl2LVQw
>>94
自分が作っているAIはぶっ飛んだ相手を拾ってコンボするのが中心です
P2Bodydist XとP2Bodydist Yを使えば
ある程度は当たり判定が分ると思います。
あとはVel XとVel Y を使って相手が地面に落ちるまでの時間を計算して
相手を拾っています。
100
:
MUGEN名無しさん
:2011/10/07(金) 20:20:55 ID:poxUzhlI
>>96
この間メールしたものです
あの後追記と訂正のメールを送ったのでメールチェックお願いします
101
:
MUGEN名無しさん
:2011/10/13(木) 20:56:29 ID:LCa1Rrg2
アーマー感知ってどうやるんでしょうか?
102
:
MUGEN名無しさん
:2011/10/16(日) 13:19:53 ID:ddy/BLhA
ヘルパーのID取得して、
それが相手にダメージを与えるヘルパーかそうでないヘルパーか
判断する方法ってありますか?
Movetype=A以外になにかありますかね?
103
:
MUGEN名無しさん
:2011/10/17(月) 22:38:32 ID:FcHNB.JQ
102 自己解決しました
104
:
MUGEN名無しさん
:2011/10/20(木) 19:40:46 ID:rAfY..xw
91だけどヘルパーが出せなかったら非常に困るのでやめます;;
105
:
MUGEN名無しさん
:2011/10/21(金) 01:05:07 ID:1lZxIxbo
>>104
開幕に出しておくならHelper数が上限に引っかかって出せないって可能性は少ないですよ。
それこそHelperを占有する特殊な相手か、上限設定が極端に少ない場合くらいで、
どちらにせよ意図的に封じられなければ開幕にHelperが出せないってことはほぼ無いし、
意図的に封じているってことはまともに戦うような状態じゃありません。
開幕にHelperを出して常駐させて色々するってのは色んなAIでやってて、
AI動作の条件自体がHelper側で制御されてるものもありますので、
通常の対戦だけを考慮するなら開幕にHelper出して使うのは大丈夫かと。1、2個くらいなら。
106
:
MUGEN名無しさん
:2011/10/21(金) 21:46:56 ID:aZsHFk2E
なるほど・・
開幕にヘルパー出せなくする相手の事まで考える必要はないんですね。
ありがとうございました
107
:
MUGEN名無しさん
:2011/10/23(日) 18:38:10 ID:/LdUnZPo
敵のProjの情報ってあまり取得できないのでしょうか?
敵のStateNoとProjが当たるまでの時間で位置が分るくらいかな?
Projってだいたい等速だよね?
108
:
MUGEN名無しさん
:2011/10/25(火) 01:15:29 ID:EKMY.lIA
>>107
自分のProj情報も射出点を記憶して計算させないと分からないくらいだから
Projを正確に感知するのはP2Name使っても難しいんじゃないかな。
>>81
のやつのような要領で開始からの位置を細かく記憶させても、
飛び道具の大半は等速とはいえ、一応Projは速度係数や加速度も設定できるし、
特殊な使い方をしてる場合(アーマー時の攻撃判定とか2FProjとか)もあるんで
単純に計算させるとAIが見誤っちゃう可能性があって、難しいと思う。
(っていうか基本的な飛び道具の処理はHelperでするのが主流になっちゃってますし、
特殊な処理にしか使われてないんじゃなかろうか。)
ただ単純単体のProj飛び道具ならProj射出中本体のGuard.Distが無くなる仕様だとかを考えて、
HelperでInGuardDistの範囲を感知し続けて計算してX座標の位置くらいならいくらか分かるかも。
でも2個以上出されてたりHelperのGuard.Distが重なってたり、処理が特殊だと上手く感知できないけど。
109
:
MUGEN名無しさん
:2011/10/28(金) 01:54:16 ID:.2F19OAU
>>108
ありがとうございます。InGuardDistは使えそうですね。
これを使って色々試してみます。
110
:
MUGEN名無しさん
:2011/10/30(日) 23:24:36 ID:dyHFN2fA
攻撃を食らった時に何の攻撃に当たったか分かりますか?
飛び道具とか敵が2人いた時にどっちの攻撃に当たったかとか
111
:
MUGEN名無しさん
:2011/10/31(月) 18:35:04 ID:BuBzDPxg
攻撃を当てるとP2トリガーの対象が攻撃当てた相手になった気がするんで
enemy,movecontact
enemy,p2stateno=stateno
enemy,p2movetype=H
enemy,p2dist x=(pos x-enemy,pos x)*enemy,facing
とかで判別できないかな?
味方が同時ヒット喰らってるとダメそうなので
自分と味方のgethitvar系の数値を比較するといいのかも
同様のやり方でヘルパー飛び道具についても推察できると思うので
精度は敵の相方やヘルパーについての情報と重ね合わせて上げて頂くってことで
それと多段ヒットする飛び道具はmovecontactが立つと思うんだけど
単発物はヒットしてすぐに消滅ステートに入ってmovecontactが判別に使えないケースが
その場合は飛び道具と判定したIDのmovetype=Iをmovecontactの代わりにしたりでどうにか
112
:
MUGEN名無しさん
:2011/10/31(月) 22:46:01 ID:QqE6sQR2
ヒットと同時に消えるタイプのHelper飛び道具のヒット認識について気づいたこと。
キャラの処理順はMovetype=Aが先に処理されるのでMoveContactでステート移行or消滅するタイプは、
本体からだと自分のMovetypeがA(攻撃中)でないと先に動かれるからMoveContact認識できないけど、
一番最初に出しておいたMovetype=AのHelperからなら、MoveCotnactの処理をする前に認識できるかも。
処理はMovetype=Aのユニットから+IDの若い順なので、
早めに出してMovetype=Aにしておけば後から出したMovetype=AのHelperよりも早く処理ができるので、
その処理位置なら確実にHelperの処理を認識できるんじゃなかろうか。
ただ本体と認識用Helperの処理関係の管理とか、HelperをGuard.Dist=0にするとか面倒だけど。
113
:
MUGEN名無しさん
:2011/11/05(土) 00:04:50 ID:XkIKGzk.
やっぱ色々面倒なんですね・・
ありがとうございます。
114
:
MUGEN名無しさん
:2011/11/12(土) 10:43:03 ID:UQkZ.Wuk
Fvarの仕組みが分る人いますか?
9999999(7桁)までは安定するという事だけわかっています。
確かにこれ以上大きくすると不安定になるけど
キャラによって狂いだす値が違うし意味が分らない
しかも安定7桁というのが10進数だし・・
fvarの上位ビットが小数点の位置情報と思ったけど違うみたいだ・・
とりあえず23bit(最大8388607)まではビット演算で使っていますが
この範囲ならビット演算でも正確な数値を返しますかね?
fvarにビット演算しない方がいいって事はないですよね?
115
:
MUGEN名無しさん
:2011/11/14(月) 00:27:41 ID:CRpzGU6Q
>>114
自己解決。
仕組みまでは分らないけどビット演算やっても問題ないね
116
:
MUGEN名無しさん
:2011/11/14(月) 03:04:03 ID:CRpzGU6Q
>>112
について調べてみた
処理順は
キャラとヘルパーが全員Movetype=Iだったら↓
P1→P2→ヘルパー(早く出現したものから)
だけど、Movetype=Aが先に処理されるんだよね↓
P2(A)→ヘルパー(A)→P1(!A)→ヘルパー(!A)→ヒット判定
ヒットによって自分がMovetype=Hになるのはヒット判定処理時。
HitDefやHitOverrideによるステート移行はヒット判定処理時。
ヒットした瞬間に消えるヘルパーは
ヒット判定処理時にMoveCotnactになり、
もう一度自分に処理が回ってきた時にMoveCotnactを認識して消滅するタイプと、
ヒット判定処理時にHitdefでステート移行してそのまま消滅するタイプがある。
これであってますかね?
117
:
MUGEN名無しさん
:2011/11/14(月) 13:08:45 ID:Hnu3iuX.
処理順について細かいこというとIDの順(出現順)というよりメモリの並び順(デバッグの表示順と同じ)だった気がする
本体同士ならID順で安定だと思うけど、ヘルパーだと出入りがあるためそうとは限らない
A B C 順に生まれた三つのヘルパーがあり、左から処理しているとする(IDも左が若い
A C Bがdestroyselfすると真ん中のメモリが空き家となる
A D C その状況で生まれた新しいヘルパーDは空き家に入り込んでCより先に処理される
この場合はIDの大きいDがCより先に処理される
DがCの子だったりすると最初のフレームだけ順番が違ってくるだろうけどね
早期にmovetype=Aのヘルパーを出すとしても
>>112
のように後から出たmovetype=Aのヘルパーより先に処理されるかは
一番若いアドレスのヘルパーでないと保証されないと思う
P1最速(もしくは消さないヘルパーの後)で出すか、他にヘルパーが存在しない状況で出さないと穴ができるんじゃないかな
118
:
MUGEN名無しさん
:2011/11/14(月) 22:23:34 ID:CRpzGU6Q
>>117
ありがとうございます
119
:
MUGEN名無しさん
:2011/11/19(土) 23:02:54 ID:T7BaVEXI
>>117
今更だけど
IDの若い順じゃなくて、書いてある通りユニット番号の若い順だってこと忘れてました。
開始直後であっても。それが起きる状況としては、
2P側以降であり+1P本体から一時Helperが射出されていることで、現実的には
1.開始と同時にイントロ演出などのHelperの射出→退場による空き発生
2.AI用の画面端認識の一時処理Helperなどが本体側から射出されている
という場合が考えられる、のかな。1はかなり多くても、2は少ないと思いたい。
イントロを飛ばした場合は一旦リセットされるので細かい演出が無ければほぼ穴は発生しないかな。
とにかく確認したい場合はまず、「開始直後(RoundState=0)に射出」しておいて、
定期的に新しいHelperを出して、ParentVarAddとParent,Var(xx)で
処理の順番を確認してより遅い方を消失させてしまう、といった方法なら、
時間がかかるかもしれないけど、ある程度確実に配置できるかも。
確認には本体がVarSetで指定のリセットして、
確認用のMoveType=AのHelperに(Time>0で)、本体のVarを確認してParentVarAddする。
次のMoveType=AのHelperから同様に本体のVarを確認して、!=0ならDestroySelfをする。
といった感じかな。互いに本体の認識をするだけだけど、
HelperIDは念のために別々にしておいた方が記述は面倒だけど参照に不備が出なくて済むかと。
120
:
MUGEN名無しさん
:2011/12/03(土) 00:42:40 ID:j/6ElHu2
>>119
詳しく説明していただきありがとうございます
121
:
MUGEN名無しさん
:2011/12/12(月) 03:27:14 ID:CcCdOtQM
厨忍氏のサイトにある技のステート、発生、距離を記憶する記述を参考にしてAIに組み込んだのですが、
正常に動作はしているものの
TRIED TO ACCESS NON-EXISTEN PLAYER WITH ID〜
というエラメが画面左上に流れ出しました。
変数や記述に間違いがないか確認しているのですが中々解決できず、
またPlayerIDExist(○)の記述を足したらエラメ自体は消えたものの、
今度は正常に動作せず相手の技を記憶してくれなくなりました。
どなたか解決方法を知りませんか?
122
:
MUGEN名無しさん
:2011/12/13(火) 15:42:12 ID:WUzWsfzI
記述のせてくれなきゃなんとも
123
:
MUGEN名無しさん
:2011/12/14(水) 04:22:17 ID:0E7LpZMk
>>121
自己解決しました。失礼しました
124
:
MUGEN名無しさん
:2011/12/15(木) 05:58:56 ID:reZ3E8uo
落下して何F後に地面に落ちるか計算したいのですがよく分りません。
必要な数値はPos Y , Vel Y , 1F毎に増加するVel Yの値 ・・かな?
1F毎に増加するVel Yの値はVel Yを監視しておけば分るかな。
何F後にPos Yが0になるかを計算したいです。
私が考えた式は (1F毎に増加するVel Yの値⇒VelAddY とする)
0 = PosY - (VelY + VelAddY*F) *F (Fを求めたい)
となったのですがあってますかね?
125
:
MUGEN名無しさん
:2011/12/15(木) 16:26:46 ID:reZ3E8uo
>>124
自己解決しました。
0 = PosY - (VelY + VelAddY*F) *Fではなく
0 = PosY + (VelY + VelAddY*F) *Fでした。
126
:
MUGEN名無しさん
:2011/12/23(金) 01:46:49 ID:zLj8D4MM
聞きたいんだけど
キャラ本体の作者さんにAIの制作許可もらうのってAI作り始める前に作者さんに聞きに行ってる?
AI作ってからそれを見せてこんなん作ったけど公開していいですか、って聞いてる?
前者のほうがAI作る側としては助かるけど、演出とか性能のちょっとした改変もしたいってのがあって
でも相手が海外の人だからそのへんの細かいニュアンスとか俺の英語の文章力じゃ伝えられん・・・
127
:
MUGEN名無しさん
:2011/12/25(日) 23:22:36 ID:wmc0zwyg
自分はある程度製作して、公開が実現できそうになったら連絡してる。
その際、近日公開したいと思っているということ、作者さんが作成・公開自由
という旨をおっしゃっていない限り公開して大丈夫かということ、他気になる点
(改変/調整等)を聞く感じ。
一応、必要であれば現状のAI実物をお渡しします、って付け加えてる。
公開ダメって言われたら素直に諦めます。
あと英語は俺にも無理じゃ。自分でベンキョーするか、エキサイト先生に頼むか
野生の英会話塾に頼んでくだされ。
128
:
MUGEN名無しさん
:2011/12/26(月) 01:23:25 ID:cBs9S0HU
ステージのtensionの値を判断する事は出来ますか?
129
:
MUGEN名無しさん
:2011/12/27(火) 02:53:59 ID:usaEIaM.
>>127
そっかーありがとう
やっぱある程度見せられる物は用意しといたほうがいいかもね
まあでもいきなり実物送りつけて見てくれってのもぶしつけだわな
まずはメールで理解してもらえるよう頑張るわw
130
:
MUGEN名無しさん
:2012/01/06(金) 17:19:14 ID:c2s/zTf6
すみません、初めてAIを製作していまして、
飛び道具を感知してグレイズするために、まず
「試合開始直後の敵ヘルパー数」を変数に記憶させている(つもり)
なのですが上手くいきません。
何が問題でしょうか。
;敵ヘルパー式飛び道具感知
[State -2,ヘルパー式飛び道具感知用]
type = VarSet
trigger1=RoundState=2
trigger1 = GameTime <= 1
var(57) = EnemyNear,NumHelper
131
:
MUGEN名無しさん
:2012/01/07(土) 02:36:55 ID:qjrBKcrA
>130
GametimeってRoundState=2からじゃなくて
RoundState=1から進んでるから条件に入らないからかな。
var(57)=0のときのみ代入するとかそっちのほうが分かりやすいと思うよ。
間違ってたらごめんね。
132
:
MUGEN名無しさん
:2012/01/07(土) 03:20:32 ID:nMaqr.iM
>>130
GameTimeは「mugenを起動してからの試合画面のフレーム数」なので、
試合開始前だけでなく、前の試合も含めたGameTimeになってるはずです。
開始時のヘルパーの数を安定して取得したいなら、
>>131
の方も言ってるように、
Trigger1=RoundState=2&&Var(57)=0;とかいう感じで代入する方が分かりやすいと思う。
ただ開始時のヘルパー数を確認するだけじゃ「エフェクト」か「飛び道具」か判別つかないから厳しいような。
それこそ相手のヘルパーをPlayerIDで参照して確認するとかそういう技術と併用しないと…
一番簡易的な飛び道具認識としては
「P2Movetype!=A&&InGuardDist(相手が攻撃でない+ガード可能範囲=飛び道具かも)」っていうのがありますよ。
あとは難しいけどAI用にヘルパーを出してInGuardDistの位置と相手の位置を確かめて判断するって方法とか。
133
:
130
:2012/01/07(土) 10:00:07 ID:bsP51QvM
>>131
,
>>132
お二方、ありがとうございます。
なるほど…GameTimeはそういうものだったんですか。
まさかデバッグで1番最初に出ている奴だったとは…この海のry
・「var(57)=0のときのみ代入」
この方法で無事に記憶させることが出来ました。
ありがとうございます!
・「エフェクト」か「飛び道具」か判別つかないから厳しい
エフェクトはExplodで作るもの!!(キリッ
・「P2Movetype!=A&&InGuardDist」
そのアイデア頂きました!
とりあえずはイメージどおりに動いてくれているので、
更なる強化が必要になったらリダイレクトな方向に作ってみます。
これで、
「キャラをDLして魅力に気付き、AIを作ろうと思ったらすでにキャラ対で脱落していた
な、何を言っているかry」
という悔しさを晴らすことが出来ます。
ありがとうございました!
134
:
MUGEN名無しさん
:2012/01/08(日) 01:42:33 ID:.WxKxK1Q
>>132
GameTimeは起動の時間を表してたのか、勘違いしてた。
補足含めて色々ありがとう。
135
:
MUGEN名無しさん
:2012/01/09(月) 19:21:12 ID:bYWWkTjk
自分は飛び道具?ってやつはenemy,hitdefattrとInguarddistでやってるなぁ
それと予め自分の90ドットくらい前に常駐helper置いといて
trigger=enemy,movetype=A
trigger=!enemy,hitdeattr=SCA(飛び道具はhelper等にhitdefが付いて本体には無い)
trigger=!inguarddist
trigger=numhelper(#####)
trigger=helper(#####),inguarddist
って感じにしてる。これなら近すぎる飛び道具に反応しちゃう事もないし
Explodとかで判別すると飛び道具見てから飛び込むけど、出る前に既に飛び込んでる、
ってのが個人的に理想だから
これにその他変数等入れて精度とか判別手段増やしてる
正直欠陥だらけなんだけど、意外なほど機能してる現状
まぁ一番はやっぱ相手のhelper情報取得しちゃう事なんだけどね
136
:
MUGEN名無しさん
:2012/01/09(月) 20:26:18 ID:tYIA7OOE
自分は
>>132
の最後に言ってたHelperのInGuardDist位置と相手の位置を比べるのを使ってる。
自分の前の+50,100,150,200のInGuardDistをHelperのVarに代入して、
50のInGuardDistが真で100が偽+相手が100より遠い = 相手本体のGuardDist以外がある?
みたいな感じに、100真・150偽+150より遠い、150真・200偽+200より遠いって並べてる。
ただこの場合「タッグ戦で挟まれている場合」も、反応しちゃうし、
相変わらず打撃判定とかの飛び道具やら分身やらは認識できないんだけど。
137
:
MUGEN名無しさん
:2012/01/13(金) 00:22:02 ID:GQSUZEZw
>>136
それってヘルパー4つ使ってるの?
138
:
MUGEN名無しさん
:2012/01/15(日) 00:28:44 ID:n88hnp4E
>>137
一つだよ。HelperをPosSetとTurnで本体に座標と向きを合せて、
PosAddでX=50した直ぐ下でInGuardDistをVarに代入×4回。
本体からは、Helper(xx),Var(x1)=x&&Helper(xx),Var(x2)!=xという感じで判断。
(実際の記述はbit演算なので、一つのVarで済ませてるけどイメージはそれと一緒。)
Vel系は「そのユニット(本体/ヘルパー両方)の処理の終わった時点」で座標が動くけど、
Pos系は「その処理が行われた時点」で内部的な座標が動いてる。んでもって、
InGuardDistは「現座標で相手のGuard.Dist(Attack.Dist)内にいるかどうか」の情報なので、
最中にPosが動いていればその動いた先でのInGuardDistの判定を返してくれるのよ。
なので、Helperは一つで十分。
問題としてHelperをMovetype=A(+Attack.Dist=0)にしないと情報が常時1F遅れる。
(mugenの仕様でMovetype=Aだと処理が先になる→本体がMovetype!=Aの時はそのフレームでのInGuardDistを教えてくれる。
そういう情報は1F遅れても大差無いので、自分は気にせずMoveType=Iで処理させてるけど。)
139
:
MUGEN名無しさん
:2012/01/15(日) 04:21:34 ID:OjXEphOs
>>138
ありがとうm(_ _)m
1Fで何回でも移動できたのか・・・
最後のPosSet,PosAddしか見ないのかと勘違いしていた
つまり、PosAdd x=1(-1)の命令を書きまくったら
飛び道具の動きに合わせてヘルパーを移動させる事もできるね(Guard.Dist(Attack.Dist)の数値分離れるけど)
Projの監視は諦めていたけどXの位置と速度はある程度分りそう
古いゲームキャラとかはProjをよく使ったりするから対策しておきたかった
自分が作っているAIのキャラは近づけないと何もできないから・・・
いい情報、感謝。
140
:
MUGEN名無しさん
:2012/01/17(火) 22:49:44 ID:HHH2xls6
>>139
実際にやるとしたらPossetでX=170に動かして、var(x1),var(x2)を0にしてから
[Statedef xx020]
type=s
[state xx020, posadd]
type = posadd
trigger1 = 1
x = -1
[state xx020, posadd]
type = varset
Trigger1 = InGuardDist
trigger1 = var(x1) = 0 && var(x2) = 0
var(x1) = floor(Pos X)
[state xx020, posadd]
type = varset
Trigger1 = !InGuardDist
trigger1 = var(x1) && var(x2) = 0
var(x2) = floor(Pos X)
[state xx020, changestate loop];ループ処理
type = changestate
trigger1 = pos X > -170 ;画面の反対端-10に到達していない
value = xx020
[state xx020, changestate];ループ処理後
type = changestate
trigger1 = 1
value = xx000 ;戻す
みたいなループ記述で処理させないと記述量が大変になるけど。
見比べたい場合は前Fのx1,x2は別のvarへ移しておく感じね。
あとProjについて補足ですが、「Projを射出している最中は本体からのAttackDistが出ない」みたいです。
InGuardDistの範囲を監視して、移動方向とかを認識する場合、
Helperの飛び道具だと相手本体からのAttackDistが重なるので調べ切れない部分が出ますが、
Projの飛び道具だと基本的にそれが無くなるので、比較的調査しやすいかも。
141
:
MUGEN名無しさん
:2012/01/18(水) 18:59:46 ID:iORmuHpQ
>>140
なるほど、ありがとうございます。(わざわざ例を書いてくれて・・)
changestateで1F何回でもループできるの初めて知った・・
これで自分のAIの容量がだいぶ減らす事が出来そうです。
やっぱHelperやProjに関してはまだまだ初心者だ・・
Helperの飛び道具監視はPlayerIDでやってます。
ちょっと気になる点がありますが、
「Projを射出している最中は本体からのAttackDistが出ない」
というのはMovetype=Aになっていない場合ですかね?
Movetype=AのステートでProj出す時はAttackDist出ますよね?
142
:
MUGEN名無しさん
:2012/01/18(水) 23:25:43 ID:hI8DKtHo
>>141
Proj射出中の本体のAttack.Dist>MoveType=Aでも出ないんです。
Proj自体からAttack.Distが出てるので普通困ることはないのですが、
Projを飛び越したりくぐったりした後、Projが消える前に相手の攻撃に対してレバーを後ろに倒すと、
通常ならガードする範囲でも、ガードモーションにならず、後ろ歩きになってしまうんですよ。
(Ctrl=1でCommand="holdback"の状態なら、ガードステートで待機してなくても、攻撃を食らった際にガードしますけど。)
ちなみにステートのループについては「2500回」が限度で、
それ以上のChangeState処理をするとエラーでMUGENが落ちちゃいます。
( 1つの本体orヘルパーが、1フレーム中に、2500回です。
複数のヘルパーが2000回以上処理してても、一つのキャラで2500回を超えてないと落ちないはず。 )
ループ処理のミス以外でループ上限に引っかかってMUGENが落ちるのは余程ループさせてないとなりませんけど。
143
:
MUGEN名無しさん
:2012/01/19(木) 00:21:44 ID:syi1YjrU
>>140
>>135
の人間だけど、自分もすっげーべんきょーになった
やっぱある程度できて面倒になったから、ってのはダメだな
試行錯誤に終わりはない。上に上に目標立てねば
正直未だに1F内でそういったことが順番に行われているっていうイメージが
掴めなくて、なかなか理解しきれんのだけど、頑張って見よう。うん
>>141
>>142
の人も言ってるけど、基本的に飛び道具ってのはProjないしHelperにHitdef
およびAttack.distがついて、本体からはMovetypeに関わらずなにも出ていない…はず
144
:
MUGEN名無しさん
:2012/01/19(木) 02:21:26 ID:B71Qe7t6
>>142
試しにテストしてみたけど
どうやら新MugenだとAttack.Distが出るみたいです。
旧MugenだとAttack.Distは出ませんでした。
2500回ですね。分りました。
改めて処理速度の速さに驚いた。
145
:
MUGEN名無しさん
:2012/01/19(木) 03:05:04 ID:IKdgut2o
>>144
あー新Mugenでは確かめてませんでした。自分、旧mugenしか使ってないので;
新mugenではProj出してる間でも出てるようになってるのかぁ…。
146
:
MUGEN名無しさん
:2012/01/24(火) 00:43:16 ID:uMwmBXZ2
飛び道具どころか出の早い通常攻撃もガードしてくれないぜ!www
それはさておき、
いつの間にか空中に立つバグが発生するようになってしまいましたorz
地面にめり込んだりもします。グギギ…
AIを書いてるステートのstatetypeは調べたんですが…
何か心当たりのある方は御教授ください。
147
:
MUGEN名無しさん
:2012/01/24(火) 11:45:13 ID:QOn/U3S6
>>146
>空中立ち
空中立ちの主な原因はStateType!=A/=Aの間違いだけど、
空中立ち+めり込みとなるとガードステート記述の間違いかも。
ガード動作から空中で立ったり、めり込んだりしてる場合はそれです。
ガードの中下段切り替え用に、State,140や120からStatetype=A状態からでも
StateType=CやSへ切り替えたり、地上ガードにChangeStateするようになっちゃってると両方起こる。
(空中で地上ガード→空中立ち状態 落下中に地上ガード→落下速度はそのままで地面より下へめり込む)
昔やらかしたそれくらいしか心当たりないんで、それ以外は分からないけど。
>出の早い〜
動作の確率が高すぎて刺さっちゃってるんじゃないかな。
相手の動作が遅い場合は反対に差し込めてるけど、相手の方が早いと食らってるとか。
動作に!InGuardDist挟んで動作を制限するとガードしやすくなるかも。ただし完全制限はオススメできないんで
TriggerAll = !InGuardDist || Random < 200 ;とかみたいにある程度の確率で動作もする感じで。
148
:
146
:2012/01/26(木) 01:40:02 ID:xRfW9x4c
>>147
情報ありがとうございます。
コマ送りで調べてみたところ、まさしくガードステートでした。
無事バグを消すことに成功しました。
出の早い技についてですが、確率を下げたところ、上手い具合になってきました。
が、一番防ぎたい技は上手く防げない…
何でかと思ってその技のCNSを見たら、
飛び道具でしたよwww エフェクトかと思ってたよ、チクショウww
ここの所話されている対飛び道具記述で頑張ってみます。
ありがとうございました。
149
:
MUGEN名無しさん
:2012/02/11(土) 13:12:52 ID:kKEqmlvI
age
150
:
MUGEN名無しさん
:2012/02/13(月) 01:18:20 ID:breT3G6.
最近作り始めて少し?てなった記述があったので、少し質問させて下さい
上述の対飛び道具認識記述を自分でも理解したいと思い、他人様の記述を
参考にしようと覗いてみたところ (var(58)/1000)%10 なる記述が
ございました
var(58)/1000 がvar(58)の値を1000で割ってるってのはわかるのですが、
この後ろの%10てのが何を意味するのかよく分からないのです
普段は何か分からなかったら各種trigger、ステコン記述の解説サイト様
で調べるのですが、この記述に関してはどうも無いらしく…
その他記述が何を意味し、何を行っているかはギリギリついて行けるの
ですが、この部分だけが全く分からない
色んな方の記述やAIを見る限りかなり常識的な記述臭いのですが…
ご存知の方がいらっしゃいましたら、どうぞお願い申し上げます
151
:
MUGEN名無しさん
:2012/02/13(月) 05:17:36 ID:8liuWYPk
>>150
「xx%zz」は「xxをzzで割った余り」です。余剰の計算ですね。
例えば「7%3」なら7/3は2余り1なので「1」の計算になります。
xx%1なら常に0、xx%10とすれば必ず1桁目だけを算出することができるわけです。
AIでの使い方としては「Varに対して複数の情報を入れる」場合に使われたりします。
Varは -2147483648 〜 2147483647 (32bit)までの数値を扱えるのですが、
10とか2〜3桁程度の数値を入れると「xxxxxx150」のように高い桁数に空きができてしまうので、
その空きの部分に数値を入れることで1つのVarへ複数の情報を入れているのです。
例えば3桁までの数値で「150」と「549」と「345」を1つのVarに入れれば「345549150」となります。
そこから中央の「549」を取り出す際「Floor(Var(xx)/1000)%1000」という数式を用いるわけです。
(下の桁はまず割り算で小数にしてFloor(小数切り捨て)で消し、上の桁は%(余剰)で消すという処理。
代入する際も、同じような手順で決めた桁へ代入します。※Floorをしないとエラーで落ちるので注意。)
ちなみに、こうした処理はVarの共有とか圧縮とか呼ばれてますが、
bit演算子「 & 」「 | 」を使うことでbit毎に管理する共有方式もあります。
152
:
150
:2012/02/13(月) 15:28:20 ID:breT3G6.
>>151
マジで感謝です!
そうか、割った余りだったんですね
AIでの使い方の実例や、分かりやすい記述内容の解体等至れり尽くせり
で本当に助かりました
よーし、さっそく作るぞー
153
:
MUGEN名無しさん
:2012/02/23(木) 10:56:56 ID:Hu5NREEI
AIの記述をcmdファイルに追記せず別ファイルでつくる形にしたいのですが
うまくいきません。defファイルに記述する読み込みの順番やファイル分割のルールなどはあるのでしょうか?
154
:
MUGEN名無しさん
:2012/02/24(金) 11:51:56 ID:UxfbxS9M
AI作成初めたのですが、まるで動かせないので少しご教授願います…
⑨氏のメルブラAA仕様のキャラのAIを作ろうとしているのですが…
AI講座の通りに技をstate -3に技を記述して行動させようとしても歩きとしゃがみしかしません…
omakeの方には好きなように行動を記述するだけ、とあるのですがまるで出来ません…
こんなことも分からないなら辞めた方が良いのでしょうか…?
155
:
MUGEN名無しさん
:2012/02/24(金) 16:10:37 ID:1JN1klTc
>>154
「諦めんなよ!何でそこで諦めんだよ!!」ってテニスの人が言ってました。
俺もまだ駆け出しの身ですが、分かる範囲で助言を。
で、とりあえず⑨氏のキャラとそのomakeファイルをDLしてみました。
なるほど、歩きとしゃがみしかしないのは、omakeファイルのデフォルトの状態ですね。
ということは、
>>154
さんが書き込んだ記述は読み込まれていないわけです。
よくあるパターンとして、
・AIフラグが入っていない(間違えて人操作用の記述になっている)
・[State -3 のような記述ミス
・そもそもtriggerを満たしていない
・defファイルにAIを記述しているファイルを書いていない
なんてのが自分にはありました。
俺に挙げられるのはその位です。
これで駄目ならベテランの皆さん、よろしくお願いしますm(_ _)m
156
:
154
:2012/02/25(土) 16:08:04 ID:JGE/ySw2
むー…色々確認してみましたが、やはり駄目です。
一朝一夕じゃあやっぱり無理ですねぇ。難しい…
157
:
MUGEN名無しさん
:2012/02/26(日) 00:20:11 ID:gscTypeg
AI作成をちょっとしかしたことない人だけど手助け出来れば。
まず動くかシンプルな記述をさせるのが手かなぁ。
遠距離で通常技ぶんぶん振り回せることから始めてみるとか。
これなら記述少なくて内容確認しやすいしね。
記述ミスがある可能性があるからもう一度作り直すって方法もあるよ。
作って試してみると何故か動かないことがあって打ち直してみると動くってこともあったね。
158
:
MUGEN名無しさん
:2012/02/26(日) 06:46:47 ID:EkcJPmgI
>>153
cmd=(コマンド、分割できない)
cns=(基本設定が書かれているファイル)
st 優先度高い順
stcommon優先度低い
同じstatedefは分割できない。複数ある場合は優先度が高いものしか見ない
>>154
AI用のファイルならdefの記述がおかしいのではないかと思う。
そのAI用ファイルよりも優先度の高いファイルに
statedef -3の記述があったら読み込まれない。
159
:
MUGEN名無しさん
:2012/02/29(水) 22:37:26 ID:kOogFgek
Defの記述に間違いないなら
とりあえず技をtrigger1=1で発動させるようにしてそれでダメなら
動かない原因はそれより前のChangeStateが常時作動しているか
記述ミスかその技のファイルを読み込んでいないか かな
技を発動させる条件の記述が正しくても
それより前や後の記述が間違えていれば(主にラベルのミスで他にも影響する)
技が出なかったりする。
(Statedef -3 にChangeState書くとそれが実行された瞬間(常時作動ならずっと)
それ以降の記述は(Statedef -2やstatedef -1も)読まない)
まあ、まずは何が原因で動かないか確かめるために[Statedef -3]内の記述を一時外して
技の命令だけ書いてみる事をお勧めしますよ。
それで動いたらほかの記述が原因で動かないって事が分るから
少しずつ外した記述を戻していくと、どの記述が原因かすぐ分る。
160
:
nzunazu
:2012/03/08(木) 16:49:04 ID:lEpBbsnI
悪咲氏のキャラのAIを作ろうと思っているのですが、
氏と連絡が取れないので作ることはできませんか?
161
:
MUGEN名無しさん
:2012/03/08(木) 18:44:59 ID:kO5FUVQc
悪咲氏キャラは性能改変がなければ勝手にAI作って良かったはず
162
:
nzunazu
:2012/03/08(木) 19:32:49 ID:lEpBbsnI
>>161
ボイスパッチや、カットインを入れたsffは公開してもいいのでしょうか?
163
:
MUGEN名無しさん
:2012/03/08(木) 20:41:48 ID:kO5FUVQc
その手のパッチについては特に言及がなかったと記憶してるので答え辛いのだけど、
おそらくAIと同様に「良識の範囲内」ってことで性能改変やイメージを壊すようなネタとかなければ大丈夫かと
カットインは明らかに絵面が変わる分、ダメという人もいるかもわからんけど
心配だったら人の多いスレで聞いてみてね
164
:
nzunazu
:2012/03/08(木) 22:00:34 ID:lEpBbsnI
今、AIを作っているんですが、トリガーでP2BodyDist Xなどの
相手の距離を記述するものってありますよね。
その相手の距離を調べるにはどうしたらいいですか?
それともう二つ、一つ目はcnsにAI記述を書き込む順でコンボは変わりますか?
二つ目は、私の作っているAIがなかなかうまくガードしないのですが、
どう記述すればちゃんとガードしてくれますか?
教えてください。お願いします。
165
:
MUGEN名無しさん
:2012/03/09(金) 00:05:56 ID:cERap3AY
質問の意味がよくわからない…
・直近の相手との距離だったらp2bodydist xでいいじゃない?
式にするなら(enemy,pos x-pos x)*facingってな感じ
・cnsは上から読み込むので同じ条件なら上に書いた記述が優先されるけど、そういう質問?
・ガードステートにAI用の記述がなくて即ガード解除してるとか?
質問がザックリしすぎだよう
とりあえずステコン・トリガー一覧や和訳KFMとか参照しながら既存のAIでシンプルなもの(デフォAIとか)の記述を読んだり改造するのがいいんじゃない?
166
:
MUGEN名無しさん
:2012/03/09(金) 00:22:36 ID:cERap3AY
p2bodydist xだとconstで設定されるキャラ幅の端からの距離になるから
中心軸の距離ならp2dist xな
(enemy,pos x-pos x)*facingはenemyに対する軸間距離ね
167
:
MUGEN名無しさん
:2012/03/09(金) 04:06:13 ID:JKDXtYKQ
P2BodyDist Xなどの距離を調べてみたいならデバッグモードを活用かな。
試合中D+Ctrlで出来るからトレーニングモードで動かしてみるといい。
168
:
MUGEN名無しさん
:2012/03/09(金) 04:07:30 ID:JKDXtYKQ
ちょっと記述ミス、Ctrl+Dのほうが正しいね。
169
:
MUGEN名無しさん
:2012/06/21(木) 00:18:08 ID:v2SasgsA
AIに関して・・・なのかどうか分からないのですが、ちょっと気になることがありまして、
よろしければどうかご意見下さい
内容は「一部のキャラクターのAI記述を入れるとイントロを飛ばせなくなる」
というものです
大きな実害はないのですが、毎回イントロを強制されるのは自分としても
AIを使っていただける側にもちょっとウザイかなと・・・
これはAI側の記述の問題なのでしょうか?
また、原因は何なのでしょうか?
170
:
MUGEN名無しさん
:2012/06/22(金) 04:32:07 ID:KHmfV8yo
>>169
私の方でもウォッチモードでイントロを飛ばせるキャラと飛ばせないキャラがいるので
キャラを調べたらHelperを出しているキャラのみ飛ばせて、
そのキャラのHelperが無い状態だと飛ばせないみたいです。
試しに一瞬だけHelperを出してもHelperがある時だけ飛ばせて、消えた後は飛ばせないようです。
ただAIを記述するとき本体にあったHelperを消していたなら、それが原因だと思いますが、
Helperなどをいじっていない場合はわかりません。
試しに適当なHelperを射出してイントロを飛ばせるか調べてみてはどうでしょうか。
新着レスの表示
名前:
E-mail
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板