※この記事は,ルネサンス以前に書かれた記事です.ルネサンス後に通用する場合は十分ご注意ください※
しばらくほっぽり出しになっているかのように見える『当たるかな』プロジェクトですが,コツコツ進んでおります.
今回は与ダメについて考えてみます.
いつも大変お世話になっているMapleStoryDropさんの記載では,攻撃力までの式はありますが,与ダメの式はありません.で,MapleStory wiki*さんを覗いてみると,「防御は関係なくなった模様なので一応コメントアウト」ということわりがあって,
魔法攻撃:
( (算出攻撃力×アンプ×属性判定)×属性武器補正×クリティカル追加ダメージ×攻撃回数) – 敵魔法防御率
という記載になっています.
モンスターのステータスには,防御力と防御率があるのですが,防御力は関係なくなった,ということでしょうか.モンスターブックやモンスターカードのセット効果,ヴァンレオン装備のセット効果などには,「防御力○○%無効」とあったりするのですが,そもそも防御力は無効なんだそうです.
ホンマかいな?
まあ,それを信用するとしても,MapleStory wiki*さんの与ダメの式は見るからに間違っていますよね.防御「率」って「率」ですから,係数の形で式に入ってこないとおかしい.でも,名前が間違っている可能性も否定できません.根倶損ですから.
んなわけで,調べてみましたよ,サブローの与ダメを.
【目的】
MapleStory wiki*さんの与ダメの式を検証する.特に,モンスターの防御力,防御率が与ダメに与える影響を明らかにする.最終的には,正しい与ダメの式を特定したい.
【背景】
BB後,与ダメの計算式が変更になり(特に魔),老舗サイトの膨大な検証データが無意味になっており,自前の検証が必要になっている.
【理論】
MapleStory wiki*さんによれば,与ダメの式は以下のとおり.
( (攻撃力×アンプ×属性判定)×属性武器補正×クリティカル追加ダメージ×攻撃回数) - 敵魔法防御率
ただし,これは最大値.攻撃力は,一回の攻撃のごとに,最大値と最小値の間でランダムに決まる.最小値は習熟度の影響を受けるが,ステータスウィンドウで確認できるので,その算出式については,ここでは触れない.
この式を簡単にするために,以下の要因を排除する(排除すべき5要因).
- アンプの影響
- 属性の影響
- 属性武器の影響
- クリティカルの影響
- 攻撃回数の影響
これらを排除すると,
与ダメ = 攻撃力 - 敵魔法防御率
となる.
攻撃力は最大値と最小値の間でランダムに決まるので,与ダメも
最大与ダメ = 最大攻撃力 - 敵魔法防御率 (1)
最小与ダメ = 最小攻撃力 - 敵魔法防御率 (2)
の範囲内でランダムに決まるはずである.
【方法】
与ダメを測定する方法は以下の通り.
- 攻撃キャラ:聖魔サブロー
- 武器:Mバイローブスタッフ
- 攻撃スキル:Aレイ(スキルレベル21)
- 敵:城クマ(ベアウルフ)
狩りの様子を5秒毎にSS撮影し,クリティカル以外の与ダメを抜き出して記録する.
上記の条件で測定を行うことで,理論で述べた排除すべき5要因を確実に排除できる.
- アンプ:聖魔はアンプを使用できない.
- 属性:Aレイは聖属性だが,城クマは聖弱点も聖耐性も持たない.
- 属性武器:Mバイローブスタッフは無属性.
- クリティカル:クリティカルの与ダメは無視する.
- Aレイの攻撃回数は1.
また,その他の不確定様子をなるべく排除するために,グルを組まず,ソロ狩りとする.また,測定前後でステータスウィンドウを開き,最大攻撃力と最小攻撃力の実際の値を確認する.
狩り場は城壁の下5.城クマ単独マップなので,他のモンスターへの与ダメを誤ってカウントするミスが発生しない.また,一匹を長期にわたって安置から攻撃できるので,与ダメの表示が重なりあって見えにくくなることもない.
この条件下で狩りをし,最大与ダメと最小与ダメを測定し,式(1),式(2)の関係が成立するかどうかを確かめる.
【結果】
測定日:2011年6月24日
時刻:19:00~20:00(途中休憩あり)
有効データ数:89個
最大与ダメ:33,343
最小与ダメ:25,075
図:与ダメ(城クマ)
ただし,このグラフでは,予ダメを小さい方から順に並べ替えてある.
※サブローの火力がいかに低いかがバレバレですねw なつめ最弱聖魔の名に恥じない火力となっております.
【結論】
まず,サブローの攻撃力について考える.
Aレイ(スキルレベル21)は攻撃力666%であるので,サブローのステータスウィンドウに表示される攻撃力に6.66をかけたものが,トータルの攻撃力となる.
最大攻撃力:41,751 (少数切捨て)
最小攻撃力:31,315(少数切捨て)
式(1),式(2)が正しいとすれば,
最大与ダメ = 41,751 - 敵魔法防御率 (1’)
最小与ダメ = 31,315 - 敵魔法防御率 (2’)
となるはずである.ところが,城クマの魔法防御率は20でしかない(全モンスターを通して概ね50を超えない).つまり,
最大予ダメ = 41,731
最小与ダメ = 31,295
最小与ダメ/最大予ダメ = 0.75
という結果になることが期待される.
一方,測定結果は
実測最大予ダメ = 33,343
実測最小与ダメ = 25,075
最小与ダメ/最大予ダメ = 0.752
であった.
実測値のサンプル数は89個と少ない数であるので,実測最大予ダメと実測最小与ダメが,理論値を正しく反映していない恐れもある.しかし,最小与ダメと最大予ダメの比が,誤差1%以内で期待値に一致しているため,同程度の誤差範囲内に収まっていることが期待できる.
一方,予ダメの理論値と実測値は大きな隔たりがあり,これを測定誤差で説明することはできない.
よって,MapleStory wiki*さんに掲載されている与ダメの計算式は誤植であり,予ダメを正しく評価できるものではないという結論になる.
【考察】
MapleStory wiki*さんの式が誤りであるとして,では,正しい与ダメの計算式はどういうものであろうか.
防御「率」という言葉を忠実に受け止めれば,被ダメの何割かをカットする能力が防御率である.
そう仮定すると,
最大与ダメ = 41,751 × (100 - 20) ÷ 100 (3)
最小与ダメ = 31,315 × (100 - 20) ÷ 100 (4)
となる.これを計算して,
理論最大予ダメ = 33,400
理論最小与ダメ = 25,052
を得る.
これは,実測値と0.2%以内の精度で合致している.
よって,「防御率が20であるということは,予ダメの20%がカットされることを意味する」という推測が立つ.
これからは,防御率が異なるモンスターに対して同様の測定を行い,上記の推測の実証を進めることにする.
おまけ
予ダメのグラフを見ていただければ分かりますが,予ダメは最小値から最大値までほぼ均一にならんでいます.これは,その部分の乱数が「一様乱数」であることを示しています.
乱数発生器の中では,一様乱数の発生器が一番安価であるため,ゲームなどではほとんど一様乱数が使われています.メイプルストーリーでも一様乱数が使われているという仮定は妥当ですが,実際の乱数として一様乱数が自然で当たり前な乱数というわけではありません.
※正確に言うと,乱数の質について何も考えない設計者がとりあえず使う乱数発生器が,たまたま一様乱数発生器だということです.一様乱数が欲しくてそれを選んでるのではなく,身近にあった安価な乱数発生器を採用したら,たまたまそれが一様乱数発生器だったというだけの話です.
もっと言えば,安価な乱数発生器があらゆる統計的テストをパスした一様乱数発生器であるかというと,全然そうではありません.
まあ,たかだかゲームの与ダメの計算ですから,多少テキトーな乱数発生器が使われたところで何の問題も生じないだろうとは思います.
予ダメの乱数が一様乱数であるということの裏が取れた,というおまけがつきました.