トピック
おちゃめ ochame_nako

RPGのダメージ計算方法について

「攻撃力」「防御力」「素早さ」というのは普通のRPGならどれでも用意されているパラメータですが、ドラクエではダメージ量=(攻撃力÷2)-(相手の防御力÷4)で計算されています。 もちろん、これに乱数が加わりますが、攻撃力÷2≦相手の防御力の時は相手にダメージを与えることができません。その際はランダムで時々1のダメージを与えるようになっています。 また会心の一撃(クリティカルヒット)では相手の防御力を無視してダメージを与えています。(攻撃力を1.5倍、相手防御力を0で計算) ドラクエ方式に近いダメージ計算を簡単に実現するDAMAGE関数を以前作ったので初心者の方は参考にしてみてください。 https://miiverse.nintendo.net/posts/AYIHAAAEAAAFVHwqYIXAtQ
12そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
ドラクエ方式は無難なのですが、ありふれているというのと素早さのパラメータがあまり有効活用されていない(ドラクエIVまでは素早さの1/2が防御力に加算されていたけどV以降は「身の守り」のパラメータが導入されたため「素早さ」は行動の順番に影響を与えている程度)なので個人的にはこの「素早さ」のパラメータをもっと有効活用したダメージ計算方法を考えてみたいと思います。 ※最近のドラクエでは素早さがある程度高くなると回避率や命中率に補正が加わっている模様
1そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
最も簡単なのがターン制を無くしFFのようなATBにするという方法でしょう。これならば素早さによってゲージの貯まり方を変えていけば「素早いけど攻撃力がないキャラ」と「遅いけど攻撃力のあるキャラ」の差別化ができます。 ゲージの表示をしなくても内部で同様の計算を行い攻撃が回ってきたキャラから順番にコマンド入力するという方法もあります。 2倍早ければ攻撃のターンが回ってくる回数が2倍あるという感じです。 これによってパーティに加えるキャラやパラメータ(能力値)を選択可能なRPGの場合は素早さ優先か攻撃力優先かで考える余地が出てくるというわけです。
0そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
RPGではなくもしも実際の敵に遭遇したと仮定した場合には素早い敵というとなかなか攻撃が当たらず、遅い敵だと攻撃がどんどん当たるイメージがあるのではないかと思います。 つまり、素早さが高ければ「身をかわす」確率がアップするわけです。 遅い敵に対してはクリティカルが出やすくなると素早さがさらにアップしますね。 これは、自分の素早さをS、相手の素早さをSE、攻撃がヒットした時の処理(攻撃力と防御力を元にしたダメージ計算)が@HITに記述してあればIF RND(S)>RND(SE)THEN @HIT みたいな感じで簡単に行うことが可能です。
0そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
次に素早さがダメージ量そのものに影響を与える方法を考えてみます。 普通のRPGでは攻撃が「当たる」「当たらない」という1か0かどいう状態になることが多いのですがそうではなく「攻撃がかすった」みたいなのを表現するのに素早さを使うことができます。 やり方はいろいろありますが、A=(S-RND(SE))/S:DM=(AP-DP/2)*A*(A>0) のようにして求める方法があります。(APは自分の攻撃力、DPは相手の防御力、DMはダメージ量、Aは一時保存用変数) 基本はドラクエ式に近いですが、相手の方が素早い場合(例えば自分の素早さが10、相手の素早さが20とすると)攻撃がヒットする確率は1/2で与えるダメージはMAX値の0~100%となります。
0そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
逆に自分の方が素早い場合(例えば自分の素早さが20、相手の素早さが10とすると)攻撃がヒットする確率は100%で与えるダメージはMAX値の50~100%となります。 Sの部分をRND(S)にすると乱数の要素が強くなりすぎてしまいますか、いくら相手より素早くても100%ヒットするということは無くなります。 乱数の要素が強すぎると感じる場合は私のADAMを使ってやれば乱数の分布を調整できるためヒットする確率やダメージの分布も自由に調整できます。 https://miiverse.nintendo.net/posts/AYMHAAADAAB2V0fQKcdeZg もちろん、ADAMを使用しなくても自分で上手く複数のRNDや計算式を組み合わせて自分好みの分布になるようにしても良いです。
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
RPGの戦闘はダメージ計算式と乱数によってプレイした際のイメージはかなり変わります。 必要なパラメータをどんどん作っていっても良いのですが、有効活用されないと絵に描いた餅でしかありません。逆に限られたパラメータでも工夫次第で様々な方法があるというのが今回書いたものです。 あくまで今回書いたプログラムや計算式は一例に過ぎないので自分のRPGに合ったものを考えると良いしその方が楽しいと私は思います。 というわけで、「素早さのパラメータを活かしたこんな計算方法があるよ」とか、「こんなパラメータがあればもっとダメージ計算が上手くできるよ」とかいうのがあればどんどん書いていってください。
1そうだね
プレイ済み