ページ 11

RPGの戦闘システムについての質問

Posted: 2012年11月15日(木) 02:30
by 海Sea
いつも、ありがとうございます。
現在RPGのシステムを組んでいる途中です。
戦闘のシステムで詰まっていて、遅々として進まないので質問させて頂きます。
過去ログみたんですけどピンと来ませんでしたので(すいません・・・)

システムとしては、パーティー、モンスター、装備、
アイテム、魔法が現状実装済みです。
いわゆるステータス画面などで装備をしたり
アイテムや魔法を使用したり習得したり、
という部分まではできました。
モンスターも行動パターンや種類のデータを読み込むところまでできていて、
遭遇することはできます。

戦闘は、いわゆるドラクエ風の戦闘を考えているのですが、
素早さの順に敵味方を行動させる方法が思いつきません。
各敵味方の素早さを保持した後に、その保持した素早さをどう扱えば
その素早さを持つキャラが順々に行動するのかというところで
何かご参考になることはありませんでしょうか?

実際のデータの扱いでは、味方と敵はインスタンス変数として
HPや素早さなどのステータスを持っていて、
getメソッドでその値を参照できるようにしています。

Re: RPGの戦闘システムについての質問

Posted: 2012年11月15日(木) 12:09
by softya(ソフト屋)
そうですね。
完全にドラクエ的だとすると
1.コマンド入力が済んで戦闘開始時に戦闘順番待ちリストを作成します。
2.このリストは素早さの順でソートします。※ 乱数で素早さの数値を数%揺らがせるのも良いと思います。
3.出来上がったリストの順番で戦闘を行います。
で良いんじゃないでしょうか?

ATBだとまた別の工夫が必要ですけどね。

Re: RPGの戦闘システムについての質問

Posted: 2012年11月15日(木) 12:41
by とっち
僕の方法としては、

1.キャラクタにactFlagという変数を持たせる。
2.actFlagは戦闘開始時に初期化される。
3.すべてのキャラクタを検索し、その中で、素早さが一番早く、かつ
actFlagが0(つまりまだ行動が終了していないもの)を返す関数を作る。
4.行動が終了するとそのキャラクタのactFlagを1にする。

まぁこんな方法もあるよというのだけお知らせしておきます。

Re: RPGの戦闘システムについての質問

Posted: 2012年11月16日(金) 03:03
by 海Sea
softya(ソフト屋) さんが書きました:そうですね。
完全にドラクエ的だとすると
1.コマンド入力が済んで戦闘開始時に戦闘順番待ちリストを作成します。
2.このリストは素早さの順でソートします。※ 乱数で素早さの数値を数%揺らがせるのも良いと思います。
3.出来上がったリストの順番で戦闘を行います。
とっち さんが書きました: 1.キャラクタにactFlagという変数を持たせる。
2.actFlagは戦闘開始時に初期化される。。
4.行動が終了するとそのキャラクタのactFlagを1にする。
お二方ありがとうございます!
softyaさんととっちさんの提案を足して二で割って
まずリストをつくってソートし、フラグを持たせたキャラの中で
行動したかしてないかを判定し、速さ順に行動することができました!