ポポリン放送局 局長日誌

ラグナロクオンラインFrigg(旧Loki)サーバーで活動していたギルド『ポポリン放送局』の局長"ぴろう。"のブログだったところです。今は主にDQXやFEのブログとなっております。

【DQX】ベホマラー回復量の計算式調査

こんにちは、ぴろうです。


2018/05/11 色々修正しました。

色んなDQX関係のサイトやブログにベホマラーの回復量の計算式が載っています。
その計算式は以下2パターンのどちらかが多いと思います。

[パターン1]
平均回復量=回復魔力×0.23+48

[パターン2]
平均回復量=(回復魔力–166)×0.233+85

最大量と最小量は平均±5です。


実際にこれらの計算式を使ってみた方で、計算結果の最大または最小が、実際にゲーム内でベホマラーしたときの値と一致しないと思ったことがある方はいませんか?

今回はそんな人のための記事です。





なぜ計算結果と実際の値が一致しない?

上記の計算式はVersion1の頃に暫定で作られた計算式なのではないかと思います。
そのまま誰も調査しなかったんじゃないかなー?
全て私の想像です。


じゃあ正しい計算式は何?

探しても見つからなかったので調査/実測してきました。
私が知る限りこれが最も正解に近い計算式です。(正解とは言ってない)

<基本計算式>
回復量 = ( 回復魔力 - 166 ) × 9448 ÷ 40531 + 85 (±5)


<宝珠や装備込みの場合>
回復量 = (( 回復魔力 - 166 ) × 9448 ÷ 40531 + 85 (±5) ) × (祈りや宝珠等の割合増加) + (しんこう160~180スキルや死ピ等の加算量)


2018/05/11
少しマシな式に直しました。
経緯は↓のほうに追記しました。

<基本計算式>
回復量 = ( 回復魔力 - 166 ) × 0.2331055 + 85 (±5)

<宝珠や装備込みの場合>
回復量 = ( ( 回復魔力 - 166 ) × 0.2331055 + 85 (±5) ) × (祈り/宝珠等の割合増加) + (しんこう160~180スキルや死ピ等の加算量)


ベホマラー回復量計算機(仮)にも反映させてあります。
ちなみに、小数点以下切り捨てです。


以下は調査した内容やメモです。


公式のベホマラー情報

ベホマラーの回復量は一次関数となっています。
根拠は、グラコス本P79の右下のグラフです。

歴代攻略本のベホマラーの説明から、回復魔力と回復量の関係で、以下が確定しています。
・回復魔力166で回復量80~90 (グラコス本)
・回復魔力600で回復量186前後 (三悪魔本)
・回復魔力820で回復量237前後 (モグラ本)
実際にゲーム内で上記の回復魔力にすると、出る値は平均値(記載値)±5であることがわかります。

尚、ベホマラーに限らず、DQXの呪文やとくぎの威力はほとんど一次関数です。


最小~最大の間の全ての整数が出るとは限らない

たとえば回復魔力824、祈りあり(+100%)、宝珠+12%の場合の回復量は494~515になります。
実際にこの条件でベホマラーを使った時に、494~515の間の全ての整数の値(494,495,496,…,513,514,515)が出るかというと、そうではありません。

実際に出る値は、祈りや宝珠の補正無しの最小~最大間の整数に、祈りや宝珠の補正を加えたもののみとなります。

上記の例で行くと、回復魔力824の補正無し回復量は233~243です。この間の整数を列挙すると以下の11個です。
233,234,235,236,237,238,239,240,241,242,243

それぞれの値に、祈りと宝珠の補正を加えたものが実際に出る値となります。
494,496,499,501,503,505,507,509,511,513,515

なので、同条件で何回ベホマラーをしても495や500といった値は出ません。
尚、これはベホマラーに限った話ではなく、DQXの呪文やとくぎはほぼ全てこうなっています。

2018/05/11追記
なぜこの話を書いたかというと、冒頭で紹介した計算式[パターン1]、[パターン2]のどちらも、計算上出るハズの無い値が実測で出てしまうからです。



一次関数なら…

公式情報で回復魔力に対する回復量がいくつか示されています。
そこで、「一次関数なのだから2点がわかれば傾きと切片を求められるでしょ?」と思う人もいるのではないでしょうか。

たしかにその通りなのですが、残念ながら正確な値を出すことができないのです。
なぜかというと…
> ちなみに、小数点以下切り捨てです。
これのせいです。
上記の公式回復量や実際にゲームで表示される回復量は「小数点以下が切り捨てられた後の値」なのです。

極端な話、ゲーム内で"500"と表示されたとしても、それが"500.00"なのか"500.99"なのかわかりません。
そのため、傾きや切片が小数点以下で正解の値からずれてしまいます。
(以降、「傾き」と書いてあったら「傾きや切片」に読み替えてください♪)


調査/実測内容

今回私が行った調査/実測では、ゲーム内で実際にベホマラーを使った時に表示される値を元に、傾きの正解を探っていきました。

①てきとうに傾きを決めます(今回は傾き0.233をスタートにしました。この値は正解よりも小さい値となっている(計算結果より実際は大きい値が出ることがある)ことが実測でわかっています)
②回復量が計算上"xxx.999…"のように「小数点以下がギリギリ1に足りない値」を探し、対応する回復魔力を調べます
③調べた回復魔力のキャラをゲーム内で用意し、ベホマラーを使いまくります
④もしゲーム内で"xxx+1"の値が出た場合は、計算式の傾きに修正を加え、ギリギリ"xxx+1"となるような値にします
⑤②~④を繰り返す

そのうち④にて計算上とゲーム内の値が一致するハズなので、その値を正解(に近い値)とします。
この方法で傾きを修正して行ったところ、傾きが9448/40531(約0.2331055)で一致しました。


といった経緯で計算式を作りました。
突き詰めればこれよりもっと美しい値にできると思いますが、私はそこに価値を感じないのでこれにて調査終了としました。
価値を感じることを思いついたので直しました_(:3 」∠)_

この「やり方じゃやべぇよ!」とか「ここ間違ってる!」とか「計算機(仮)とゲーム内の値が異なっているところがある!」とか発見した方は是非教えてくださいm(_ _)m



2018/05/11 以下追記

なぜ"切り捨て"なのか

ソースはありません(キリッ

しかし、そう言える理由は2点あります。
・切り捨てで計算すると実測と一致するから
・切り捨て/切り上げ/四捨五入の中では、"切り捨て"が最も処理量が少なく済む

後者については、プログラミングの知識がある人はなんとなくわかるのではないかと思います。
たとえば、「浮動小数点型(float型とか)の数値500.99を整数型(long型とか)にキャストするといくつになるか?」です。
結果だけ言ってしまえば500になるので、切り捨てと同じことになります。
切り上げや四捨五入にするためにはそれぞれ関数を呼び出さなければならず、キャストで済む切り捨てと比べると処理量が増えてしまいます(=処理速度が遅い)。同時に何千/何万もの人々が接続するオンラインゲームではレスポンスが大切なので、切り上げや四捨五入が採用されているとは到底思えません。

そいういった理由で、私は切り捨てだと断言します。


割り算の処理速度は遅い

一般的に、除算は乗算と比べ処理速度が遅いです。この根拠はぐぐればででくると思います。
そのため、計算式に分数を直接使っているとは考え難く、あらかじめ分数を小数に直した値を乗算で使用していると思いるのではないかと思います。

というわけで、本記事をうpしたときの計算式の分数を、実測がずれない桁数を用いた小数に直しました。

9448 / 40531 → 0.233105524166687… → 0.2331055

回復量 = ( 回復魔力 - 166 ) × 0.2331055 + 85 (±5)

調べたところ、小数点以下7桁の0.2331055はOK、6桁の0.233105はNGだったので、小数点以下7桁にしてあります。
また、0.2331055に最も近いかつ結果がズレない分数を調べたところ、307 / 1317だったので、分数で計算したい方はこちらを使用すれば良いです。


テーマ:ドラゴンクエストX - ジャンル:オンラインゲーム

コメント

ベホマラーの回復量計算式

はじめまして。黄金父さんと申します。
ベホマラーの回復魔力と回復量の計算式の調査をしていまして、
検索したらこのブログがヒットした次第です。

数値の丸めは切り捨てで確定です。
ベホマラーの回復魔力キャップが891でこれより大きい回復魔力では891と同じ値しか出てきません。
よって、ゲーム内調査でキャップ値は891で確定しました。
ここで私の調査している計算式を使って、数値の切り捨て、切り上げ、四捨五入のどれかを検討すると
実際に調査した値と同じ計算値になるのは「切り捨て」で、四捨五入のときは890、切り上げにすると889
がキャップ値になり、検証結果と異なるのです。

私の調査している式とぴろう様が上記で提案している式はほぼほぼ同じ結果となっているのですが、わずかに異なる値が出てくることがあるのです。
実際に調査してみるとすべて私の調査している式の値が出てくるのです
もっとも正解に近い式は私の調査している式で、ブログの記事(正確にはフレのブログに記事を投稿する)にしようかと思っているのですが、
その際にぴろう様のブログのこの記事を参考文献として表記してもよろしいでしょうか?




  • 2019/10/02(水) 00:05:51 |
  • URL |
  • 黄金父さん #FBS4NHfE
  • [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する