ウディタ、インフレRPGを作るのに向いてないんじゃないか説

WOLF RPGエディター基本システム2のダメージ計算式のお話。

ダメージ計算式とは?

RPGに欠かせないダメージ計算式。ゲームによって様々なものが存在し、それぞれ細かい部分が色々と異なっている。
例えば「アルテリオス計算式」で有名なアルテリオス

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

となる。アクションゲームやSRPGにはよく採用される方式であり、アルテリオス以外にもファイアーエムブレムシリーズなどはその代表格だろう。ペーパーマリオシリーズもこの形を取っており、近年は攻撃力の部分が使ったアイテムで変わる形式だ。
攻撃力の部分に細かい補正が加わることもあるが(最近のFEの連携補正とか)、それは武器補正と理論上は大差ないので一旦考えないことにする。
体感、この手のゲームは「攻撃補正は+固定値」「クリティカル補正は威力の倍加」ってイメージが強い。しわくちゃ 2倍ダメ やめて…

これの派生でドラゴンクエストシリーズの通常攻撃だと、

ダメージ=(こうげき-(しゅび/2))*[乱数]

を利用しているらしい。アルテリオス式より防御の影響度が低い計算と言えるが、アルテリオス特有の「固い敵は強い」の傾向は引き継がれていると言える。
まあドラクエはデフレゲーだし、呪文やとくぎは多くが特殊な計算をするのであんまり関係ない。

逆に数値に対するインフレ率が低いゲームといえばポケットモンスターシリーズなんかが挙げられる。こちらの計算式は

ダメージ={((レベル*5/2+2)*[わざ威力]*[こうげき]/[ぼうぎょ])/50+2}*[各種補正]

となる。こうげき/ぼうぎょの部分がキモで、この差が極端に離れていても威力が膨れ上がりにくい。逆に、防御が高すぎても極端にダメージが減ることもない。威力250のわざを一致(1.5倍)補正かけて使ってもFFみたいな極端な火力が出ることはないということだ。

ウディタ基本システム2では

閑話休題。
本題に戻りましょう。ウディタ2.0以降のダメージ計算式がこちら。

ダメージ={[基本効果量]
+(攻撃力*攻撃力影響度*AD-防御力*物理度合い*BD)*物理ダメージ倍率
+(精神力*精神力影響度*AD-精防御*精神度合い*BD)*精神ダメージ倍率}
*[ダメージ分散率]*[属性補正]

※AD=通常ダメージ値(UDB[17:0:31])。クリティカル時はかわりにクリティカル倍率(UDB[17:0:33])を使用。
※BD=通常防御有効度(UDB[17:0:32])。クリティカル時はクリティカル防御有効度(UDB[17:0:34])を使用。

まあ長ったらしく書いてるが、補正等を無視して簡潔にまとめると

ダメージ=([基本効果量]+([攻撃力]-[防御力])*[乱数]

つまるところアルテリオス計算式である。
なお、この通りの順番に計算されるので交換法則は成立しない。
以下、各項目について。

基礎攻撃力

UDB0[技能]の項目9、「基本効果量[固定値]」のこと。
「固定値」のとおり乱数と属性以外の影響を受けない。ある意味最低保証と言えるか。

攻撃力・精神力

使用者の攻撃力と精神攻撃力のこと。(以下便宜上A、Cと呼称)
戦闘中はCDB10に格納されている。
ダメージ計算では、武器補正や状態補正を計算済みの値(CDB[10:X:48or50])を使用。なお無改造の時点では、元々のA・Cに対し、キャラごとに倍数補正をかけることはできない。

攻撃力影響度・精神力影響度

UDB0[技能]の10・11で設定する値のこと。
そのままA・Cに乗算されるので、ポケモンでいういりょくに当たるのはこっち。
これの「攻撃影響:精神影響」の比が、「物理度合い」「精神度合い」になる。

通常ダメージ値・クリティカル倍率

事前にゲーム側で決めておくダメージ倍率。
A・Cにそのまま乗算されるので、事実上攻撃力の補正値ということになる。
アルテリオスなのでインフレ度合いはこれの値にかかってくる。これと防御有効度がどっちも×1.0なら、完全なアルテリオス式になる。
クリティカル補正が入った場合かわりにクリティカル倍率を使うが、これもA・Cを直接乗算する。

防御力・精神防御力

読んで字の如く。(以下B・Dと呼称)
これも補正済みの値を使用。
ただし、状態異常による「受ける物理ダメージ・精神ダメージx倍」は別の補正なので、直接元々のBやDを変動させることはない。

物理度合い・精神度合い

その技がぶつり技か、とくしゅ技かを決める部分。
以下の計算式により、「A影響度とC影響度の比を取り、その合計を100にしたもの」として得られる。結果として、0〜100のいずれかの値が得られる。

[物理度合い]=[攻撃力影響度]*(10000000/(攻撃力影響度+精神力影響度))/100000
[精神度合い]=[精神力影響度]*(10000000/(攻撃力影響度+精神力影響度))/100000

一見複雑に見えるが定数部分を約分すれば

[AorC度合い]
=[AorC影響度]/(攻撃力影響度+精神力影響度)*100

であり、単に割合を求めているだけということがわかるだろう。
これを利用して防御力と精神防御力、どちらをどれだけ利用するかが決定する。攻撃影響30%、精神影響10%の技能なら、Bの75%、Dの25%が最終的な防御力になる。
なお、ポケモンでいうサイコショックのような、「使用者の参照するステータスと受ける側の参照ステータスが異なる技能」は、無改造では実現できない。

防御有効度

防御力にかかる、ゲーム固有の補正。こちらもB・Dに直接乗算される
クリティカルの場合はクリティカル防御有効度をかわりに使用。
これがx0.5ならドラクエになる。

ここまでの値で、「効力総計」が決定される。この後、各種ダメージ補正を行う。

物理ダメージ倍率・精神ダメージ倍率

状態異常で決まる方。CDB10では項目57・58に格納されている。
元々のA・Cではなく、諸々の補正をかけた攻撃ダメージと精神ダメージの最終的な値に倍率がかかる。減算した後で補正するので、仮に1.5倍や2倍補正がかかっていてもこの時点で威力0なら補正しても0ダメージになる。

属性補正

バージョンごとにちょっとずつ処理が違う。現在のバージョンの計算式は以下の通り。

[属性補正]=[最も大きいプラス補正の値]+[最も小さいマイナス補正の値]+100

例えば、「無属性が50%(補正倍率-50)、水属性が150%(補正倍率+50)効き、炎属性は50%吸収(補正倍率-150)する敵」がいたとすると…

  • 無属性の攻撃
    補正倍率-50のみがかかり、-50%。
    最終倍率は50、つまり0.5倍。

  • 無属性と水属性の攻撃
    補正倍率+50と-50の合計で、0%補正。
    最終倍率は100、つまり1倍(軽減なし)。

  • 無属性と炎属性の攻撃
    補正倍率-50と-150の大きい方のみが適応され、-150%補正。
    最終倍率は-50、つまり-0.5倍(50%吸収)。

  • 水属性と炎属性の攻撃
    補正倍率+50と-150の合計で、-100%補正。
    最終倍率は0、つまり0倍(ダメージ無効)。

最大値のみを取るので、ポケモンのような重ねがけは「バツグン+いまひとつ」の組み合わせでしか発生せず、4倍弱点や1/4軽減という事象は起きない。

これらの値で最終的なダメージ量が決定し、受け側に与えられる。
なお、小数値はダメージを与える瞬間だけ切り捨てられ、それ以外では常に有効。

つまり

ウディタではアルテリオス式やドラクエ式は作れるが、ポケモン式は作れない。
インフレさせるの面倒だよなぁ…

この記事が気に入ったらサポートをしてみませんか?