防御力を決める数式 (続き)

防御力

いま、敵の防御力が何らかの計算式によって決まっているという仮説に基づいて考察を重ねている。こういう時の常套手段としてゲーム開発者の側の気持ちになって考えてみるという手がある。今日は、その視点から考えてみたいのだけれど、その為には、昔のダメ値計算の仕方を確認しておく必要がある。

ダメ値

実は、ロードスでは2017年7月12日に「第二章:炎の魔神」のアプデが行われ、そのアプデの以前と以後とで、ダメ値の計算の仕方が少し変わっている。

この件に関して運営からのコメントは一切なく、この日記では当初これをバグと考えて「ダメ値バグ」と呼んでいたけれど、しばらく経ってからは仕様変更と考えるようになった。

二つの違い

ロードスのダメ値の計算の途中で、こんな式が出てくる。

(敵の防御力) / ( 30*lv+700 )

この式に表れるlvをこの日記では「ダメ値計算のレベル」と呼んでいるのだけれど、この意味が、以前と以後とで変わっている。

今は、マップごとに設定されているレベルだけれど、以前はプレイヤのレベルだった。

開発者の気持ち

なので、冒頭で述べたように「開発者の気持ちで考える」為には、仕様変更前のもので考えないといけない。

開発者が、「敵のレベルを設定したら、それに応じて防御力が決まる仕組みを作ろう」と思ったとする。

例えば、エンプは元々 lv42だけれど、 「lv112」と設定したら、それにふさわしい防御力が自動的に決まる仕組みを作っておきたい。そのために

「Lv42のプレイヤがLv42のエンプを叩いた時の硬さと、Lv112のプレイヤがLv112のエンプを叩いた時の硬さが(デフォルトでは)同じくなるようにしておく」と考えた

と仮定してみる。そうだとすると

(lv42のエンプの防御力) / (30*42+700) = (lv112のエンプのデフォルト防御力) / (30*112+700)

が成り立つはず。そう思って、実際に計算してみるとこうなる。

989/(30*42+700)=0.5045918367346939
(2649-600)/(30*112+700)=0.5046798029556651

確かにほとんど一致している。ここで600を引いているのは、難易度の設定で600かさ上げされているので、その分。

そうすると、この式を逆に考えると

(lv42のエンプの防御力) = 0.504*(30*42+700)
(lv112のエンプのデフォルト防御力) = 0.504*(30*112+700)

という式になる。これがちょうど昨日の日記で書いた式になる。