トピック
Seiryu XYZEX7

敵のAIについて

スマブラみたいな格闘ゲームの敵のAIって、どんな風にしたら違和感のない動きになりますか? 具体的に言うと、空ぶる攻撃をしたり攻撃にあたりにきたりしないとか。 ちなみに仕組みは、ボタンを入力したらデータ化してあるモーションの動きを読み取って、その通りに動かす... という感じです。
5そうだね
プレイ済み
返信[1]
親投稿
近接攻撃中心→距離をとる→遠距離攻撃中心→距離を詰める の繰り返しみたいな感じにパターンの繰り返しをすればいいと自分は思います。
1そうだね
プレイ済み
返信[2]
親投稿
Seiryu XYZEX7
しょぼーんさん、意見ありがとうございます! うーむ... パターンの繰り返しかぁ... でもそれだと範囲の一番広い技を連打したりしませんかね?
0そうだね
プレイ済み
返信[3]
親投稿
しろ sshiro1shiro
昔ストⅡの敵AIのサガットが『タイガー』打ちまくって、頑張ってジャンプしながら突っ込んだら『タイガーアッパーカット』を食らった記憶がある。
4そうだね
プレイ済み
返信[4]
親投稿
かおなし SYO-YU-KOTO
久しぶりにwii起動して乱闘兄弟やり直してみるか… これは気になる
3そうだね
プレイ済み
返信[5]
親投稿
レベル1AIなんかはランダムで((
3そうだね
プレイ済み
返信[6]
親投稿
ツララ LongIceSword
AIが判断材料にするのは相手との距離情報の他にも、足場の状況だったり、残り体力差だったり、ジャンプ中や何か技を出してるモーション中とかだったり色々あると思いますけど そういう要素を全部洗い出して、行動の優先順位を変えた色んなパターンのフローを作ってみたらいいんじゃないです? そうすれば格闘技で言う『型』みたいなのが出来上がると思うんですけど。 あと予めデータ化してあるモーションも垂れ流しで使うんじゃなくて、実行する時に数値の一部をループ中で常時更新してるグローバル変数に変更するだけでも柔軟性はかなり上がると思いますけど。
3そうだね
プレイ済み
返信[7]
親投稿
コレの場合、相手との距離を示す変数にRNDを加えたらたまに空振ったりするようになりました。 僕もAIの違和感を無くそうと試行錯誤して作ったのですが、まともに解説できないくらい複雑な仕組みになっています···。
1そうだね
プレイ済み
返信[8]
親投稿
スマブラだと、AIが全員、ステージ外に居るキャラを狙ってて全く動かない場面が有るから。「あるキャラ(あるいは判定?)に狙いを定める」っていう機能は必要だと思う。 そうすると、当たり判定の情報(範囲や移動速度等)を保管するものは要るかな?AIによって順位が変わる重要度のような概念を追加しても良さそう。
3そうだね
プレイ済み
返信[9]
親投稿
Seiryu XYZEX7
どうやら自分は高望みをしすぎていたようです... ということで少しでも簡単になるように、次の処置をとりたいと思います! 1. ステージの地面はすべて平らに 2. ステージのギミックをなくす 3. 復帰という概念をなくす   (定められた範囲を越えたら即アウト) これでかなり簡単になるはず... 崖復帰システムについては、手もつけていませんでしたからね...
2そうだね
プレイ済み
返信[10]
親投稿
後からでも追加はいくらでも出来るしね
3そうだね
プレイ済み
返信[11]
親投稿
Seiryu XYZEX7
それとクローバル変数についてなんですが、わからなくてググってみたんですが、全くと言うほど意味がわかりません!できれば分かりやすく教えてほしいです!
0そうだね
プレイ済み
返信[12]
親投稿
Seiryu XYZEX7
一応いっておきますが、自分は皆さんに比べプログラムが下手なので、期待はしない方がよいと思います。でも、やれるだけはやってみるつもりです!
2そうだね
プレイ済み
返信[13]
親投稿
さとう えいた rokkuman200408
気になるからこめのこし(ただいきさつを見たいだけ)
1そうだね
プレイ済み
返信[14]
親投稿
多分ですが、簡単に言えば グローバル変数は、普段プログラム内で使っている変数の事で、その反対?のローカル変数は、DEFの中などで使う変数だと思います。
1そうだね
プレイ済み
返信[15]
親投稿
ツララ LongIceSword
グローバル変数はDEF命令を使わないならら特に意識する事はないんですけど、対になっている用語がローカル変数ですね。 要するにその変数が機能する範囲の区分け的な違いなんですけど、グローバルの方が範囲が広いです。 そのプログラムの中で使う変数は最初に変数名を宣言してメモリーを確保するんですけど(OPTION STRICTを使わなければエラー出ないですけど) 重複する変数名って使えないですよね?これがグローバル変数。 でもDEF~ENDの中で再度変数名を宣言する事で、そのDEF命令の中でだけ別扱いになって同じ変数名を使い切りで使えるんですが、これがローカル変数。 ちなみにシステム変数って言う種類の変数も有りますけど、文字通りプチコン3号のシステムが使ってる変数で、MAINCNTとかTIME$とかですね。 読み取り専用だったり、中身の変更は自動だったりするやつです。
1そうだね
プレイ済み
返信[16]
親投稿
Seiryu XYZEX7
ツララさん、とても分かりやすく説明をありがとうございます! 要するに、DEFで使われず、システム変数や配列変数でもないものは、全てクローバル変数だということでしょうか?
0そうだね
プレイ済み
返信[17]
親投稿
Seiryu XYZEX7
分かりやすく→分かりやすい
0そうだね
プレイ済み
返信[18]
親投稿
ツララ LongIceSword
見当違いのところで空振りしてても何か間抜けなAIなので(ガチャプレイは自分も下手くそなのでよくやりますけど) 避けられるのが前提の隙の大きい攻撃とセットで隙の少ない攻撃を混ぜ込んでおけば自然に見えるかも。 飛び道具を打ったらそれを追っかけて距離を詰めて来るとか しろさんの話みたく、ジャンプを誘って対空攻撃で撃ち落とすとか。 考えてるっぽく見せるために、敢えて「何もしない」っていう行動させるとか。
2そうだね
プレイ済み
返信[19]
親投稿
Seiryu XYZEX7
ということは、ツララさんのいっていた意見は DATA 0,1 ↓ A=0 B=1 ということ??(^^;;
0そうだね
プレイ済み
返信[20]
親投稿
Seiryu XYZEX7
あらかじめ「ジャンプしたら空中攻撃!」などと決めておき、それにそって行動するということですか? 確かにそれならかしこっぽくみえそうですね! (問題は技術力だが...)
1そうだね
プレイ済み
返信[21]
親投稿
ツララ LongIceSword
Seiryuさんがどういう風にDATA文を使うのかは分からないですけど 予め設定してあるモーションは格闘ゲームのコマンドみたく順番に実行して行くんですよね? READ A,B みたくREAD命令で読み取ったデータを入れている変数AとBがあるとして ループ中で常時操作キャラクターと敵キャラクターとの距離を計算して更新してる変数がCだとすると Aの数値を元にしたアクションをした後に、Cの値を判断材料にしてBの数値を元にしたアクションを実行するかどうか分岐させる とかやれば、同じデータを使うにしてもファジー(曖昧)な感じが出ると思ったんですけど。
1そうだね
プレイ済み
返信[22]
親投稿
Seiryu XYZEX7
なんと言うか説明しずらいですけど、頭、手、足などと細かいパーツごとにわけ、頭なら首、腕なら肩に座標や角度から位置を求めて繋がっているかのように設置し、それの角度をSPANIMで動かす... といった感じです。 説明下手ですいません...
0そうだね
プレイ済み
返信[23]
親投稿
Seiryu XYZEX7
なのでデータにしているのは今のところ、 それぞれの部位の角度 動く速さ 攻撃を判定する部位と時間 音とそれがなるまでの時間 ボタンを受け付けない時間 って感じです。
0そうだね
プレイ済み
返信[24]
親投稿
ツララ LongIceSword
技術面の問題ならコンテストとかをやってみて、興味の有る人みんなで考えてみるっていうのも悪く無いと思いますよ。 自分の考えた方法は他の人に使わせたく無いなんてケチ臭いこと思っても、公開キーを出して公開した時点でそんなの無効ですし。 それにホストとしてお題を設定する過程で内容もかなり洗練されるでしょうし。 でも主催って大変ですから、慣れてないと心は折れるものだという前提で、結果がどうあれ落ち込んだりしないよう注意ですよ。 落ち込んだら全力でサルベージしますけど。
1そうだね
プレイ済み
返信[25]
親投稿
Seiryu XYZEX7
伝えづらいので画像を
0そうだね
プレイ済み
返信[26]
親投稿
Seiryu XYZEX7
まさかそこまで人の為に頑張る人がいるとは... 感動です... もしも自分が挫折したら、その優しさを他の人に向けてあげてください...
0そうだね
プレイ済み
返信[27]
親投稿
say sayer.exe
かなり単純に考えてみれば解があるかも? 「一次元のゲーム」と考えてみたらロジックの方向性が定まるかも? おいら単純なゲームしか作れないから、単純なロジックしか思いつかねーや>< ということでコメノコ
1そうだね
プレイ済み
返信[28]
親投稿
ここでツララさんの言っているデータの内容はAIの行動パターンで、グローバル変数はそのパターンの分岐を繰るためのものだから。Seiryuさんが挙げたデータの内容とグローバル変数は無関係なのでは。 敵との距離によってモーションが変わるとかなら無関係では無いけど……今はこれは止しとこう。
3そうだね
プレイ済み
返信[29]
親投稿
のな sub.taka.impact
自分が近々やるのでこめのこ。 参考にしたい。
0そうだね
プレイ済み
返信[30]
親投稿
ツララ LongIceSword
ウボァ!まさかモーションって多関節スプライトでキャラクターを表現してですか・・・ 壮絶に勘違いしてましたです。 AI部分はキャラクターの細かいモーションとは全く別と割り切って 先ずSPHITSP系命令の当たり判定と食らい判定を見える様にしたSPと、キャラクター本体のSPをSPLINKでセットにしたものを単色の豆腐みたいなので作って 各属性のスプライトの位置関係と表示の有無(マスク)をフレーム経過に沿ってSPANIM化したものを『技』として番号を振って管理して その技番号の繋がりを『型』としてデータ化してみたらいいんじゃないかと思うんですけど。 『型』のイメージが掴めないとかなら、ジャンケンで「グー→パー→パー」みたく複数手を一纏めにして出し切るのを思い浮かべてみてもらえればいいかと。
1そうだね
プレイ済み
返信[31]
親投稿
ツララ LongIceSword
サルベージの件で蛇足書きますけどご容赦を 提案したからには乗りかかった船は一蓮托生なので、予想される結果には責任持ってフォローしますよってだけですから、そんな重い話じゃあないですよ? 自分から落ち込みたがってる人だと引っ張り上げようとした人が逆に引きずり込まれるので、そういうのは流石にサルベージ無理ですからしないですけど。 あと執着心が強すぎて根掛かりしてるのもちょっと無理かも・・・ でも自身が挫折した時に助け舟を断るってことは、自力で立ち直る自信ありってことですよね。 『ちょっと安心そして期待 重過ぎにならないよう気を付けながらを添えて』(料理風)
2そうだね
プレイ済み
返信[32]
親投稿
だにえる haru2016nen
こめのこ
1そうだね
プレイ済み
返信[33]
親投稿
Seiryu XYZEX7
プログラムがぐちゃぐちゃになってきたので、一部プログラムを書き直すことに。 それと、今日発売のゲームにはまりそうなので、作るスピードはかなり遅くなると思います...
1そうだね
プレイ済み
返信[34]
親投稿
Seiryu XYZEX7
AIを作ると言うことの難しさに、心が折れそうです... なので1対1で戦うのではなく、スマブラでいうフィールドスマッシュみたいに、1対ザコ複数orボスって感じにしたいと思います。 皆さんが期待している形とはほど遠いものになってしまいますが、許してください(>_<)
1そうだね
プレイ済み
返信[35]
親投稿
Seiryu XYZEX7
ということで、1対1は技術力が上がるまで延期です
0そうだね
プレイ済み
返信[36]
親投稿
かおなし SYO-YU-KOTO
ランダムで規定攻撃を行うボスはわかるのですが、雑魚キャラ複数は結局AI問題に戻るんじゃないですか…?
0そうだね
プレイ済み
返信[37]
親投稿
Seiryu XYZEX7
さきほどのザコキャラというのは、攻撃を一、二種類しかしなかったり、動きに規則があったりと、簡単な行動しかしないやつのことです。 まぎらわしくてすいません。 これならあまり高度な技術を必要としないと思うので。
0そうだね
プレイ済み
返信[38]
親投稿
Seiryu XYZEX7
といいつつも、簡単なAIはつくっておきました。
0そうだね
プレイ済み
返信[39]
親投稿
Seiryu XYZEX7
やっぱさっきの取り消し 調子出てきたからもうちょっと頑張る
0そうだね
プレイ済み
返信[40]
親投稿
Seiryu XYZEX7
失踪したようにみえて、実は意外にいい動きをしてくれるようになりました!ということでトピックを閉じます。 皆さんのご協力にマジ感謝です!
0そうだね
プレイ済み