何が気に入らないのか,MapleStoryが入ってるPCの調子が悪くなってきました.暑いからかなぁ?ネットブックは絶好調なのでブログの更新には支障が無いのが救いですね.
さて.
前回(二人っきりのモンスターパーク),モンパデュオ狩りでの経験値配分を取り上げました.どうやら四月のアップデートまでは,モンパもパーティープレイゾーンだったようですが,現在は普通のマップと同じになり,「グループメンバー1名あたり50%の追加経験値」という大判振る舞いはなくなっております.それを確認したみたいなものです.
んで,微妙に火力の違う二人がデュオモンパをすると,低火力側が理不尽に不利だというようなことを書きました.書いた時はそう思っていましたが,さてさて,実際はどの程度理不尽なものなのか気になっていました.そこで,今回は火力差が獲得経験値に与える影響を詰めて考えようと思います.そして,ただ考えるだけではなく,どういうアプローチと手段を使って問題を詰めていくのかという方法を提示したいと思います.
ありていに言えば,いつも以上に
ウンチクがキツイ
ってことです.
というのも,分析系のメイプルストーリーの攻略サイトがこれからも増えて欲しいからです.そのやり方を提示して「俺もやってみようw」と思う人が出てきて欲しいんですね.次郎がメイプルストーリーを始めたばかりの頃にお世話になった分析サイトが軒並み更新停止になっていて寂しいので,後進の分析サイトが育って欲しいってところです.もちろん老舗で且つ現役の優れた分析サイトもありますし,新手の優れた分析サイトもあります.でも,今の主流は紛れもなくデータベースサイトですよね.ウィキの.
ウンチクがウザイと思う人は,結果のグラフだけ拾い読みしていただいて結構です.まあ,このシリーズ記事まるごと読み飛ばしても構いませんw
で,改めて今回のテーマ(というか教材)は「デュオモンパにおいて,火力差が獲得経験値にどのような影響を与えるか」です.これをシミュレーションでアプローチしてみましょう.
実際にデュオモンパをしてデータを集める実証ではなくて,お手軽なシミュレーションを選ぶ理由は,ずばり
お手軽だから
です.いや,マジで.
シミュレーションがお手軽というよりも,実測の方が無茶苦茶大変だってのが正解に近いですね.実測するには,モンパをソロで10分以内にクリアできるだけの火力がある二人で測定しなければなりません.さらに,ノイズを減らすためには同じ職で同じスキルを同じだけ振ってて欲しいわけです.そして,火力を調整しながら最低でも数十回,願わくば数百回もの計測をしなければなりません.いやぁ,無理でしょ.
ちょっとした手間隙を惜しんでシミュレーションに逃げるのは考え物ですが,実測が困難なものをシミュレーションでアタリをつけるのは悪いことではありません.というか,そのためのシミュレーションです.
で,アプローチですが,
- 攻撃力の分布を確かめる.
- 攻撃力に差が出たとき,ルートを取れる確率がどう変わるかを確かめる.
- 擬似狩りを行ってルートを取れる確率を調べる.
という順番になります.
最終的にはやはり擬似狩りに持ち込まないと判断つきません.しかし,いきなり擬似狩りから入るのは考え物です.あえて擬似狩りと書きましたが,シミュレーションで実際の狩りを再現することは困難で,簡単ななんちゃって狩りにしかなりません.そんなシミュレーションの結果をいきなり見せられても,それで何か重要な判断を下すのは無理があります.
ではどうするかというと,攻撃力分布を把握して,つまり周辺知識を蓄えておいて,最終的な判断に備えるわけです.
で,攻撃力の分布を確かめるにも手順を踏みます.まずはクリティカルなし一回攻撃から始めて,多段攻撃やクリティカルの影響を取り込んでいきます.物理の授業で物体の運動を習うとき,摩擦の影響を無視した等速運動,等加速度運動から始まって,摩擦や空気抵抗の影響を加えていきますが,そんな感じです.
◆1.理論背景◆
まず,ここの整理から始めます.MapleStoryの攻撃力の算出式はMapleStoryWikiさんに詳しく載っていますが,次郎はそれとはちょっと違う視点から見ていますので,混乱を避けるためにざっとおさらいをしておきましょう.
まず,MapleStoryの攻撃力は一定ではなく,決められた範囲内でランダムに決まります.
敵を攻撃したときのダメージ(予ダメ)が,攻撃する度に値が違うのは皆さんご存知の通りです.それは攻撃力が,最大攻撃力最小攻撃力の範囲内でランダムに決まる仕組みになっているからです.そのため,予ダメが一定の範囲内でバラツキを見せます.
サブローをモデルにしますので,魔職の攻撃力を見てみますと,
- 最大攻撃力 = 1.00×(4×INT+LUK)×(総魔力/100)
- 最小攻撃力 = 最大攻撃力×熟練度
ということですね.一回攻撃するたびに,この最大値と最小値の間でランダムに攻撃力が決定されます.
敵に与えるダメージは,その攻撃力を使って計算するのですが,
- 魔法攻撃のダメージ = (算出攻撃力×アンプ×属性判定×属性武器補正)
×(スキル攻撃力×クリティカル追加ダメージ)
×(100-敵魔法防御率)/100
となります.ただし攻撃一発分です.多段攻撃の場合は,このダメージが攻撃回数分加算されます.これらの式は,MapleStoryWikiさんに紹介されている式ですが,ダメージの式は丸写しではなく,次郎が手直ししています.
MapleStoryWikiさんの式だと,攻撃回数がダメージ式の中に入っていますが,それだと多段攻撃の意味がなくなってしまいます.例えば三回攻撃のエンジェルレイであれば,次郎が手直ししたダメージ式を三回適用することになります.つまり,その度に乱数を使って「算出攻撃力」を算出します.
ダメージ式の中に攻撃回数が入ると,乱数を使うのは一回で,それを三倍してダメージを計算することになってしまいます.そうなると,エンジェルレイが敵に当たったとき,予ダメの数値が三つ敵の頭上に表示されてしかもその数値が異なってるのはどういうこっちゃって話です.
いやいや,予ダメの合計を計算するだけだから,三倍しても良いじゃん!という向きもあるでしょう.が,それでは多段攻撃の意味がありません.「100%三回攻撃」と「300%一回攻撃」とでは,予ダメの分布がまるで違ってくるのですから.
参考記事:単発攻撃と複数発攻撃の話(1),単発攻撃と複数回攻撃の話(2)
つまり,攻撃力と言ってるのは,最初の二つの式(最大攻撃力と最小攻撃力)のから出てくるものを指しているわけです.MapleStoryのシステムとしてはそれが正しいのでしょう.最大攻撃力も最小攻撃力も,キャラ本体で決定されますので,予め計算しておいてキャラの属性テーブル(というか構造体)に持たせておくことが可能です.
で,実際にスキルを発動した時に決まる攻撃回数とか属性武器とかを加味し,最後に敵の防御力などの補正が入って最終的なダメージが決定されるのでしょう.
つまり,予ダメを決定する要素は以下の三つに分類されます.
- 攻撃側のステータスでのみ決まるもの
最大・最小攻撃力,熟練度 - 攻撃側側の発動スキルと敵の都合で決まるもの
スキル攻撃力,属性判定など - 敵の都合でのみ決まるもの
敵魔法防御率
実際のMapleStoryのプログラムでの予ダメ算出手順は,たぶん,この分類の順番でやってるものと考えられます.
次郎はこれを次の二つに分類して考えています.
- 攻撃側の都合だけで決まるもの
- 防御側の都合を含めないと決まらないもの
つまり,
- 魔法攻撃のダメージ = (攻撃側で決まるダメージ)×(防御側を含めて決まる補正値)
= (算出攻撃力×アンプ×属性武器補正×スキル攻撃力×クリティカル追加ダメージ)
× (100-敵魔法防御率)/100×属性判定
という考え方です.分析をかけたりシミュレーションをしたりするときに,敵が聖弱点だとか防御率が低いとか,そういう要素は除外したいのです.そういうのは,実際に狩る敵が決まった時点で補正をかければ良い話で,それを引きずって議論を進める理由はありません.
つまり,理論的に話を進めるには,
- 魔法攻撃のダメージ = 攻撃補正 × 防御補正
- 攻撃補正 = (算出攻撃力×アンプ×属性武器補正×スキル攻撃力×クリティカル追加ダメージ)
- 防御補正 = (100-敵魔法防御率)/100×属性判定
と考えるのがスッキリと話の筋が見えやすいということです.
さらにこれを簡素化して,
- 攻撃補正 = 算出攻撃力×クリティカル追加ダメージ
とします.属性武器補正やスキル攻撃力を算出攻撃力の中に組み込んでしまいます.
と,これまでの議論を整理すると,
- 最大攻撃力 = 1.00×(4×INT+LUK)×(総魔力/100)×アンプ×属性武器補正×スキル攻撃力
- 最小攻撃力 = 最大攻撃力×熟練度
であり,
- 算出攻撃力 = 最大攻撃力と最小攻撃力の範囲内でランダムに決まる攻撃力
- 攻撃補正 = 算出攻撃力×クリティカル追加ダメージ
- 魔法攻撃のダメージ = 攻撃補正 × 防御補正
ということです.この「攻撃補正」という言葉は,馴染みもなくとっつき難さがあります.そこで苦し紛れに,この攻撃補正を攻撃力と呼ぶことにします.
他で出てくる攻撃力と意味が違うので混乱も懸念されますが,そもそもMapleStoryでいう攻撃力という言葉もかなりいい加減に使われているのですが,理詰めの話をするのでもなければちゃんと通じています.色んな「攻撃力」がありますが,どれも予ダメの計算式の一部分を指しています.話の最終目的地は予ダメですから,大きな混乱もなくだいたい通じるのでしょう.
とうことで,今日はここまで.