チュートリアル:ダメージ計算式の基礎

ダメージ計算式入門
RPG Maker MV & MZ 完全ガイド

RPG Maker のダメージ計算式は、単なる JavaScript の式です。
通常の数学的な演算順序(PEMDAS)に従います:

  1. 括弧
  2. 指数
  3. 乗算と除算(左から右へ)
  4. 加算と減算(左から右へ)

そのため、a.atk * 4 - b.def * 2(a.atk * 4 - b.def) * 2 とは同じではありません。
順序を制御する必要がある場合は、必ず括弧を使用してください。


最も重要な2つの変数

a = 使用者(攻撃側)
b = 対象(防御側)

これらからほぼすべてのパラメータにアクセスできます:

a.atk, a.def, a.mat, a.mdf, a.agi, a.luk
a.hp, a.mp, a.tp, a.mhp, a.mmp
a.level, a.hpRate(), a.mpRate(), a.tpRate()

b についても同じオプションが存在します。


基本演算子

  • 加算 → a.atk + 50

  • 減算 → a.atk - b.def

  • 乗算 → a.atk * 4
    / 除算 → a.atk / 2
    % 剰余 → a.hp % 10
    ** 指数 → a.atk ** 2


便利な数学関数

Math.max(x, y) // 大きい方の値
Math.min(x, y) // 小さい方の値
Math.floor(x) // 切り捨て
Math.ceil(x) // 切り上げ
Math.round(x) // 四捨五入
Math.random() // 0 から 1 の間の値
Math.randomInt(n) // 0 から n-1 の間の整数


必須の計算式構築ブロック

  1. クラシック物理攻撃
    a.atk * 4 - b.def * 2

  2. クラシック魔法攻撃
    a.mat * 4 - b.mdf * 2

  3. 最大HPの割合
    b.mhp * 0.25

  4. 現在/欠損HP
    b.hp * 0.3
    (b.mhp - b.hp) * 0.5

  5. レベルスケール
    a.atk * 2 + a.level * 5

  6. 最小ダメージ保証
    Math.max(a.atk * 4 - b.def * 2, 1)

  7. 変数の使用
    a.atk * 4 - b.def * 2 + v[10]

  8. 条件演算子(三項演算子)
    a.hpRate() < 0.3 ? a.atk * 6 : a.atk * 4

  9. 属性倍率
    (a.atk * 4 - b.def * 2) * b.elementRate(2)


実践的な完全な例

バランスの取れた物理スキル
Math.max(a.atk * 4 - b.def * 2, a.atk)

レベルスケール付き魔法
a.mat * 3 + a.level * 8 - b.mdf * 1.5

真のダメージ(防御を無視)
a.atk * 3

即死攻撃(HPが25%未満で強力)
b.hpRate() < 0.25 ? a.atk * 8 : a.atk * 3


重要な注意点とよくある落とし穴

  • 変動値(ランダム要素)は計算式適用後に適用されます。
  • クリティカルヒットは、計算式と変動値を適用した後の最終結果に掛けます(デフォルト×3)。
  • 防御(ガード)は、それらすべてを適用した後にダメージを半減させます。
  • 0 での除算はゲームをクラッシュさせます。必ず保護してください:
    a.atk / Math.max(b.def, 1)
  • 非常に大きな数値は問題を引き起こす可能性があります。値を適切な範囲に保つか、Math.floor() を使用することを推奨します。

クイックリファレンスチートシート

a.atk * 4 - b.def * 2 // 基本物理攻撃
a.mat * 4 - b.mdf * 2 // 基本魔法攻撃
Math.max(a.atk * 4 - b.def * 2, 1) // 最小ダメージ1
b.mhp * 0.2 // 最大HPの20%
a.level * 10 + a.atk * 2 // レベルスケール
a.hpRate() < 0.5 ? a.atk * 5 : a.atk * 3 // 条件分岐


質問がある場合や、独自の計算式を共有したい場合は、お気軽に以下に投稿してください。
楽しい計算式作成を!

「いいね!」 1