RPGの戦闘アルゴリズムについて

このQ&Aのポイント
  • RPGの戦闘アルゴリズムについての質問です。ドラゴンクエストモンスターズの戦闘システムを再現したいが、補助特技の処理が複雑になる可能性がある。有限ステートマシンを利用したアルゴリズムが良いのか悩んでいる。キャラの状態異常や飛行中などの処理方法も知りたい。
  • RPGの戦闘アルゴリズムの実装についての質問です。ドラゴンクエストモンスターズのような戦闘システムを作りたいが、補助特技の処理が難しい。キャラの状態異常や飛行中などの状態によって攻撃できないとか、特定の効果を持つ特技を実装する方法が知りたい。
  • ドラゴンクエストモンスターズなどの戦闘システムを再現するためのRPGの戦闘アルゴリズムについて質問です。補助特技の処理やキャラの状態異常など、実際のゲームと同様の動きを実装するためにはどのようなアルゴリズムが必要なのか知りたい。有限ステートマシンの利用も検討しているが、具体的な実装例や参考書籍があれば教えてほしい。
回答を見る
  • ベストアンサー

RPGの戦闘アルゴリズムについて

このジャンルでお願いします。 例えば、ドラゴンクエストモンスターズ http://way78.com/gb/dqm2/mgc.html のような戦闘システムを再現したいと考えているのですが、 単純な攻撃特技なら耐性と照らし合わせてダメージを算出するだけだと思います。 ただ補助特技や補助特技の ・たかくとびあがる(次のターンに攻撃) ・うけながし(自分が受けた攻撃を敵か味方に受け流す) ・ふういんのいのり(自分の受けた特技を敵味方一切使えなくする) ・まねまね(敵から受けた攻撃をそのまま跳ね返す) ・きあいをためる(ターンの最後に通常の1.5倍の打撃を与える) ・せいしんとういつ(次のターンの攻撃が2回連続になる) ここらへんの処理を実装するとなるとかなり複雑になりそうです・・・(他にもややこしそうなのがありますが) 自分では考えられそうもないので、 ネットなどで戦闘システムを検索したり関連の書籍を探したりしたのですが、 簡単な戦闘システム(1対1で単純な攻撃だけとか)の説明しか今のところ見つかりませんでした・・・ 少し考えてみたのですが、キャラの状態が ・飛んでるとき ・気合を溜めてるとき ・何らかの状態異常のとき(混乱や麻痺) は攻撃ができなくて、混乱してる時は麻痺をかけられても効かないとすると、 有限ステートマシンなどのアルゴリズムを利用した方がいいのかな?と 思ったりして、でもそもそも上の3つの場合を一まとめにできるものなのか とにかくわけがわからず想像ができないです・・・ みなさんならどのようにクラス分けして処理していくか知りたいです。 またはこのような戦闘のアルゴリズムが書かれてる書籍などありましたら 紹介して頂けないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8518/19364)
回答No.3

鉄則は「深く考えるな」です。 「状態」と言うステータスがあるなら、そのステータスを「すべて書き出し」して下さい。1つも漏らさず、考える限りのすべてを書き出します。 そして「そのステータスの時に、どの行動が出来るか?」を、ステータスごとに全て書き出して下さい。 そして「出来る行動を選んだ時、どういうステータスになるか」も、行動ごとに全て書き出して下さい。 深く考えずに、とにかく、思い付く限り、全部書き出して下さい。 例えば、 ○ステータス ・通常 ・死亡している ・飛んでいる ・麻痺している ・混乱している ・気合を貯めている ・気合を貯め終わっている(前のターンで気合を貯めた) ・祈っている ・祈り終わっている(前のターンで祈った) ・特技使用不可 ・精神統一している ・精神統一し終っている(前のターンで精神統一した) ・精神統一後の1回目の攻撃をした ・まねまねしている ○行動 ・通常時  飛ぶ(攻撃キャラで飛べるキャラのみ)  気合を貯める(気合が使えるキャラのみ)  祈る(祈れるキャラのみ)  敵を攻撃する(攻撃キャラのみ)  防御する  回復薬で回復する(薬を持っている時のみ) ・死亡時  死亡し続ける ・飛んでいる時  攻撃する(攻撃キャラのみ)  攻撃し終わったら通常状態になる ・麻痺時  麻痺から自動回復(乱数?一定ターン過ぎたら?)   麻痺し続ける ・混乱時  敵に回復をかける(乱数?回復魔法の使えるキャラのみ)  味方を攻撃する(乱数?攻撃キャラのみ)  味方に状態異常の魔法をかける(乱数?魔法の使えるキャラのみ)  何もしない ・気合を貯めている  何もしない。気合を貯め終わっている状態になる ・気合を貯め終わっている  気合入り特殊攻撃をして、通常状態になる。 ・祈っている  何もしない。祈り終っている状態になる ・祈り終っている  特技を敵味方一切使えなくして、特技使用不可になる ・特技使用不可  特技以外の行動をして、一定のターン後、通常状態になる ・精神統一している  何もしない。精神統一し終っている状態になる ・精神統一し終っている  攻撃し、精神統一後の1回目の攻撃をした状態になる ・精神統一後の1回目の攻撃をした  ターン後にもう一度攻撃し(連続攻撃)、通常状態に戻る ・まねまねしている  敵と同じ事をして、通常状態に戻る のように。 もれなく全部書き出したら、「状態」と「行動」と「行動の結果、なる状態」に、抜けが無いか確認しましょう。 例えば「体力が低下している状態」があって、その状態で選べる行動に「回復薬を飲む」と言う行動があるのに「回復薬を飲んだ結果」が書いて無かったりすると困ります。そういう「抜け」が無いかチェックしましょう。 チェックして抜けが無いと判ったら、あとは「書き出した通りにプログラムするだけ」です。

その他の回答 (3)

  • kacchann
  • ベストアンサー率58% (347/594)
回答No.4

「戦闘アルゴリズム」、または「ゲーム」に限った話ではなく、 一般的な話として。 --- 普通にひたすらswitch文や「if-else文の羅列」を書くことと まったく同じことなのですが、 「ソースコードの整理術」的な意味あいからすれば、 ・書籍「実例で学ぶゲームAIプログラミング」第2章 ・デザインパターン「Stateパターン」 などを参考にするといいかも。 ・「状態ごとに」わけて考えて、プログラミングする  (つまり、各状態ごとにインスタンスを割り当てる) ・「状態の変化」は、「インタンスの切り替え」に相当する の2点がポイント

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.2

>少し考えてみたのですが、キャラの状態が >・飛んでるとき >・気合を溜めてるとき >・何らかの状態異常のとき(混乱や麻痺) >は攻撃ができなくて、混乱してる時は麻痺をかけられても効かないとすると、 とりあえず適当に… #define 飛んでる 0x80 #define 気合い貯め 0x40 #define 混乱 0x08 #define 麻痺 0x04 #define 状態異常 (混乱|麻痺) とか設定して、 char 状態; って変数にそれぞれ論理和などで入れればよいかと。 if(状態 == 0){  通常攻撃 } else if((状態 & 気合い貯め) != 0) {  行動優先順位を変更  次回の攻撃力に1.5倍の+補正 } else if((状態 & 飛んでる) != 0) {  行動不能  次回の攻撃力に+補正 } とか。

  • tomtom963
  • ベストアンサー率19% (19/96)
回答No.1

単にフラグを立ててそれを条件分岐していけばいいだけでしょ? なにがそんなに難しい?

関連するQ&A

  • FF12の戦闘システムが分かりません

    今日からFF12をはじめたのですが、戦闘システムが分からず困っています。たたかうコマンドを選んで、青いラインが敵に照射され、主人公が勝手に攻撃するみたいな説明があって、たたかうを選び、青いラインが敵に照射され、敵に近づいていきますが、ヴァンがなかなか攻撃してくれません。長くなりましたが、端的に言うと、戦闘システムを初心者の自分に教えていただきたいということです。宜しくお願いいたします。

  • ドラクエ 戦闘時のことについて

    ドラクエを最近やり始めたのですが、戦闘時についていくつか質問よろしいでしょうか。 1.ぜんれつ、こうれつの並び方について、後列は狙われにくいメリットがありますがデメリットはあるのでしょうか? また前列のメリットもあったら教えてください。 2.敵の魔法により守備力や攻撃力を下げられますが、何ターンすればもとにもどるのでしょうか? もしくは下げられた守備力等は敵をたおしても元に戻らないのでしょうか? 3.敵の攻撃、自分の攻撃の順番が不規則なのですが、これはうまくコントロールして自分のパーティがまず全員連続で攻撃できたりしないのでしょうか?これは運ですか? 4.戦闘時のボタンの連打って意味ありますか? たくさん質問してすみません。 ひとつでも分かる方がいらっしゃいましたらよろしくお願いします。

  • ドラクエ4の戦闘のAIが知りたい

    どのジャンルで質問するのがベストなのか迷いましたが C言語をやっている方なら詳しいんじゃないかと思いました。宜しくお願いします。 条件として ・敵が4人、プレーヤー4人(例えばわかりやすく、戦士、戦士、戦士、賢者とします) ・AIとして、ドラクエ4では「ガンガンいこう」や「呪文を使うな」などありますが、 今回は「みんながんばれ」で(要は、回復呪文、攻撃呪文、攻撃を均等に行う) ・賢者の呪文は「ヒャド(攻撃系)、ホイミ(回復系)、スカラ(守備系)、ルカニ(攻撃補助系)」が使えるとします 実際にプログラムを組んでいて分からないところは、呪文を使う時で、 その時、その時で何の呪文を使えば良いのか決める基準が分からないのです。 例えば、味方1人(戦士)のHPが70の時(MAXは100)、 1、その時点で回復した方がベストなのか? 2、敵にダメージを与えた方がベストなのか? 3、スカラを唱えて味方の守備を上げてこれから続く戦いに備えた方がベストなのか? など、何がベスト(ベストじゃなくても限りなくそうなるように)なのかが分かりません・・・ 例えば3だったら敵全員のHPや見方の攻撃力などを調べて、普通に攻撃してたら あと何ターンで倒せるのかを計算しなくてはなりません(たぶん) いやそれ以上に調べる個所があるかも・・・ そういうの(攻撃系、回復系、守備系、攻撃補助系)を全部ひっくるめて評価関数 みたいなのにかけれないでしょうか?攻撃した場合の評価(ヒャドなどの攻撃、ルカニなどの間接攻撃) と守備に徹した時の評価(ホイミなどの回復、スカラなどの防御力UP)を分けるんじゃなくて、 全部一緒に評価して、その返ってきた1番大きい値のものを実行するみたいな。。 自分で言っててなんですが、その評価関数自体の内容もあまりイメージできていませんけど・・・

  • ドラクエモンスターズの特技「まねまね」について

    http://way78.com/gb/dqm2/mgc.html ここの説明によると、 「敵から受けた攻撃をそのまま跳ね返す。」 とあるのですが、これは例えばルカナン(相手全体の守備力を下げる) を食らった時は、どのように跳ね返すのでしょうか? 使った相手にルカニ(ルカナンだと相手全員が対象になっちゃうので)を唱えるのか? それとも打撃系呪文以外は跳ね返さないのでしょうか? それと、 「すてみ」(敵に2倍のダメージ。ただし、自分の受けるダメージも2倍になる。) 「れんぞくこうげき」(敵1体に2回攻撃。ただし1回分の攻撃力は落ちる。) を食らった場合もどのように跳ね返すのか教えてもらいたいです。

  • 【探してます】昔遊んだ戦略シミュレーション

    7~9年前?にベクターのフリーゲームでダウンロードしたと思われる戦略シミュレーションゲームを探しています。 色々自力で手当たり次第に探しましたが見つからず。 ベクターのフリーゲームにはもう載ってないんじゃないかな?と思います。 どういうゲームか思い出せる範囲で話します。 育成はありません。お金の管理だとか細かいシステムもありません。 キャラクターなどはいなく、戦車や戦闘機といったのを動かします。 戦闘機は戦車に強いなどの相性もあったと思います。 ステージごとに敵と味方の初期配置は決まっていて、全てのユニットを動かしたらターン終了です。 ユニットを動かし敵の近くに移動させたら戦いがはじまります。 自分のターンは一方的に攻撃でき、相手のターンは一方的に攻撃されます。 ユニットにはHPとかがなく(曖昧です)かわりに残機があり、戦闘がはじまったらその残機分の機体が表示されて戦います。 戦うといってもただ勝手に弾を撃って、敵の残機が減っていくのを見るだけです。 記憶が曖昧で申し訳ないのですが、これかなと思ったゲームを張ってください。お願いします。 とても面白かったゲームです。

  • FF1,2のシステムの変更点(PS,WS,GBA)

    一通り検索してみたのですが、よく分からなかったので質問させてください。 「FF1,2のリメイクがPS版、WS版、GBA版とありますが、オリジナルからの、また、お互いのシステム上の変更点は何かありますか?」 追加要素やアイテムの変更やグラフィック、音楽などの違いはあるようですが、戦闘や通常のシステムに変更があるのでしょうか? 以下、蛇足です。 特にFF1の変更点の有無が気になっています。魔法やアイテムの数の制限がきつすぎます。また、戦闘中はこちらの攻撃は半数近くミスになるシビアな命中率、ほとんどの場合、敵か味方かのどちらかの先制攻撃で始まり、それでいてミスばかりで1ターンを無駄にするわ、敵の攻撃はやたらヒットするわ、オリジナルとWSはクリアできませんでした。

  • 魔法が円形に発するRPGを探しています。

    FCです。 90~93年発売と思います。 このゲームの特徴は、  フィールド上では、2.5頭身位です。  戦闘画面が、フィールド画面そのまま。  魔法(呪文?)は円形に効果を発する。  その円形を敵のいる場所に指定するのだが、味方を攻撃してしまうこともある。   このゲームのタイトル、また似たようなゲームがあればご紹介いただきたいと思います。  よろしくお願いいたします。

  • アルティメットアクションバトルとは…

    グランディア3というゲームのところに、アルティメットアクションバトルと書いてあったのですが、それはどういうものなんでしょうか??戦闘方法はこっちの攻撃のターン→敵の攻撃のターンというような感じなのでしょうか…??

  • バトルの面白いRPGを探しています。

    PS2の面白いゲームが欲しいです。今まで結構やってきましたが、私の嫌いなゲームは ・バトルがターン制(ドラクエや、キャラにバーがついていて一定時間経たないと攻撃できなかったり、コマンドを入力したりするもの) ・普通の状態(冒険シーン)と戦闘シーンが分かれているもの(敵に遭遇したら画面が切り替わる) ・与えられたミッションをクリアしないと進めない の三つに分類されると思います。 以上の要素を含まない面白いゲームはありますか? 過去にやってみて面白かったのはロックマンDASHやキングダムハーツです。

  • 名前のわからないゲーム、アクションRPG

    15年くらい前に発売されたゲームなのですが、名前がわかりません。 あまりやらなかったのと、記憶が相当曖昧になっているので間違っている点があるかもしれませんが、下の情報で何か思い当たるソフトがありましたら挙げて頂きたいです。 ■機種は確かスーパーファミコン ■フィールド上では味方はパーティーを組み、パーティーごとにひとつの駒となっている。移動も駒を動かすようにして移動する。 敵(敵兵やモンスター?)もパーティーを組んでいてフィールド上に駒として存在し、味方の駒と接触すると戦闘に入る。 フィールド上には町なども存在し、そこまで駒を移動すると町に入れる。 ■戦闘はアクション。見下ろし型で、キャラはファミコンのドラクエのキャラと同じくらいの大きさ。団体戦。プレイヤーは1人のキャラを動かし、ボタンを押して他のキャラに切り替えることができる。上下左右に移動でき、攻撃ボタン連打が基本になる。 ■戦闘になるケースはフィールドでの接触だけでなく、町中などでのイベントでも発生する。 ■戦闘後に、敵のパーティーを味方にしてしまうことも条件によっては可能。 ■剣士のほかにアーチャーや魔法を使えるシャーマン(賢者?)などがいる。ただしシャーマンは単独パーティーしかできなかった気がする。 ■味方は成長することができる。最大HPは99だが、特殊な剣か何かを装備させると100まで上げることが可能。 記憶が別のゲームとごっちゃになってしまっているかもしれないので、条件に当てはまらないものがあっても、思いついたソフトを挙げて頂けるとうれしいです。 宜しくお願い致します。

専門家に質問してみよう