2005年12月17日

2.熟練度の関係する部分の検証

まず、高レベル魔の魔法ダメが、低レベル魔よりも安定していることに目をつけた。
このことから式に熟練度が関係する部分と関係しない部分があることが推測される。
つまり、魔法ダメージ計算式は以下の図のような形になっていると推測される。

図的説明.bmp

この考えだと、ダメージの式は以下のようであると推測される。
最大ダメ式
(熟練度に関係する部分 + 関係しない部分) * 魔法攻撃力
最小ダメ式
(熟練度に関係する部分 * 熟練度 * 熟練度係数 + 関係しない部分) * 魔法攻撃力


まず、熟練度に関係する部分に魔力が関係しているのは明らかなので、
INTが関係しているかいないかを確認する。
装備補正を利用して、魔力を同じ数値・INTを異なる数値にして検証する。

データC
使用スキルEB1(魔攻20・熟練度15%
INT20・魔力65
ダメ幅10〜47
INT51・魔力65
ダメ幅13〜50
INT65・魔力65
ダメ幅15〜52

使用スキルMC20(魔攻40・熟練度60%
INT20・魔力65
ダメ幅56〜95
INT51・魔力65
ダメ幅62〜101
INT65・魔力65
ダメ幅65〜104


INTにだけ差をつけた場合、最大ダメ・最小ダメの上がり幅は等しかった。
よって、INTは熟練度の関係する部分に影響がないと考えられる。
つまり、熟練度の関係する部分は魔力とその係数で構成される

この時点で推測できる式は以下のものである。
最大魔法ダメ式 (魔力 * 係数 + 熟練度が関係しない部分) * 魔攻
最小魔法ダメ式 (魔力 * 係数 * 熟練度 + 熟練度が関係しない部分) * 魔攻
    または (魔力 * 係数 * 熟練度 * 0.9 + 熟練度が関係しない部分) * 魔攻


熟練度係数は存在しないか、物理攻撃の式から0.9ではないかと推測してみた。
これらの式から算出される最大ダメ・最小ダメの差は、以下のものである。

魔力 * 係数 * (1 - 熟練度) * 魔攻
または
魔力 * 係数 * (1 - 熟練度 * 0.9) * 魔攻


実測値のダメ差から導かれる係数が同じような値をとるなら、
この仮定式は正しいと言うことができる。
よって次の検証は、いくつかのデータを採り係数を算出し比較する方法をとる。

係数の算出方法は以下の方法をとる。
まず、実測によって最大ダメと最小ダメを採る。
次に、最大ダメ−最小ダメで計算すると、以下の値が出る。

ダメ差1:魔力 * 係数 * (1 - 熟練度) * 魔攻
または
ダメ差2:魔力 * 係数 * (1 - 熟練度 * 0.9) * 魔攻


これを魔力・魔攻・(1−熟練度)or(1−熟練度*0.9)で割れば係数が算出される。
どちらかの係数がどのデータでも同じような値をとる場合、
仮定した魔法ダメージ式は正しいと言える。

データD
ダメ幅7〜27
魔力35
魔攻20
熟練度15
係数1 0.033613
係数2 0.033031

データE
ダメ幅10〜47
魔力65
魔攻20
熟練度15
係数1 0.033613
係数2 0.032904

データF(記載されている検証法より粗い検証
ダメ幅167〜379
魔力375
魔攻20
熟練度15
係数1 0.033255
係数2 0.032678

データG
ダメ幅35〜62
魔力46
魔攻40
熟練度60
係数1 0.036685
係数2 0.0319

データH(記載されている検証法より粗い検証
ダメ幅532〜759
魔力375
魔攻40
熟練度60
係数1 0.037833
係数2 0.032899


とりあえずここで係数のみ抜き出してみる。

D係数1 0.033613
E係数1 0.033613
F係数1 0.033255
G係数1 0.036685
H係数1 0.037833

D係数2 0.033031
E係数2 0.032904
F係数2 0.032678
G係数2 0.0319
H係数2 0.032899


どちらの係数もD〜Fが熟練度15、G〜Hが熟練度60のものだが、
ダメ差1の係数の方は熟練度の違いを境に、
算出値に大きく差が出ているのが見て取れる。
何を言いたいかというと、これは間違っている印である、ということだ。
それに対して、ダメ差2の係数の算出値は安定している。
よってダメ差2の方を採用することにする。

現状でたつ式は以下のものである
最大魔法ダメ式 
(魔力 * 係数 + 熟練度が関係しない部分) * 魔攻
最小魔法ダメ式 
(魔力 * 係数 * 熟練度 * 0.9 * 熟練度が関係しない部分) * 魔攻


これで、式の大体の形が分かったので、次は係数を確定する作業に移る。
上の結果では大体0.033辺りに収束するように見えるが、
小数点以下の誤差があるため、確定しにくい。
例えば、最大ダメージが15という実測値が出ても、真の値は15.99...という値
である可能性が残され、どんな詳細な検証でも±1の誤差の可能性がある。

そこで、高い値での詳細な検証を行う。
ダメ差が高くなればなるほど、±1の誤差の影響が小さくなるためである。
ただし値が大きい分、検証の労は増すのだが。
ダメ差を検証前に算出し、それと同じ値が出れば上記の仮定は正しい。

とりあえず、係数を0.033として式をたててみると、以下のようになる。
最大魔法ダメ式 
(魔力 * 3.3 + 熟練度の関係しない部分) * 魔攻 / 100
最小魔法ダメ式 
(魔力 * 3.3 * 熟練度 * 0.9 + 熟練度の関係しない部分) * 魔攻 / 100


下記の条件で検証を行う。
仮計算式からの算出ダメ差が652.1328。
652ダメ幅があることになる。
単純計算で3000回強は試行が必要。
実際は小数点以下も乱数決定に影響するっぽいので、
平均してその2倍以上は当てなければならない計算。
6500回以上・・・これは何の修行なのだろうか?
しかも、魔防0のMOBだけ湧くような都合のいいマップがないのが大変さに拍車を。

データI
レベル 62
INT 349
魔力 358
使用スキル FA30(魔攻120・熟練度60)
仮計算式からの算出ダメ差 652.1328
実測最大ダメ 2144
実測最小ダメ 1492
実測ダメ差 652
※実際やってみると試行回数は4000程度だった。


このデータから算出される固定値は0.03299328である。
誤差を考えると0.033044〜0.032943の内に真の値がある。
これから考えると、固定値はキリのよい0.033である可能性が高い

よってここまでで以下の式が確定する。
最大魔法ダメ式 (魔力 * 3.3 + X) * 魔攻 / 100
最小魔法ダメ式 (魔力 * 3.3 * 熟練度 * 0.9 + X) * 魔攻 / 100

熟練度の関係しない部分はXに置き換えた。

親記事に戻る
posted by 安心 at 19:00 | Comment(0) | TrackBack(0) | めいぽ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。