初めに
「攻撃力100、防御力50ならダメージはいくつ?」――ゲームを作るときに必ず出てくる疑問です。
一見シンプルな問題ですが、ダメージ計算式の設計次第で「爽快感」「戦略性」「難易度バランス」が大きく変わります。
この記事では、RPGを中心に使われているダメージ計算式の例をまとめ、それぞれのメリットと使いどころを解説します。
① シンプルな引き算方式
最も基本的な方式。防御力をそのままダメージ軽減に使う。
ダメージ = 攻撃力 - 防御力 (ただし最低1以上)
例:攻撃力100、防御力80 → ダメージ = 20
→ ドラクエの初期作品などでよく使われる方式。
② 割合軽減方式(よくあるRPG)
防御力が「割合でダメージを減らす」式。防御が高いほど効き目があるが、完全に無効化はしにくい。
ダメージ = 攻撃力 × ( 攻撃力 / (攻撃力 + 防御力) )
例:攻撃力100、防御力50 → ダメージ ≈ 67
例:攻撃力100、防御力200 → ダメージ ≈ 33
→ FFやポケモン、MMORPGなどで採用例が多い。
③ 防御力を係数に変換する方式
防御を「%軽減」に変換して扱うやり方。
ダメージ = 攻撃力 × (1 - 防御力 / (防御力 + 定数))
例:定数=100
攻撃力100、防御力50 → ダメージ = 100 × (1 – 50/150) = 67
攻撃力100、防御力200 → ダメージ = 100 × (1 – 200/300) = 33
→ 「硬くなればなるほど追加で硬くなる」カーブを調整しやすい。
④ 乱数を加える方式
ランダム性を入れて戦闘を予測不能にする。多くのRPGで採用。
ダメージ = (攻撃力 - 防御力 / 2) × (0.85 ~ 1.15の乱数)
例:攻撃力120、防御力60 → 基本値 = 90 → 実ダメージ = 76~103
→ ポケモンシリーズで使われている方式に近い。
⑤ 固定比率軽減(アクションRPGで多い)
防御力を「被ダメージの割合」に変換する方式。
ダメージ = 攻撃力 × (100 / (100 + 防御力))
例:防御力100 → ダメージ半減
防御力300 → ダメージ25%
→ DiabloやLoLなどアクション寄りのゲームでよく使われる。
⑥ 防御を「ダメージカット値」として使う方式
攻撃力がどんなに高くても、防御が一定以上ならダメージをかなり抑える。
ダメージ = max(1, 攻撃力 - 防御力 × 0.8)
例:攻撃力100、防御力50 → ダメージ = 60
例:攻撃力100、防御力120 → ダメージ = 4(最低保証で1以上)
→ シンプルだが「鉄壁タンク」を作りやすい。
まとめ
- 引き算式 → 分かりやすいがインフレしやすい
- 割合式 → バランスがとりやすく主流
- 乱数式 → 戦闘にスリルが出る
- 固定比率式 → PvPやアクションRPG向き
自分の作りたいゲームのスタイルに合わせて最適なダメージ計算を選んでください!