風来のシレン3の通常攻撃における与ダメージ計算式が判明したかもしれないという話
前書
このページは2024シレン投稿祭アドベントカレンダーの12/2分である。
つい先日の話だが、ようやくダメージ計算式の基本的な部分の特定に成功した。これまではとあるウェブページにレベルによる攻撃力の係数の数値のみが並べられているだけで、実際のダメージ計算式としては何の参考にもならずメモ書きのようになっていた。そこで、いくつかの観点に着目した検証と今までの私のみが知っている特定条件のときの挙動を要素に計算式を導出してみる流れとなった。要点結論だけをまとめると人様の記事からそのまま引用した疑いをかけられかねないので、感情混じりの検証背景、結果ならびに導出の過程を並べていく形とする。
※注意
記事中に出てくる結果表は手動検証にて観測された範囲の数値が書かれています。実際の数値や範囲とは別です
1. レベルによる攻撃力補正(レベル攻撃力)
まず基底となるレベル攻撃力について掘り下げた。検証方法は簡単で、マムルなどの防御最弱のモンスター相手にLv1から99まで(全部やる必要はない)でそれぞれ素手で殴ってみればよい。

この部分を調べるだけでもマムル達の総犠牲数は15000以上。南無。
なんとLv99でも22-29ダメージ止まりという有り様である。。シレン3では攻撃力のほとんどを武器に依存し素手でも楽しく冒険できるのはせいぜい3階まで。持ち込み無しダンジョンのだいたい4階から出現する妖怪にぎり見習いに至っては5確ほどにまで急落するトンデモ設計である。これを基に計算式を立てていくのは恐ろしくもあるが、とりあえずレベル攻撃力×ちから-防御力と仮置きする。Lv1で1前後、Lv99だと3.5~4くらいだろうか。
2. 武器の基本値による補正
数ある検証のなかでこれが最も時間がかかった。というのも、補正レベルのわずかな変動を確認するにあたってゲーム内では小数未満の数を知ることができず、端の値がなかなか判明しないからである。先ほどのレベル攻撃力の話に戻るが、Lv1素手でマムル相手に出る3-6ダメージのうち3ダメージが出る割合が約4.3%、6ダメージが出る割合が約6.7%と普段プレイする分にはたまにしか見かけない見逃しがちな値も紛れており、正しい整数範囲を何のヒントもなしに判断するのはそう甘い作業ではない。記憶にある中で一番苦しんだのはLv25素手の検証で、最小の14ダメージが出る確率が約0.11%。少なくとも1800回は殴らないと推定レベルにもっていくことができない。
そして、武器の基本値の補正を検証するとなるとさらに必要な殴り回数は増大する。他の要素を初期値にするべくちから8/検証に使う各武器を下限までサビさせていざ開始。しかしまあこれがなかなか進まない。

数値の横に付いている+,-は値が出る確率のメモ。-がついているものはほとんど出なかった。
ほとんどが1桁ダメージの中で端の値を探し出すのはまさに苦行。1項目あたり3~4フロアをフル滞在し、ひたすらに端の値が出ることを祈り続けた。レベルが上がれば同じ武器の強さ0でも補正の上昇量も多くなっており、その上昇量の変動もおおよそレベル攻撃力と比例していることに気付き、武器の基本値×レベル攻撃力×係数①が計算式に含まれていると予想した。Lv1の素手と剛剣マンジカブラ(基本値20)を比較すると
約2.5=20×(約1)×係数①=20×係数① → 係数①≒0.125
まで推測が進む。また、次に添付する私が最初に行った検証で実用性の高い検証結果が出ていた。

この検証は冒険のかなり終盤を想定したものである。武器の種類間でのダメージの差も大きくなっており、Lv99で分裂クラゲゲーン(防御30)を殴ったときを見てみると、ダメージの中央値の差がカタナ(基本値8)と剛剣マンジカブラ(基本値20)で約6、カタナと奉剣ミツノシラギ(基本値40)に至っては約15とかなり大きくなった。これも仮定の式に代入してみると
・カタナ - 剛剣マンジカブラ間
約6=(20-8)×(約3.5~4)×係数①=42~48×係数①
→ 係数①≒0.125~0.167
・カタナ - 奉剣ミツノシラギ間
約15=(40-8)×(約3.5~4)×係数①=112~140×係数①
→ 係数①≒0.107~0.134
と誤差は大きいもののLv1のときで計算した定数倍率と近い値が出てくる。
3. 武器の強さによる与ダメージの変化
計算が邪魔になる武器の強さ以外の計算を仮定したところで、武器の強さによる与ダメージの変化量を求める。先ほど仮導出した基本値補正の定数倍率①と下の表を使用するとLv1での武器の強さ0と20のときで発生する差が

剣の強さ5+1αを除き武器の基本値=武器の強さ
与ダメージ差={ (強さnの与ダメ)-(強さmの与ダメ) } ÷ レベル攻撃力-強さの差分×基本値補正(=定数倍率①)
={ (21~28)-(3~6) } ÷ (約1)-20×約0.125
≒(18~22)-2.5=15.5~19.5
となり、武器の強さ1あたり0.75~1くらいのダメージ差が発生することが分かった。(しかし、これはあまりに誤差が大きすぎて求まったとは言わない)
4. ちからの増減による与ダメージの変化
同じ表から、今度はちからの増減による与ダメージの変化を調べる。ちから8とちから12の差は…
ちから1あたりの与ダメ変動量
={ (ちからnの与ダメ)-(ちからmの与ダメ) } ÷ (ちから差分)
={ (7~11)-(3~6) } ÷ (12-8)=(4~5)÷4
≒1~1.125 (Lv1)
となった。ちなみに、検証結果の表が縦長の理由で本文中に添付できないがこの変動量もレベルが上がるほど大きくなっており、どうやらレベル攻撃力が加味されている可能性が高いことが分かっている。(付録の図から計算できます)
5. 相手の防御力はダメージ計算にどのように関わっているのか
ここで、今までの計算の精度がかなり悪いことにお気づきだろうか。ほとんどの計算の結論を"≒"で済ませてきたが、≒ではさすがに正確な計算式に辿り着けない。そこで2章で扱った基本値による補正を求めた際に使用した表にもう一度注目してみると、武器の強さ10、Lv99ちから8のときに分裂クラゲゲーン(防御30)を殴ったときの与ダメージが
カタナ → 24~39 → 約31.5±7.5(23.8%)
剛剣マンジカブラ → 29~46 → 約37.5±8.5(22.7%)
奉剣ミツノシラギ → 37~56 → 約46.5±9.5(20.4%)
と明らかにバラつき%が一致していないし、そもそもバラつきが大きすぎる(シレンシリーズの乱数は大体±12.5%)ことに目を向けたい。これは防御の計算が乱数を含む計算の項の外である可能性を意味する。
では、同じステータスで別のモンスターを殴ったらどうなるか参照してみよう。分裂クラーゲン(防御21)を殴ったときの与ダメージに注目すると
カタナ → 33~48 → 約40.5±7.5(18.5%)
剛剣マンジカブラ → 38~55 → 約46.5±8.5(18.3%)
奉剣ミツノシラギ → -(※未確認)
とまだバラつき%が大きいが、、、分裂クラゲゲーンを殴ったときと比べて最小・最大ともにちょうど9ダメージずつ増加していることに気付いただろうか。(ここでは記事量の都合で示さないが、分裂クラゲゲーン達に防御ダウン効果を与えても差分は9ダメージのままである)
防御の計算は他の計算の最後に引き算するという形で行われていると見るべきであることが判明した。
6. 見えづらい乱数計算
ついでに乱数計算についても整理してしまおう。ダメージ計算式のおおまかな形が(攻撃力計算)-(防御力計算)であることが分かったならば、防御力の引き算を考えずの仮計算したバラつき%がステータスによって変動することから乱数計算も(攻撃力計算)に内包されているとして求め直すのが自然だろう。5章で使用した表の中でできるだけ大きい値のところから参照してみよう。
Lv99/ちから8/武器強さ20/奉剣ミツノシラギ装備時の与ダメージが62~88、これを先に防御分を差し引いてみると92~118、これのバラつきは12.4%。
Lv40(/ちから8/武器強さ20/月虹の太刀装備時)の場合でも元の与ダメージ45~66から防御分を差し引いて75~96、バラつきが12.3%。悪くない精度で近い割合が出た。乱数は常識的に考えれば簡単な分数またはきれいな千分率で設定されるはずなので、一旦近しい値の±1/8で仮置きしよう。
7. その他の計算について、未確認部分など
特効/会心(痛恨)/方向減算/属性の計算も本当は含めたいが、特効(印1つ)は与ダメージ150%、会心は攻撃力計算部分を2倍、方向減算も最終計算結果に割合のかけ算、属性……(属性印って単体で使うか???)とわざわざ検証するほどでもなかったのでここでは除外する。シレン3の会心(痛恨)は攻撃力を2倍にする計算につき、こちらの攻撃力がそこまで高くないor相手のの防御力が高いときに与ダメージが伸びやすい。熱属性モンスターの痛恨の一撃が痛い理由もこれで説明がつく。
8. 1~4章までの計算をやり直して、計算式を確立させる
5章と6章から重要な結果を得たので1~4章での計算をやり直して精度を高める。それでも定数の解に大きな誤差が残る場合は誤差の少ない方の値をさらに簡単な値に近似させる。
レベル攻撃力={ (与ダメージ)+相手の防御力 } ÷ ちから ※素手
={ (3~6)+4 } ÷ 8 ※Lv1/ちから8/対マムル(防御4)
=8.5 ÷ 8
=1.0625
={ (22~29)+4 } ÷ 8 ※Lv99/ちから8/対マムル(防御4)
=29.5 ÷ 8
=3.6875
基本値補正係数(2章の係数①)
={ (基本値nの与ダメ)-(基本値mの与ダメ) }÷ (n-m) ÷ レベル攻撃力
={ (6~9)-(3~6) } ÷ (20-0) ÷ 1.0625
※ Lv1/ちから8/武器強さ0/対マムル/素手と剛剣マンジカブラの比較
≒0.1411
={ (62~88)-(49~71) } ÷ (40-32) ÷ 3.6875
※ Lv9/ちから8/武器強さ20/対分裂クラゲゲーン
/カタナと奉剣ミツノシラギの比較
≒0.1271
→ ≒1/8(0.125)
与ダメージ差={ (強さnの与ダメ)-(強さmの与ダメ) } ÷レベル攻撃力
-(n-m)×基本値補正係数
={ (21~28)-(3~6) }÷1.0625-(20-0)×0.125
※ Lv1/ちから8/対マムル/武器強さ20と0の比較
=20÷1.0625-20×0.125=18.75
武器強さ1あたり0.8161
≒{ (80~103)-(22~29) }÷3.6875-(20-0)×0.125
※ Lv99・防御4・ちから8・強さ20と0の比較
=66÷3.6875-20×0.125≒15.3983
武器強さ1あたり0.7699
→ 武器強さ1あたりのダメージ係数 ≒3/4(0.75)?
ちから1あたりの与ダメ変動量
={ (ちからnの与ダメ)-(ちからmの与ダメ) }÷(A-B)÷レベル攻撃力
={ (7~11)-(3~6) }÷4÷1.0625
※ Lv1/素手/ちから12と8の比較
=4.5÷4÷1.0625
≒1.05882
={(10~15)-(14~19) }÷4÷1.0625
※ Lv1/カタナ装備/ちから12と8の比較
=4÷4÷1.0625
≒0.94117
={(25~33)-(21~28) }÷4÷1.0625
※ Lv1/剛剣マンジカブラ装備/ちから12と8の比較
=4.5÷4÷1.0625
≒1.05882
→ ちから1あたりのダメージ係数 ≒1?
ここまでシレン3学会追放級に雑にひっくるめたが、計算式の係数が3つ仮算出できたのでざっくりとした概形で計算式を起こすと
与ダメージ
=レベル攻撃力×( 1 ×ちから+ 1/8 ×武器の基本値+ 3/4 ×武器の強さ)
×乱数(7/8~9/8)-防御力
となる。さすがにレベル攻撃力を手計算で特定するのは厳しいので "文明" を解放する。ちから8/素手のときの最大与ダメージ・最小与ダメージをプロットしグラフで近似してみたところ

この中央値(黒線)の式が 6.4ln(レベル+3)となった。底が自然対数の底eになっているので常用対数(底10)に直すと
平均与ダメ=14.7365…log10(レベル+3)
=8×1.842…log10(レベル+3)
≒ 8×15/8(1.875)×log10(レベル+3)
(※ゲーム内では整数部分を実際の与ダメとして扱うので、少し大きい値で近似してよい)
と何やらそれらしい係数が出てきた。全体をまとめると
与ダメ=15/8×log10(レベル+3)
×(ちから+1/8×武器の基本値+3/4×武器の強さ)
×乱数(7/8~9/8)-相手の防御力
とかなり整理された計算式になった。無理やり係数を近似させて推測した結果ではあるが、これまでに検証してきた最小ダメージ/最大ダメージとほぼ一致している。
9. 有名な事例と照らし合わせてみる
せっかく計算式を炙り出しても、合っているかを確かめないと意味が無い。シレン3でよく立ちはだかる場面を例に計算式で説明してみよう。
Q. 同じ強さの武器でも、ボンボンをカタナで攻撃すると爆発させずに倒せるのに隕鉄刀で攻撃すると爆発させてしまいます。なぜですか?
これはツヅラの迷宮でよくある事故の1つである。問いについては武器の基本値の差で生じる話なので武器の基本値に係る部分に注目すればよい。
与ダメ=15/8×log10(レベル+3)
×(ちから+1/8×武器の基本値+3/4×武器の強さ)
×乱数(7/8~9/8)-相手の防御力
のうち、15/8×log10(レベル+3)×(1/8× 8 or 15)
が生じる与ダメージの差であるが、試しにLv20で代入してみると
15/8×log10(23)×1/8× (8 or 15) ≒ 2.553 or 4.787
なので、Lv20では強さが同じでもカタナ装備と隕鉄刀装備で2~3の与ダメージ差があることが分かる。カタナ装備でギリギリセーフなら、隕鉄刀装備だと自爆させてしまう可能性があるのだ。
@余談になるが、ボンボンはHP70の自爆する条件が残りHP14以下なので、最大与ダメージ55前後の状態を考えてみると、、、
55=15/8×log10(23)
×(8+1/8×8+3/4×武器の強さ)
×9/8-7
→ 武器の強さ=16.7797…
55=15/8×log10(23)
×(8+1/8×15+3/4×武器の強さ)
×9/8-7
→ 武器の強さ=15.613…
同じ武器の強さ16でも、カタナ+8ならセーフだが隕鉄刀+1だとアウトなのである。
最後に
実はこれで計算式の導出は終わりではない。白鋼の剣&白鋼の盾を装備したときなどの、剣と盾の強さが+nされた場合の与ダメージの変動については別の計算が必要である。まだ検証回数が不十分なこともあり、来年のイベントに出場する際にでも公開する予定である。
付録:3,4章で扱った検証結果のフルVer

剣の強さ5+1αを除き武器の基本値=剣の強さ