見出し画像

頭が痛くならない「ダメージ計算式」の基本の話

戦闘のあるゲームを作るなら、考えないといけないのがダメージの計算式。でも、計算式のコツとか基本とか調べると、小難しそうな話が出てきて

め、めんどくせぇ~

ってなったりしませんか?私はなります。色んな計算式とその特徴を羅列されても、よくわかんなくなっちゃう。

とはいえ私もゲームデザイナーの端くれなので、ダメージ計算式を考える機会がそれなりにあります。そして他人の作った変な計算式に苦しめられることも、いっぱいあります。泣きたい。

大元の計算式が悪いと、それを利用してバランス調整しても苦労する事が多いんですよ。なので、そんな悲劇を少しでも食い止めるためにもですね。

この記事では

数字が苦手な文系の人でも、なんかいい感じに計算式を考る…とっかかりになる

ことを目指して書いていこうかと思います。

※こういう計算式がある!選んで使え!!という記事ではありません。
※計算式を考える時、こういうのを把握して、こういう考え方をするといいぞって記事です。


◆そもそも何のために計算式って考えるの?

まず、ここを見失うといけないので。ざっくり計算式の目的を言うと

・自分の作りたいゲームデザインを実現するため
・各要素(攻撃力とか防御力とか)を殺さずに活かすため
・自分がバランス調整しやすいものにするため

です。まぁ、そんなに深く考えずに頭の片隅にでも置いてください。深く考えて頭を痛めなくていいです。

重要なのは、

この目的さえ達成していれば、どんな計算式でも良い

ってこと。つまり

必ずしも、複雑で凄そうな事をしている計算式 = BEST ではない

とも言えます。

ここまで話すと「じゃあBESTな計算式を目指すのに何を考えればええねん」って話になりますが、次から、ちょっと具体的な話をしていきましょう。


◆簡単な計算式から学ぶ、ダメージ計算式の基本

いきなりゴチャゴチャと説明していっても分かりにくいので、簡単な計算式から順を追って説明してきます。


◆最も簡単な計算式
まず、最も簡単な計算式から考えていきましょう。どんな計算式になると思いますか?

答えはですね。コレです。

ダメージ = 攻撃力

「は?これ計算式じゃなくね?」って思った方もいるかもしれません。石を投げないでください。

例えばTCGなんかだと、防御力が存在せず攻撃力の分だけダメージを与えたりします。↓の画像だと青い剣のマークが攻撃力で、殴る時はその数字分だけでダメージが行く。(あと、スキルの固定ダメージも同じような物です)

シャドウバース

めちゃくちゃシンプルな形なので、超分かりやすいです。この「分かりやすい」というのが時に非常に重要で、バカにできません。

敵のHPは6で、こっちの攻撃力は7。じゃあ1回殴れば倒せるな

みたいな形でプレイヤーが行動の結果を予想できると、ゲーム中の行動を計画しやすくなります。

なので「戦術」や「読み合い」が重要になってくるゲームだと、色んなパラメーターをもった複雑な計算式よりも、結果が予想しやすいシンプルな計算式の方が向いてたりしますね。

プレイヤーに戦術や読み合いに集中させたいなら、ダメージ計算なんて余計な事に頭を使わせない方が良いのです。

逆に、RPGみたいに

色んな要素(キャラ自身の能力や武器、クラス、スキルなど)で差別化したり成長(インフレ)を楽しんだりするゲーム

には向いていません。計算式がシンプルすぎて、色んな要素が関わる余地がないので。そういったゲームはもう少し複雑化した方が良いでしょう。

ということで、もう一段階複雑化してみます。


◆アルテリオス計算式

なんかカッチョイイ名前のやつが出てきましたね。有名なやつです。私は良く「アステリオス」とか「アリテリオス」とか微妙に間違えたりします。ややこしい名前しやがって……

さて、肝心の計算式ですが、

ダメージ = 攻撃力 - 防御力

というもの。これもまた、かなりシンプルで戦術性の高いゲームに向いています。「一番簡単な計算式は?」でコレを思い浮かべた人もいるんじゃないでしょうか。

ただ、これが有名なのは 問題点もいっぱいある って所ですね。自分の攻撃力より相手の防御力の方が大きい時点でまともにダメージが通らなくなるので、シンプルな割にかなりゲームバランスの調整がシビアになります。

味方にダメージが通らないなら敵の攻撃が無意味になるわけで、負けることがありません。逆に敵にダメージが通らないなら倒しようがない。こうなると、そもそも「戦闘」自体が崩壊します

また、防御力の変動でかなりゲームバランスが変わる例としては……例えば以下の例。

攻撃力:60 相手の防御力:50 ⇒ ダメージ10
攻撃力:60 相手の防御力:55 ⇒ ダメージ5(50%減)

相手の防御力が5(10%)上がった結果、与えられるダメージが5下がりました。たかが5ですが、されど5。前のダメージが10だったので、割合で考えるとダメージが半分になっています。

敵のHPが50なら5回殴って倒せるのが、倍の10回殴る必要が出てくるわけです。防御力が10%上がっただけで。

こんな感じで数字のちょっとした差で大きく変わるので、運用するなら

・そもそも扱う数字が低い(0~10くらい)デフレ系のゲーム
・頻繁に数字が成長しない(成長しても↑ の範囲)
・防御力の要素が限定的

といった形のゲームだとやりやすいです。

例えば 戦術性で名高い 『Into the Breach』が該当しますね。

IntoTheBreach_予測

●基本的に敵味方のHP・攻撃力が1~6くらいのデフレゲー。
●防御力自体は「アーマー」という特殊能力扱いで、珍しい存在。
●一撃が重い反面「攻撃をそもそもくらわない」ために戦術を練るのがゲームデザインの根底にある。
●「敗北条件」に「建物が破壊されて電力インフラが0になったら負け」があるので、特定のユニットにダメージが通らなくてもゲームが成り立つ。

というゲームなので、アルテリオス計算式のピーキーさが問題にならないのです。

さて、デフレゲーなら問題ないとはいえ、そうしたくはないゲームもいっぱいあります。RPGもアクションも、2桁と言わず100とか1000とか9999とかそういう数字を扱いたいゲームの方が多いわけです。

じゃあどうすれば良いんだろう?って考えた時の計算式が次です。


◆ドラクエ型計算式

別にドラクエにこだわるって話じゃないんですが、よく言われるので。こんな計算式です。

ダメージ = (攻撃力 ÷ 2) - (防御力 ÷ 4)

はい。攻撃力と防御力に何か割り算が付きましたね。百聞は一見に如かず、アステリ…アルテリオス計算式の時に使った、防御力を10%上げた例と照らし合わせてみましょう。

※小数点は切り捨てて対応してます

◆アルテリオス計算式
①攻撃60 - 防御50 = 10 ダメージ
②攻撃60 - 防御55 = 5ダメージ
 ↓
ダメージ50%減
◆ドラクエ型計算式
①( 攻撃60 ÷ 2 ) - (防御50 ÷ 4) = (攻撃30)-(防御12) = 18ダメージ
②( 攻撃60 ÷ 2 ) - (防御55 ÷ 4) = (攻撃30)-(防御13) = 17ダメージ
 ↓
ダメージ5%減

はい。同じ攻撃力と防御力、同じ変化量でも、全然結果が違います。この

ダメージ = (攻撃力 ÷ 2) - (防御力 ÷ 4)

についてちょっと解説すると、

①攻撃力や防御力に補正(今回は割り算)をつける
⇒これによって数字の影響度を変える
⇒割り算なら数字の影響度が「下がる」ので、同じ「防御力が5上昇」でもダメージが減りすぎない
⇒逆に倍率をつける(×2)とかなら、低い数字でも影響が大きくなる
②攻撃力よりも防御力の影響度を下げる
⇒防御力が上がっただけでガンガン減られると困る
⇒攻撃力より防御力の影響度を大きく下げ、ダメージが減りすぎないように調整
⇒インフレと共にダメージが上がるけど、その分はHPで対応すれば良い
⇒「ゲームを進めていくとだんだんダメージ量が上がる」という徐々にインフレしていくゲーム性が成り立つ

てな感じです。よくある例が「攻撃力÷2」「防御力÷4」だったのでそのまま使ってますが、「2」と「4」の通りにする必要はないです。防御力の影響を下げすぎだなって思ったなら「防御力÷3」でも良いです。

また、注意点として影響度を下げすぎると

多少能力が変わったところで意味のある変化をしない

という話が出てきます。「レベルが上がった!能力が10上がったぞ!与えられるダメージが100→101になった!」とか。こうなるとレベルアップの意味がなくなっちゃう。

あと私の場合、「÷2」とかがしたい時は割り算を滅多に使わないですね。計算式の中に掛け算が入ったり割り算が入ったりすると面倒なので、全部掛け算に統一する事が多いです。「÷2」がやりたいなら「×0.5」、「÷4」がやりたいなら「×0.25」をすれば同じ話になります。「÷50」がやりたいとかだと、さすがにアレですけども。


◆複雑な計算式も基本は一緒

ここから色んな計算式に派生していくわけですが、基本的な所は一緒です。

ダメージ = ((攻撃のあれこれ)-(防御のあれこれ)) * 補正値

ですね。()の中身に色んな要素(キャラの攻撃力とかスキルの威力とか)が入って、各要素にどんな倍率をかけて……みたいなのを追加していくと、段々と複雑化していきます。

あとは足し算引き算じゃなくて掛け算割り算を使ったりとか、色んな変化がありますが、ベースは↑で考えておくと良いです。

最初から「複雑な計算式を作ろう!」と思って作るというよりは、「各要素をちゃんと活かせる形にして、バランス調整しやすいように作っていったら最終的に複雑になった」みたいな感じかも。なので、最初は深く考えずに作っていっても良いかもしれません。

あ、ちなみにここで言っている補正値は

・乱数(同じ攻撃でも毎回少しだけ違うダメージを与える)
・クリティカル時の倍率(1.5倍~3倍くらいが多い)
・属性耐性(ダメージを弱点だったら大きく、耐性があったら小さくする)

とかが入ります。()の中身はシンプルだけど色んな補正値があるダメージ計算式もありますね。

------

はい、これでダメージ計算の基本…というか、教養みたいな所は終わりです。調べていくと「平方根を使って~」みたいな話もありますが、「平方根」って聞いただけで

め、めんどくせぇ~

と言われかねないので、次いきます。


◆足し算、引き算、掛け算、割り算……どう使う?

もう少し実践的な内容として、各計算方法の特徴みたいのを書いていきます。

例えば、攻撃力を

・そのキャラが持つ「力」
・武器の「装備攻撃力」

の2つで構成した場合、

① キャラの力 + 装備攻撃力
② キャラの力 × 装備攻撃力

なのかで話が大きく変わってきます。実際に数字を入れてみましょうか。例えばこのパターン。

・キャラA:力10 / 装備攻撃力10(ベース)
・キャラB:力10 / 装備攻撃力20(片方を強くした
・キャラC:力15 / 装備攻撃力15(両方を少し強くした

キャラAをベースにBとCでどんな変化が起きるのかを確認します。

①キャラA: 力10 + 装備10 = 20
①キャラB: 力10 + 装備20 = 30 ( 1.5倍 )
①キャラC: 力15 + 装備15 = 30 ( 1.5倍 )
②キャラA: 力10 × 装備10 = 100
②キャラB: 力10 × 装備20 = 200 ( 2倍 )
②キャラC: 力15 × 装備15 = 225 ( 2.25倍 )

はい。足し算だと1.5倍だったのが、掛け算だと2倍や2.25倍になっていますね。このように成長した際の効果は足し算と掛け算で変わります。詳しく特徴を見ると、

⓪各要素のインフレの影響は掛け算の方が強い(キャラや装備の成長によってダメージが高くなりやすい)
①足し算による値は、「力」と「装備攻撃力」の比率が同じくらいでも片方に偏っていても、変わらない
 ↓
力の無い僧侶でも、強い武器があれば戦士より余裕でダメージが出る
②掛け算による値は、「力」と「装備攻撃力」の両方が高いほど効果を発揮する。
 ↓
力の無い僧侶が強い武器を装備しても、戦士ほどにはダメージが出ない

ということが言えますね。なので、

キャラの特性やレベルアップよりも、ダンジョンを探索して強い装備を手に入れることが大事なんだ!

と言うゲームであれば足し算(①)を使った方が良いですし、逆にどの要素も大事だよ~と言う場合は掛け算(②)の方が適している…って話になります。

こうした「大事にしたいもの」によってどういう計算をした方が良いのか考えたほうが、自分のゲームに合った計算式が作れます。

引き算と割り算の関係も同じような物だと思うので、この辺りは割愛。今回の話を言い換えてまとめると、こうなります。

●足し算・引き算の特徴
┗ 効果が安定する。他の要素の引っ張られない。

●掛け算・割り算の特徴
┗ 各要素の相乗効果が見込める。
┗ 各要素の重要度が上がり、特徴を生かしやすい。


◆「強いスキル」で安定してダメージを与える

さきほどの話(足し算・掛け算の特性)を踏まえた上で、ちょっと考えてみましょうか。

某有名なドラクエ漫画のセリフに

これはメラゾーマではない。メラだ。

というのがあります。大魔王様の力が強すぎて最下級の魔法が最上級の魔法並みの威力を持っちゃったアレ。(ドラクエ的に言うと魔力は「かしこさ」になるので、大魔王様めっちゃかしこい

さて、皆さん。

これをあなたのゲームで許しますか?許しませんか?

これが実現できるか(しやすいか)はダメージ計算式によって決まります。ではまず、これを許す場合はどんな計算式にしますか?

「許す!」という場合は、スキルの威力をキャラの能力依存にすると良いです。「かしこさ」の重要度を上げたいので、掛け算のみで考えて

メラの威力            = キャラのかしこさ * 2
メラゾーマの威力 = キャラのかしこさ * 10

とか。他の人の5倍かしこいと、例のセリフが実現できます。キャラの成長がよりダイレクトにダメージは反映される形ですね。

しかし、これも良い所ばかりではありません。キャラの能力に依存しすぎて、例えば「かしこさ」の低い戦士キャラがメラゾーマを撃っても全然ダメージが出ないのです。その結果、

くくく…今のはメラではない……メラゾーマだ!!!

という例のセリフと逆の悲しい現象が起きたりします。

なので

それは困る、キャラの能力によってダメージが変わるのは当然だけど、でも強い魔法は一定以上のダメージをしっかり与えて欲しい!

と言う場合は、別のダメージ計算式を使った方が良いでしょう。どんな計算式にしますか?

具体的には、ダメージ計算式に「固定ダメージ」の概念を追加します。最低保証値と言ってもいいです。例えばこう。

メラの威力            =   20 + (キャラのかしこさ * 2)
メラゾーマの威力 = 200 + (キャラのかしこさ * 4)

メラゾーマは200ダメージが約束されているので、かしこさ1の戦士でもダメージがちゃんと出ます。メラはメラゾーマより強い、というのがハッキリ作れるわけです。

ちなみに、固定値はインフレが強すぎると置いて行かれる(↑の設定でも、かしこさが10000とかあったら「20」も「200」も大した差にならない)のでその点は注意しましょう。終わりが無くインフレが基本になるソシャゲなんかとは相性が悪いです。


◆攻撃力 ÷ 防御力

直感的には

ダメージ = (スキル威力 × 攻撃力) - (相手の防御力)

みたいな式が分かりやすいんですが、たまにですね。たまにというかポケモンがですね。

ダメージ = (スキル威力 × 攻撃力)÷ 相手の防御力

みたいな式を使っているんですよ。※実際の式ではないです。説明用。

引き算じゃなくて割り算を使っているわけで、直感的ではない。でもこれ、どんな特性があるんだろうなー、というのが気になるのでちょっと考察してみます。

ちなみに例として数字を嵌めこんでますが、見てて頭が痛くなる人はスルーして説明だけ読んでもらっても大丈夫です。


①攻撃力と防御力のインフレでダメージが上がらない

「攻撃力÷防御力」なので、あくまで割合で計算されます。これどういうことかというと、

◆設定
 ・スキル威力20
 ・キャラA 攻撃力20 敵の防御力10
 ・キャラB 攻撃力20000 敵の防御力10000
◆ダメージ計算 
【キャラA】
 ・ダメージ = (20 * 20) / 10 
 ⇒ダメージ = 400 / 10 
 ⇒ダメージ = 40 
【キャラB】
 ・ダメージ = (20 * 20000) / 10000
 ⇒ダメージ = 400000 / 10000 
 ⇒ダメージ = 40 

ということ。全体の数字が上がっても、攻撃力と防御力の割合が変わらなければダメージが変わらないんです。

なのでインフレに強く、

ガンガンに攻撃力と防御力を成長させていっても、ダメージの桁数がバカみたいに多くなったりしない大量の最大HPを用意しなくても良い

という特性があります。かといって、「攻撃力などの成長が意味ない」わけでもなく、成長して敵の防御力との差が生まれれば、その分ダメージが増える…という形になっています。

◆設定
 ・スキル威力20
 ・キャラC 攻撃力40 敵の防御力10
◆ダメージ計算 
【キャラC】
 ・ダメージ = (20 * 40) / 10 
 ⇒ダメージ = 800 / 10 
 ⇒ダメージ = 80 
◆ダメージ比較
 ・キャラA:40
 ・キャラC:80 ※ダメージ2倍


②防御力の高い相手にも最低限のダメージが通る

ここまで聞くと便利そうですが、計算式を考える時の懸念点はまだあります。シンプルに見えてめちゃくちゃ調整の難易度が高かったアルテリオス計算式のように、

・ちょっとした能力差でゲームバランスが大きく変わってしまう
・相手の防御性能が高すぎると攻撃が通らない

的な事が発生しないかな、という話はあります。

ただこれも「攻撃力と防御力の割合」で扱う事の利点が出ていて、これらの問題点を潰しています。例えば3倍の防御力をもった相手にも

◆設定
 ・スキル威力20
 ・キャラD 攻撃力 50   敵の防御力150
◆ダメージ計算 
【キャラD】
 ・ダメージ = (20 * 50) / 150 
 ⇒ダメージ = 1000 / 150 
 ⇒ダメージ = 6
◆ダメージ比較
 ・キャラA:40
 ・キャラD:6  ※ダメージ0.15倍

といった形に収まります。割合なのでダメージが0にならない。


③ダメージが上がっていく楽しさは作りにくい

「割合」で扱うのデメリットが存在しないわけではなく。ダメージ自体のインフレを抑えるので、例えば、

ゲームを始めた頃は10くらいのダメージしか与えられていなかった。だけど成長するにしたがってダメージが上がっていって、ゲーム終盤では4桁のダメージが当たり前になり、キャラクターの成長を実感して楽しい。

みたいな話が苦手です。

言ってしまえば、

ゲームを始めたころも10ダメージ、ゲーム終盤になっても10ダメージをちょくちょくみかける……

なことになるので。

なので数字で成長感を楽しませたいなら、

ダメージ = (スキル威力 × 攻撃力) - (相手の防御力)

的なやり方の方が合っているとは思います。

ちなみにポケモンの仕様って、このデメリットを隠すのが非常に上手いんですよ。例えば、ダメージを与えた時に具体的な数字は出さないじゃないですか。100ダメージを与えた!とかじゃなくて、ゲージが減るのみ。

数字を出すと逆に萎えちゃうから敢えて数字は隠しちゃう。その上で大ダメージを与えた時なんかはゲージをギューンと減らして、視覚的な気持ちよさで楽しませる。上手い仕様だなーと思います。


④防御力0が使えない

数字は0で割ることができないので、「X ÷ 0」 だとエラーになります(0で割ると答えが定まらなくてエラーになるみたいです。0で割っても答えは「0」ではなく「存在しない」なのだとか)

まぁ防御力0のキャラを作らなければ良いんですが、例えばデバフで防御力が下がった時に0になった……とかならないように注意する必要があります。

そう言う場合は防御力が0以下の時は1として扱う……みたいな話はありますが、なんにせよ、そういう機会がある時は無理に使う物でもないかなーと思いますね。

------

まだまだ分析すれば出てくるかもしれませんが、とりあえずこんなもんですか。

ちなみに、ちょっと(というかだいぶ)話題が逸れますが、ポケモンは「レベルが高い方が有利だよ」というのが基本的にあるみたいで、ダメージ計算式に「レベル」の値が使われていたりします。でも確かにこれは「攻撃÷防御」と相性も良い。

「ダメージ計算式を作ろう」だと固定概念に囚われがちなので、「自分の理想のゲームデザインを実現しよう」という視点で考えると良いのかもしれません。


◆「どこ」に入れる?

例えば、弱点が入った時は大ダメージを与えるとしましょうか。ちょー強いダメージにしたいので、「×3」とかやっちゃいます。

では、「どこ」に「×3」をしますか?

スタンダードなのは

ダメージ = ( 攻撃力 - 防御力 ) × 属性耐性

でしょう。最終ダメージが3倍になる。

しかし、こうする事もできます。

ダメージ = ( 攻撃力 × 属性耐性 ) - 防御力

最終ダメージじゃなくて、攻撃力に対して倍率をかける。この違いって何だと思います?

実際に数字を入れてみましょう。

◆設定
 ・キャラA 攻撃力 20   敵の防御力 10
◆ダメージ計算 
【最後に入れる】
 ・ダメージ = ( 20 - 10 ) * 3 
 ⇒ダメージ = 10 * 3
 ⇒ダメージ = 30
【攻撃力に入れる】
 ・ダメージ = ( 20 * 3 ) - 10  
 ⇒ダメージ = 60 - 10
 ⇒ダメージ = 50

最終ダメージではなく、攻撃力に対して入れた方がダメージが大きくなりました。これどういうことかと言うと、

◆最終ダメージに対して倍率
実質的に攻撃力と防御力の両方に対して倍率がかかり、純粋に与えるダメージのみを増幅させる。
◆攻撃力に対して倍率
攻撃力のみ増幅されるので、逆に言えば相手の防御力の影響が小さくなる

なので、例えば普通にやってもダメージが通らない場合……

◆設定
 ・キャラB 攻撃力 10   敵の防御力 10
◆ダメージ計算 
【最後に入れる】
 ・ダメージ = ( 10 - 10 ) * 3 
 ⇒ダメージ = 0 * 3
 ⇒ダメージ = 0
【攻撃力に入れる】
 ・ダメージ = ( 10 * 3 ) - 10  
 ⇒ダメージ = 30 - 10
 ⇒ダメージ = 20

最後に入れても0は0なので、弱点を突こうともダメージは0のままですが、攻撃力に入れれば「弱点さえつけばダメージが通って倒せる」みたいなことが可能です。ただやりすぎると「防御力」の存在価値が無くなったりもするので注意が必要ですけど。

ちなみにやろうと思えば、倍率を下げつつ

ダメージ = ( (攻撃力 × 属性耐性) - 防御力 ) × 属性耐性

もできます。両方に入れちゃう。別に、1つのパラメーターを登場させるのは1回のみ…だなんて縛りは無いですし。

例えば、倍率自体を2倍にして

◆設定
 ・キャラA 攻撃力 20   敵の防御力 10
 ・キャラB 攻撃力 10   敵の防御力 10
◆ダメージ計算 (両方に入れる)
【キャラA】
 ・ダメージ = ( (20 * 2) - 10 ) * 2 
 ⇒ダメージ = (40 - 10) * 2
 ⇒ダメージ = 60
【キャラB】
 ・ダメージ = ( (10 * 2) - 10 ) * 2 
 ⇒ダメージ = (20 - 10) * 2
 ⇒ダメージ = 20

とか。よく言えば両方の特性を取り込むことができるとも言えますし、悪く言えば中途半端で分かりにくいとも言えます。

この辺りは何が正解とかは無いですね。自分がどんなゲームバランスにしたいのか、どの形が自分にとって一番扱いやすいのかで変わります。

それも踏まえて、計算式を考えると良きです。


(おまけ)
ちなみに今回の発想を生かすと

ダメージ =  攻撃力 *  (攻撃力 ÷ 防御力) +  (攻撃力 * 0.2)

とかもできます。攻撃力がいっぱい!

前半は攻撃力をベースにしたポケモン式(前章で解説したやつ)です。でもどんなに相手の防御力が高くても、攻撃力があれば最低限のダメージを与えて欲しいので、最後に足し算を入れてます。

この場合、相手の防御力が99999だろうと、攻撃力が10なら最低でも2ダメージ、攻撃力が100なら最低でも20ダメージを与えることができます。


◆おまけ:実際に計算しながら考えよう

ダメージ計算式を考える時は、エクセルでもスプレッドシートでも良いんですが、考えた計算式でダメージがどうなるかを即反映できる物を用意しておくと良いです。

実際のダメージが分からない状態でうんうん考えてもね。無理です。

サンプルとしてはこういうの。計算式を考える時だけじゃなくて、キャラや装備、スキルの能力を考える時にも使えます。試さなくても実際に攻撃した時の数字が分かるので。べんりぃ。

計算式もですね。

標準的なキャラで試したら問題なかったけど、攻撃力の低いキャラで試したら全然ダメージ与えられなくてヤバい!でも逆に攻撃力の高いキャラで試したら、強すぎてバランス崩壊した!!ヤバい!!

とか、

試したパラメーターでは良かったけど、インフレしてキャラが成長していくと特定のパラメーターの価値が一気に下がっちゃった!

みたいな話がでてきたりもするので、注意が必要です。そのあたりも考慮に入れて計算式をチェックすると良いですね。

特にソシャゲみたいに終わりのないゲームになると、インフレが考慮されていなかった時にロクな事になりません。そして途中でアサインされる私みたいのが血涙を流すことになります。マジで。


◆おまけ:色んな計算式が紹介されてそうなサイト

私が適当にググった感じ、出てきたのは

とか。参考に。


◆まとめ

以上です。とりあえず今回の話をまとめます。

ダメージ計算式の目的は
・自分の作りたいゲームデザインを実現するため
・各要素(攻撃力とか防御力とか)を殺さずに活かすため
・自分がバランス調整しやすいものにするため

これが出来れてば、必ずしも複雑な計算式じゃなくて良い
●シンプルな計算式は行動の結果が予測しやすい。
┗ 戦術性のあるゲームに向いている
┗ ダメージ=攻撃力でもゲームは成り立つし場合によってはそれがBEST。
┗ パラメーターを素のままで使うアルテリオス計算式は、ちょっとした数字の差で大きくゲームバランスが変わる。ピーキー。

●複雑な計算式は成長性があって色んな要素が絡むゲームに向いている
┗ 各ステータスに係数で補正をかけるドラクエ型計算式にすると、扱いやすくなるけど、結果の予測はしにくくなる。
┗ ここから先の複雑な計算式も基本は同じ。
●足し算・引き算の特徴
┗ 効果が安定する。他の要素の引っ張られない。

●掛け算・割り算の特徴
┗ 各要素の相乗効果が見込める。
┗ 各要素の重要度が上がり、特徴を生かしやすい。
●スキルの威力をキャラ依存にしたいなら、掛け算のみでやると良い
┗ ただし、最強魔法が最弱魔法になる可能性もある
● スキル自体の強さを担保したいなら、固定ダメージもつけると良い
┗ ただし固定ダメージは激しいインフレにはついていけない
●「攻撃 - 防御」 ではなく 「攻撃 ÷ 防御」という選択もアリ
┗ 攻撃力と防御力がどんなにインフレしても、ダメージが変わらない
┗ ステはインフレするけどダメージ量のインフレを抑えたいときに便利
┗ 防御力に対して攻撃力が上がれば、ちゃんとダメージが出る
┗ 防御力が高くてもダメージ0にはなりにくい
┗ ダメージを上げて成長感を出したり強くなった感を出したりするのには向いてない
┗ 防御力が0の時はダメージが無くなるので注意
●計算式の中に「レベル」を入れて、レベルが高いほどダメージがだせるようにすることだってできる
┗ 自分の理想のゲームデザインを実現するための計算式を考えるのが大事
●同じ倍率でも、「どこ」に入れるかで効果が変わる
┗ 最終ダメージに入れると、全ての要素に影響する
┗ 攻撃力に入れると、相対的に防御力の影響を減らせる
┗ 1つの要素は1回しか使えない、という縛りは無い
● 計算式を考える時は、表計算ソフトを使ってダメージ量を確認しながら
┗ 机上の空論状態で作るのは難しい
┗ 色んな状況を想定して、どうなるか確認しながら作り上げるのが大事

はい。

たぶん計算式に一家言ある方もいるだろうし、この記事の内容に「そうじゃねぇだろ!」と思う人もいるかと思います。そういう人は、こう、記事を書いてくれると嬉しいな~と思います。計算式の話、ぶっちゃけ私も我流でやっているだけです。(あ、できれば、「め、めんどくせぇ~」ってならない形で)

個人的にはですね。このゲームではこういう計算式が使われている、という情報は(たまに)手に入るんですが、「なぜその計算式なのか」っていう情報は皆無なので、その辺を誰か語ってくれる人はいないのかな~って思っていたりします。例えばFF6の

攻撃力 + {攻撃力/2+力 × レベル ^2} × 3 ÷ 256

の「÷256」ってどういう理由で入れてんの?とか。誰か解説してほしい。

※最後に割り算をするのは、それまで掛け算ででっかくなりすぎた数字を調整する意味合いが強い。その数字として、ビット演算(2進数を使った効率が良く処理の早い計算)ができる数字(128とか256とかその系統のやつ)の中から手ごろな数字を選んでいる……のかな?と今は思っている。


◆宣伝

個人でインディーゲームを制作中です。ダメージ計算式も頑張って考えて運用しています。


それとこの記事の他にも、ゲーム制作に役立つ話を色々と書いてます。

最近のだとコレとか。

計算式の話が含まれるので言うと、コレとか。

全部の記事はここにまとまってます。


サポート(投げ銭、金銭支援)歓迎です。 頂いたお金はゲームの開発費に使用させていただきます。  ↓ 支援が多いと私のゲームのイラスト枚数が増えたりオリジナルの曲が組み込まれたりします。美味しいお肉を食べに行ったりはしません。