はんまーに乾杯

メダロットSプレイ記

休止

 メダロットSのプレイを休止します。ゲームがつまらなくなったわけではないのですが、新しい娯楽・趣味を始めたく、それに充てる可処分時間の確保のためです。400日間以上、まあよく遊びました。

 発信性と双方向性の高いTwitterでわざわざ言い残すのは気恥ずかしく、かといってゲームを通して知り合った方々に何のメッセージも残さず消えるのも忍びないので、ブログにてひっそりと報告です。あとはすっきり離れるための自己暗示でもあります。

 またやりたくなったときのためにTwitterはてなブログ含めアカウントはそのままにしますが、ログインはしないつもりです。メンションをもらっても反応できないかもしれません。

 辞め時は長いこと探っていて、2.5周年関連が終わるまでは続けようかと思っていたものの、去り際に効率を気にしても実りがないですね。というわけで最後に☆3プレゼントガチャを引いて締めます。それでは。

攻撃結果の比率計算 #2_付録

付録

(表が重いので別ページに分けました。)

 攻撃結果の比率計算 #2にて測定およびフィッティングに使用した全データ112点を表1に載せた。表下にある図1から図3では画像で同じものを載せている。xが生起数、pが標本比率および比率の最尤値、plが下側95%信頼区間、puが上側95%信頼区間

表1

No. 成功 攻スキル 耐性 回避 補助スキル n x回避 xかすり x防御 xヒット xクリ p回避 pかすり p防御 pヒット pクリ pl回避 plかすり pl防御 plヒット plクリ pu回避 puかすり pu防御 puヒット puクリ
1 856 99 658 0 0 62 0 0 52 0 10 0 0 0.8387 0 0.1613 0 0 0.7233 0 0.0802 0.0578 0.0578 0.9198 0.0578 0.2767
2 2114 99 658 0 0 82 0 0 52 6 24 0 0 0.6341 0.0732 0.2927 0 0 0.5205 0.0273 0.1974 0.044 0.044 0.7378 0.1525 0.4035
3 313.2 99 1467 0 43 108 0 0 107 1 0 0 0 0.9907 0.0093 0 0 0 0.9495 0.0002 0 0.0336 0.0336 0.9998 0.0505 0.0336
4 960 99 1467 0 43 135 0 0 132 2 1 0 0 0.9778 0.0148 0.0074 0 0 0.9364 0.0018 0.0002 0.027 0.027 0.9954 0.0525 0.0406
5 1059.6 99 1467 0 43 490 0 0 463 5 22 0 0 0.9449 0.0102 0.0449 0 0 0.9208 0.0033 0.0283 0.0075 0.0075 0.9634 0.0237 0.0672
6 1306.8 99 1467 0 43 187 0 0 174 7 6 0 0 0.9305 0.0374 0.0321 0 0 0.8841 0.0152 0.0119 0.0195 0.0195 0.9625 0.0756 0.0685
7 1477.84 99 1467 0 43 93 0 0 83 5 5 0 0 0.8925 0.0538 0.0538 0 0 0.8111 0.0177 0.0177 0.0389 0.0389 0.9472 0.121 0.121
8 1543.2 99 1467 0 43 208 0 0 186 9 13 0 0 0.8942 0.0433 0.0625 0 0 0.8442 0.02 0.0337 0.0176 0.0176 0.9325 0.0805 0.1045
9 1698.84 99 1467 0 43 156 0 0 140 10 6 0 0 0.8974 0.0641 0.0385 0 0 0.8388 0.0312 0.0142 0.0234 0.0234 0.9402 0.1147 0.0818
10 1718.4 99 1467 0 43 117 0 0 110 1 6 0 0 0.9402 0.0085 0.0513 0 0 0.8806 0.0002 0.019 0.031 0.031 0.9756 0.0467 0.1083
11 1756.56 99 1467 0 43 562 0 0 526 15 21 0 0 0.9359 0.0267 0.0374 0 0 0.9124 0.015 0.0233 0.0065 0.0065 0.9547 0.0436 0.0566
12 2314.8 99 1467 0 43 264 0 0 237 12 15 0 0 0.8977 0.0455 0.0568 0 0 0.8547 0.0237 0.0321 0.0139 0.0139 0.9315 0.0781 0.092
13 313.2 99 1603 0 150 120 0 0 119 1 0 0 0 0.9917 0.0083 0 0 0 0.9544 0.0002 0 0.0303 0.0303 0.9998 0.0456 0.0303
14 735.6 99 1603 0 150 232 0 0 228 3 1 0 0 0.9828 0.0129 0.0043 0 0 0.9564 0.0027 0.0001 0.0158 0.0158 0.9953 0.0373 0.0238
15 736.8 99 1603 0 150 750 0 0 737 9 4 0 0 0.9827 0.012 0.0053 0 0 0.9705 0.0055 0.0015 0.0049 0.0049 0.9907 0.0227 0.0136
16 738 99 1603 0 150 122 0 0 122 0 0 0 0 1 0 0 0 0 0.9702 0 0 0.0298 0.0298 1 0.0298 0.0298
17 835.2 99 1603 0 150 172 0 0 169 2 1 0 0 0.9826 0.0116 0.0058 0 0 0.9499 0.0014 0.0001 0.0212 0.0212 0.9964 0.0414 0.032
18 1081.2 99 1603 0 150 167 0 0 164 2 1 0 0 0.982 0.012 0.006 0 0 0.9484 0.0015 0.0002 0.0218 0.0218 0.9963 0.0426 0.0329
19 2344.8 99 1603 0 150 139 0 0 128 3 8 0 0 0.9209 0.0216 0.0576 0 0 0.8628 0.0045 0.0252 0.0262 0.0262 0.9598 0.0618 0.1103
20 4209.6 99 1603 0 150 206 0 0 187 11 8 0 0 0.9078 0.0534 0.0388 0 0 0.8597 0.027 0.0169 0.0177 0.0177 0.9436 0.0935 0.0751
21 2079.6 99 2208 0 0 58 0 0 51 0 7 0 0 0.8793 0 0.1207 0 0 0.767 0 0.0499 0.0616 0.0616 0.9501 0.0616 0.233
22 2079.6 99 2208 0 51 61 0 0 54 3 4 0 0 0.8852 0.0492 0.0656 0 0 0.7778 0.0103 0.0182 0.0587 0.0587 0.9526 0.1371 0.1595
23 2079.6 99 2208 0 150 87 0 0 80 6 1 0 0 0.9195 0.069 0.0115 0 0 0.8412 0.0257 0.0003 0.0415 0.0415 0.967 0.1441 0.0624
24 313.2 99 3314 0 150 47 0 0 46 1 0 0 0 0.9787 0.0213 0 0 0 0.8871 0.0005 0 0.0755 0.0755 0.9995 0.1129 0.0755
25 735.6 0 3314 0 150 47 0 0 47 0 0 0 0 1 0 0 0 0 0.9245 0 0 0.0755 0.0755 1 0.0755 0.0755
26 735.6 99 3314 0 150 182 0 0 181 1 0 0 0 0.9945 0.0055 0 0 0 0.9698 0.0001 0 0.0201 0.0201 0.9999 0.0302 0.0201
27 736.8 0 3314 0 150 65 0 0 65 0 0 0 0 1 0 0 0 0 0.9448 0 0 0.0552 0.0552 1 0.0552 0.0552
28 736.8 25 3314 0 150 44 0 0 44 0 0 0 0 1 0 0 0 0 0.9196 0 0 0.0804 0.0804 1 0.0804 0.0804
29 736.8 50 3314 0 150 69 0 0 68 1 0 0 0 0.9855 0.0145 0 0 0 0.9219 0.0004 0 0.0521 0.0521 0.9996 0.0781 0.0521
30 736.8 75 3314 0 150 59 0 0 59 0 0 0 0 1 0 0 0 0 0.9394 0 0 0.0606 0.0606 1 0.0606 0.0606
31 736.8 99 3314 0 150 610 0 0 607 3 0 0 0 0.9951 0.0049 0 0 0 0.9857 0.001 0 0.006 0.006 0.999 0.0143 0.006
32 738 0 3314 0 150 45 0 0 45 0 0 0 0 1 0 0 0 0 0.9213 0 0 0.0787 0.0787 1 0.0787 0.0787
33 738 99 3314 0 150 92 0 0 91 1 0 0 0 0.9891 0.0109 0 0 0 0.9409 0.0003 0 0.0393 0.0393 0.9997 0.0591 0.0393
34 1081.2 99 3314 0 150 108 0 0 107 1 0 0 0 0.9907 0.0093 0 0 0 0.9495 0.0002 0 0.0336 0.0336 0.9998 0.0505 0.0336
35 1306.8 99 3314 0 150 63 0 0 61 2 0 0 0 0.9683 0.0317 0 0 0 0.89 0.0039 0 0.0569 0.0569 0.9961 0.11 0.0569
36 2344.8 99 3314 0 150 110 0 0 108 2 0 0 0 0.9818 0.0182 0 0 0 0.9359 0.0022 0 0.033 0.033 0.9978 0.0641 0.033
37 3244.8 99 3314 0 150 94 0 0 87 4 3 0 0 0.9255 0.0426 0.0319 0 0 0.8526 0.0117 0.0066 0.0385 0.0385 0.9695 0.1054 0.0904
38 4209.6 99 3314 0 150 92 0 0 90 1 1 0 0 0.9783 0.0109 0.0109 0 0 0.9237 0.0003 0.0003 0.0393 0.0393 0.9974 0.0591 0.0591
39 2076.36 99 216.75 282 5 240 0 1 114 10 115 0 0.0042 0.475 0.0417 0.4792 0 0.0001 0.4104 0.0202 0.4145 0.0153 0.023 0.5402 0.0753 0.5444
40 7881.17 99 216.75 282 5 102 0 0 21 2 79 0 0 0.2059 0.0196 0.7745 0 0 0.1322 0.0024 0.6811 0.0355 0.0355 0.2973 0.069 0.8514
41 204 99 384 404 43 171 10 25 131 4 1 0.0585 0.1462 0.7661 0.0234 0.0058 0.0284 0.0969 0.6954 0.0064 0.0001 0.1049 0.2082 0.8273 0.0588 0.0322
42 453.6 99 384 404 43 274 11 37 202 11 13 0.0401 0.135 0.7372 0.0401 0.0474 0.0202 0.0969 0.6809 0.0202 0.0255 0.0707 0.1813 0.7883 0.0707 0.0798
43 968.76 99 384 404 43 380 1 20 294 28 37 0.0026 0.0526 0.7737 0.0737 0.0974 0.0001 0.0324 0.7282 0.0495 0.0695 0.0146 0.0801 0.8148 0.1047 0.1317
44 2079.6 99 920 567.2 0 114 0 1 89 3 21 0 0.0088 0.7807 0.0263 0.1842 0 0.0002 0.6935 0.0055 0.1178 0.0318 0.0479 0.8528 0.075 0.2677
45 2079.6 99 920 567.2 51 98 1 3 79 9 6 0.0102 0.0306 0.8061 0.0918 0.0612 0.0003 0.0064 0.7139 0.0429 0.0228 0.0555 0.0869 0.879 0.1672 0.1285
46 2079.6 99 920 567.2 150 92 4 5 76 1 6 0.0435 0.0543 0.8261 0.0109 0.0652 0.012 0.0179 0.733 0.0003 0.0243 0.1076 0.1223 0.8972 0.0591 0.1366
47 208.8 99 820.2 582 1 68 3 6 59 0 0 0.0441 0.0882 0.8676 0 0 0.0092 0.0331 0.7636 0 0 0.1236 0.1822 0.9377 0.0528 0.0528
48 473.6 99 820.2 582 1 86 2 2 77 2 3 0.0233 0.0233 0.8953 0.0233 0.0349 0.0028 0.0028 0.8106 0.0028 0.0073 0.0815 0.0815 0.951 0.0815 0.0986
49 490.4 99 820.2 582 1 56 2 5 43 2 4 0.0357 0.0893 0.7679 0.0357 0.0714 0.0044 0.0296 0.6358 0.0044 0.0198 0.1231 0.1962 0.8702 0.1231 0.1729
50 491.2 99 820.2 582 1 277 5 18 233 11 10 0.0181 0.065 0.8412 0.0397 0.0361 0.0059 0.039 0.7927 0.02 0.0174 0.0416 0.1008 0.8821 0.0699 0.0654
51 492 99 820.2 582 1 91 1 7 74 3 6 0.011 0.0769 0.8132 0.033 0.0659 0.0003 0.0315 0.7178 0.0069 0.0246 0.0597 0.1521 0.8872 0.0933 0.138
52 556.8 99 820.2 582 1 67 3 3 58 1 2 0.0448 0.0448 0.8657 0.0149 0.0299 0.0093 0.0093 0.7603 0.0004 0.0036 0.1253 0.1253 0.9367 0.0804 0.1037
53 725.6 99 820.2 582 1 152 1 7 122 7 15 0.0066 0.0461 0.8026 0.0461 0.0987 0.0002 0.0187 0.7304 0.0187 0.0563 0.0361 0.0926 0.8627 0.0926 0.1575
54 1563.2 99 820.2 582 1 103 1 2 71 11 18 0.0097 0.0194 0.6893 0.1068 0.1748 0.0002 0.0024 0.5906 0.0545 0.107 0.0529 0.0684 0.7769 0.1831 0.2621
55 345.6 99 2508 613.2 0 176 5 22 147 2 0 0.0284 0.125 0.8352 0.0114 0 0.0093 0.08 0.772 0.0014 0 0.065 0.1831 0.8868 0.0404 0.0207
56 585.6 99 2508 613.2 0 179 2 8 167 2 0 0.0112 0.0447 0.933 0.0112 0 0.0014 0.0195 0.8858 0.0014 0 0.0398 0.0862 0.9649 0.0398 0.0204
57 835.2 99 2508 613.2 0 165 1 8 152 3 1 0.0061 0.0485 0.9212 0.0182 0.0061 0.0002 0.0212 0.869 0.0038 0.0002 0.0333 0.0933 0.9574 0.0522 0.0333
58 1089.6 99 2508 613.2 0 215 2 7 194 5 7 0.0093 0.0326 0.9023 0.0233 0.0326 0.0011 0.0132 0.8546 0.0076 0.0132 0.0332 0.0659 0.9385 0.0534 0.0659
59 1306.8 99 2508 613.2 0 127 1 2 112 5 7 0.0079 0.0157 0.8819 0.0394 0.0551 0.0002 0.0019 0.8127 0.0129 0.0224 0.0431 0.0557 0.9324 0.0895 0.1103
60 1718.4 99 2508 613.2 0 189 0 3 166 9 11 0 0.0159 0.8783 0.0476 0.0582 0 0.0033 0.823 0.022 0.0294 0.0193 0.0457 0.9213 0.0885 0.1017
61 2344.8 99 2508 613.2 0 151 0 2 129 4 16 0 0.0132 0.8543 0.0265 0.106 0 0.0016 0.7878 0.0073 0.0618 0.0241 0.047 0.9064 0.0664 0.1664
62 4209.6 99 2508 613.2 0 140 2 1 105 2 30 0.0143 0.0071 0.75 0.0143 0.2143 0.0017 0.0002 0.6698 0.0017 0.1495 0.0507 0.0392 0.8193 0.0507 0.2916
63 2079.6 99 2171 865 0 104 2 7 77 6 12 0.0192 0.0673 0.7404 0.0577 0.1154 0.0023 0.0275 0.6452 0.0215 0.0611 0.0677 0.1338 0.8214 0.1213 0.1929
64 2079.6 99 2171 865 51 77 0 3 69 0 5 0 0.039 0.8961 0 0.0649 0 0.0081 0.8055 0 0.0214 0.0468 0.1097 0.9541 0.0468 0.1451
65 2079.6 99 2171 865 150 86 2 6 77 1 0 0.0233 0.0698 0.8953 0.0116 0 0.0028 0.026 0.8106 0.0003 0 0.0815 0.1457 0.951 0.0631 0.042
66 2079.6 99 2807 865 0 98 2 0 83 5 8 0.0204 0 0.8469 0.051 0.0816 0.0025 0 0.7601 0.0168 0.0359 0.0718 0.0369 0.9117 0.1151 0.1545
67 2079.6 99 2807 865 51 94 1 2 86 3 2 0.0106 0.0213 0.9149 0.0319 0.0213 0.0003 0.0026 0.8392 0.0066 0.0026 0.0579 0.0748 0.9625 0.0904 0.0748
68 2079.6 99 2807 865 150 92 5 11 73 2 1 0.0543 0.1196 0.7935 0.0217 0.0109 0.0179 0.0612 0.6964 0.0026 0.0003 0.1223 0.2039 0.8708 0.0763 0.0591
69 261 99 962.5 1003.2 44 143 10 48 84 0 1 0.0699 0.3357 0.5874 0 0.007 0.034 0.2589 0.5021 0 0.0002 0.1248 0.4194 0.669 0.0255 0.0383
70 288 99 962.5 1003.2 44 95 8 22 65 0 0 0.0842 0.2316 0.6842 0 0 0.0371 0.1512 0.5808 0 0 0.1592 0.3294 0.7758 0.0381 0.0381
71 313.2 99 962.5 1003.2 44 170 13 37 118 2 0 0.0765 0.2176 0.6941 0.0118 0 0.0413 0.1581 0.6189 0.0014 0 0.1272 0.2873 0.7624 0.0419 0.0215
72 1028 99 962.5 1003.2 44 77 3 7 62 5 0 0.039 0.0909 0.8052 0.0649 0 0.0081 0.0373 0.6991 0.0214 0 0.1097 0.1784 0.8867 0.1451 0.0468
73 1059.6 99 962.5 1003.2 44 317 7 38 248 9 15 0.0221 0.1199 0.7823 0.0284 0.0473 0.0089 0.0862 0.7328 0.0131 0.0267 0.045 0.1608 0.8265 0.0532 0.0768
74 1221 99 962.5 1003.2 44 119 0 7 110 1 1 0 0.0588 0.9244 0.0084 0.0084 0 0.024 0.8613 0.0002 0.0002 0.0305 0.1174 0.9648 0.0459 0.0459
75 1306.8 99 962.5 1003.2 44 111 3 16 82 3 7 0.027 0.1441 0.7387 0.027 0.0631 0.0056 0.0847 0.6468 0.0056 0.0257 0.077 0.2235 0.8175 0.077 0.1256
76 1756.56 99 962.5 1003.2 44 332 3 18 268 18 25 0.009 0.0542 0.8072 0.0542 0.0753 0.0019 0.0324 0.7606 0.0324 0.0493 0.0262 0.0843 0.8483 0.0843 0.1092
77 2442 99 962.5 1003.2 44 141 3 7 107 6 18 0.0213 0.0496 0.7589 0.0426 0.1277 0.0044 0.0202 0.6797 0.0158 0.0774 0.0609 0.0996 0.8269 0.0903 0.1942
78 2498 99 962.5 1003.2 44 85 0 3 68 3 11 0 0.0353 0.8 0.0353 0.1294 0 0.0073 0.6992 0.0073 0.0664 0.0425 0.0997 0.879 0.0997 0.2198
79 2997.6 99 962.5 1003.2 44 129 2 2 105 4 16 0.0155 0.0155 0.814 0.031 0.124 0.0019 0.0019 0.7359 0.0085 0.0726 0.0549 0.0549 0.877 0.0775 0.1936
80 2079.6 99 2807 1025 150 136 3 17 111 4 1 0.0221 0.125 0.8162 0.0294 0.0074 0.0046 0.0745 0.7407 0.0081 0.0002 0.0631 0.1926 0.8774 0.0736 0.0403
81 287.1 99 406.2 1041 0 73 3 16 47 4 3 0.0411 0.2192 0.6438 0.0548 0.0411 0.0086 0.1308 0.5231 0.0151 0.0086 0.1154 0.3314 0.7525 0.1344 0.1154
82 617.1 99 406.2 1041 0 70 6 9 48 2 5 0.0857 0.1286 0.6857 0.0286 0.0714 0.0321 0.0605 0.5637 0.0035 0.0236 0.1773 0.2301 0.7915 0.0994 0.1589
83 674.3 99 406.2 1041 0 170 7 21 111 11 20 0.0412 0.1235 0.6529 0.0647 0.1176 0.0167 0.0781 0.5763 0.0327 0.0734 0.083 0.1826 0.7242 0.1128 0.1758
84 675.4 99 406.2 1041 0 440 7 40 329 20 44 0.0159 0.0909 0.7477 0.0455 0.1 0.0064 0.0657 0.7044 0.028 0.0736 0.0325 0.1217 0.7877 0.0693 0.1319
85 882.4 99 406.2 1041 0 129 3 14 86 12 14 0.0233 0.1085 0.6667 0.093 0.1085 0.0048 0.0606 0.5783 0.049 0.0606 0.0665 0.1754 0.7472 0.1569 0.1754
86 971.3 99 406.2 1041 0 241 8 15 159 13 46 0.0332 0.0622 0.6598 0.0539 0.1909 0.0144 0.0353 0.5962 0.029 0.1433 0.0644 0.1006 0.7193 0.0905 0.2463
87 1130.8 99 406.2 1041 0 61 4 4 30 6 17 0.0656 0.0656 0.4918 0.0984 0.2787 0.0182 0.0182 0.3614 0.037 0.1715 0.1595 0.1595 0.623 0.2019 0.4083
88 1225.51 99 406.2 1041 0 94 2 3 64 7 18 0.0213 0.0319 0.6809 0.0745 0.1915 0.0026 0.0066 0.5767 0.0305 0.1176 0.0748 0.0904 0.7733 0.1474 0.2856
89 1399.84 99 406.2 1041 0 121 2 9 78 8 24 0.0165 0.0744 0.6446 0.0661 0.1983 0.002 0.0346 0.5525 0.029 0.1314 0.0584 0.1365 0.7295 0.1261 0.2806
90 2747.8 99 406.2 1041 0 133 0 2 66 16 49 0 0.015 0.4962 0.1203 0.3684 0 0.0018 0.4084 0.0704 0.2865 0.0274 0.0533 0.5842 0.188 0.4564
91 313.2 99 1390.8 1438.8 0 102 8 23 71 0 0 0.0784 0.2255 0.6961 0 0 0.0345 0.1486 0.5971 0 0 0.1487 0.3189 0.7833 0.0355 0.0355
92 835.2 99 1390.8 1438.8 0 144 4 14 115 5 6 0.0278 0.0972 0.7986 0.0347 0.0417 0.0076 0.0542 0.7237 0.0114 0.0154 0.0696 0.1577 0.8608 0.0792 0.0885
93 1306.8 99 1390.8 1438.8 0 168 2 12 127 10 17 0.0119 0.0714 0.756 0.0595 0.1012 0.0014 0.0375 0.6838 0.0289 0.0601 0.0423 0.1214 0.8188 0.1067 0.1571
94 2344.8 99 1390.8 1438.8 0 155 4 3 121 8 19 0.0258 0.0194 0.7806 0.0516 0.1226 0.0071 0.004 0.7072 0.0225 0.0754 0.0648 0.0555 0.8431 0.0992 0.1848
95 4209.6 99 1390.8 1438.8 0 101 0 1 70 7 23 0 0.0099 0.6931 0.0693 0.2277 0 0.0003 0.5934 0.0283 0.1502 0.0359 0.0539 0.781 0.1376 0.3218
96 686 87 236.8 1677.6 0 227 9 35 138 22 23 0.0396 0.1542 0.6079 0.0969 0.1013 0.0183 0.1098 0.5411 0.0617 0.0653 0.0739 0.2079 0.6719 0.1431 0.1481
97 705.6 17 236.8 1677.6 0 77 11 16 42 6 2 0.1429 0.2078 0.5455 0.0779 0.026 0.0735 0.1237 0.4279 0.0291 0.0032 0.2413 0.3154 0.6594 0.1619 0.0907
98 2079.6 99 236.8 1677.6 0 163 1 3 81 19 59 0.0061 0.0184 0.4969 0.1166 0.362 0.0002 0.0038 0.4178 0.0717 0.2883 0.0337 0.0528 0.5762 0.176 0.4408
99 2079.6 99 236.8 1677.6 51 214 8 20 117 22 47 0.0374 0.0935 0.5467 0.1028 0.2196 0.0163 0.058 0.4774 0.0656 0.1661 0.0723 0.1406 0.6147 0.1515 0.2811
100 2079.6 99 236.8 1677.6 150 116 6 19 66 15 10 0.0517 0.1638 0.569 0.1293 0.0862 0.0192 0.1016 0.4738 0.0742 0.0421 0.1092 0.2439 0.6606 0.2043 0.1528
101 345.6 99 380.4 1850.4 43 103 13 33 55 2 0 0.1262 0.3204 0.534 0.0194 0 0.0689 0.2318 0.433 0.0024 0 0.2062 0.4196 0.6329 0.0684 0.0352
102 411 99 380.4 1850.4 43 69 6 22 38 2 1 0.087 0.3188 0.5507 0.029 0.0145 0.0326 0.2117 0.4262 0.0035 0.0004 0.1797 0.4421 0.6708 0.1008 0.0781
103 555 99 380.4 1850.4 43 103 8 20 63 10 2 0.0777 0.1942 0.6117 0.0971 0.0194 0.0341 0.1228 0.5106 0.0475 0.0024 0.1473 0.2838 0.7061 0.1713 0.0684
104 1042.8 0 380.4 1850.4 43 355 42 121 177 10 5 0.1183 0.3408 0.4986 0.0282 0.0141 0.0866 0.2916 0.4454 0.0136 0.0046 0.1565 0.3927 0.5518 0.0512 0.0326
105 1742.4 99 380.4 1850.4 43 510 13 73 319 52 53 0.0255 0.1431 0.6255 0.102 0.1039 0.0136 0.1139 0.5819 0.0771 0.0788 0.0432 0.1766 0.6676 0.1316 0.1337
106 2079.6 99 548.4 2262 0 157 3 13 91 16 34 0.0191 0.0828 0.5796 0.1019 0.2166 0.004 0.0448 0.4983 0.0594 0.1549 0.0548 0.1374 0.6578 0.1602 0.2893
107 2079.6 99 548.4 2262 51 118 5 18 77 10 8 0.0424 0.1525 0.6525 0.0847 0.0678 0.0139 0.093 0.5594 0.0414 0.0297 0.0961 0.2303 0.7378 0.1503 0.1292
108 2079.6 99 548.4 2262 150 152 8 35 96 9 4 0.0526 0.2303 0.6316 0.0592 0.0263 0.023 0.1659 0.5496 0.0274 0.0072 0.1011 0.3054 0.7083 0.1094 0.066
109 2079.6 99 2210.4 2674.8 1 109 5 10 83 5 6 0.0459 0.0917 0.7615 0.0459 0.055 0.0151 0.0449 0.6703 0.0151 0.0205 0.1038 0.1623 0.8379 0.1038 0.116
110 2079.6 99 2210.4 2674.8 51 86 5 15 63 1 2 0.0581 0.1744 0.7326 0.0116 0.0233 0.0191 0.101 0.6262 0.0003 0.0028 0.1305 0.2713 0.8223 0.0631 0.0815
111 2079.6 99 2210.4 2674.8 150 71 12 10 48 1 0 0.169 0.1408 0.6761 0.0141 0 0.0905 0.0697 0.5545 0.0004 0 0.2766 0.2438 0.7824 0.076 0.0506
112 203 12 355.2 2932.8 150 307 69 209 29 0 0 0.2248 0.6808 0.0945 0 0 0.1793 0.6254 0.0642 0 0 0.2756 0.7326 0.1328 0.0119 0.0119

f:id:hakamaya:20220313101215p:plain

図1

f:id:hakamaya:20220313101345p:plain

図2

f:id:hakamaya:20220313101440p:plain

図3

【メダロットS】攻撃結果の比率計算 #2

f:id:hakamaya:20220228183832p:plain

攻撃結果比率計算モデルと式

 メダロットSのロボトルでは、攻撃に際して回避、かすり、防御、ヒット、クリティカルの5種類の攻撃結果のうちから1つが選ばれる。回避比率を p_1 、かすり比率を p_2 、防御比率を p_3 、ヒット比率を p_4 、クリティカル比率を p_5 と置く( 0\leq p_x\leq1 )。これらの比率は一部の状況*1を除き、成功 a 、攻撃スキルレベル s_1 、耐性 c 、回避 d 、補助スキルレベル s_2 から特定の式に基づいて計算される。

 ここで、5種類の攻撃結果が次の最大4回の判定を順に経て与えられるモデルを導入する。このモデルを、4段判定モデルと呼ぶことにする。

  1. 回避成功判定。回避成功なら判定終了、失敗ならかすり成功判定に続く。
  2. かすり成功判定。かすり成功なら判定終了、失敗なら防御成功判定に続く。
  3. 防御成功判定。防御成功なら判定終了、失敗ならヒット成功判定に続く。
  4. ヒット成功判定。判定終了。ヒット失敗なら結果はクリティカルになる。

 さらに、式(1)から式(3)に従い、各ステータス a,s_1,c,d,s_2 について防御時のダメージ計算式と同じくスキルレベルをまとめた補正ステータス a',c',d' を導入する。

 a'=a'\left(a,s_1\right)=a\dfrac{s_1+50}{100} \tag{1}

 c'=c'\left(c,s_2\right)=c\dfrac{s_2+50}{100} \tag{2}

 d'=d'\left(d,s_2\right)=d\dfrac{s_2+50}{100} \tag{3}

 各判定における補正ステータス x' についての成功比率を、2つのフィッティングパラメータ \mathrm{C_1}\mathrm{C_2} を用いた \dfrac{\mathrm{C_1}\mathrm{C_2}x'}{a'+\mathrm{C_2}x'} で測定データ全112点にフィッティングし、式(4)から式(8)が得られた。

p_1=\dfrac{0.273\cdot 0.193d'}{a'+0.193d'} \tag{4}

p_2=\left(1-p_1\right)\dfrac{0.193d'}{a'+0.193d'} \tag{5}

p_3=\left(1-p_1-p_2\right)\dfrac{20.9c'}{a'+20.9c'} \tag{6}

p_4=\left(1-p_1-p_2-p_3\right)\dfrac{0.972\left(c'+d'\right)}{a'+0.972\left(c'+d'\right)} \tag{7}

p_5=1-p_1-p_2-p_3-p_4 \tag{8}

 式(5)以下の \left(1-p_1-\cdots\right)入れ子構造は、より上位の判定で失敗した結果のうちから比率が与えられていることを意味する。また、 \dfrac{\mathrm{C_2}x'}{a'+\mathrm{C_2}x'} は、 a' が無限大あるいは x' がゼロで最小値ゼロ、 a' がゼロあるいは x' が無限大で最大値1を取る。 x' には回避、かすり判定で補正回避 d' 、防御判定で補正耐性 c' 、ヒット判定で補正耐性と補正回避の和 c'+d' が相当する。被攻撃機x' が大きいほど各判定における回避や防御の成功比率が増加し、被攻撃機に有利な攻撃結果になりやすくなる。ここで、 \mathrm{C_2} は最大値への収束の速さを意味し、たとえば \mathrm{C_2}=20.9 と大きい防御判定では、他の判定より比較的耐性が成功に対して小さくても防御に成功しやすいという性質を反映している。

 一方で、 \mathrm{C_1} は成功がゼロあるいは耐性ないし回避が無限大で収束する比率を意味する。すなわち、 \mathrm{C_1}=0.273 である回避比率 p_1 は、いかに低成功かつ高回避の条件を与えても、27%程度しか回避しないことを示唆している。対して回避判定以外の \mathrm{C_1} は1で、(上位判定結果を除く)各成功比率は、最大で100%を取るといえる。また、 \mathrm{C_1} の値に関係なく、各比率は最小でゼロを取る関数になっている。

 式(4)から式(8)を用いて、任意の条件での攻撃結果比率を予測できる。応用の章に詳しい。ただし、モデルはまだ仮説の段階で、改良の余地がある。フィッティング結果は測定データ全112点を標本誤差込みで説明できるが、一部条件での測定の不足、および大きな各標本誤差の排除が課題である。どの条件範囲でどの程度良い近似を与えるのかも、詰め切れていない。

 このたびモデル式を公開したことで、モデルを否定もしくはその正当性を補強するようなデータがプレイヤー諸氏から寄せられることを期待する。

手法

セッティング

 比率計算 #1ダメージ計算の測定データに新たに数点追加した、全112通りの条件の測定データ*2を解析に使用した。ここではそれら一つひとつについてセッティングを書かない(大変なので)。計測はすべてストーリー、超襲来、激闘、進撃のいずれかのステージで行っており、パーツさえあれば期間限定のものを除き再現実験が可能である。付録の章にて、測定条件となるステータスを比率と一緒に表にしているので、セッティングに疑問のあるものについては対応するデータ番号を個別に問い合わせてほしい。

攻撃結果比率の推定

 測定データの攻撃結果比率の最尤値には標本比率を用いた。また、その信頼区間はClopper-Pearsonの95%信頼区間を使用した(比率計算 #1の手法_統計的扱いその2を参照)。なお、4段判定モデルにおけるかすり、防御、ヒット成功比率については、それぞれより上位の判定結果の生起数を試行回数から除いたものを新たに試行回数として再定義して信頼区間を計算した。

フィッティング

 各判定における補正ステータス x' についての成功比率を、2つのフィッティングパラメータ \mathrm{C_1}\mathrm{C_2} を用いた \dfrac{\mathrm{C_1}\mathrm{C_2}x'}{a'+\mathrm{C_2}x'} で測定データにフィッティングをした。

 ただし、かすり、防御、ヒット成功比率については \mathrm{C_1}=1 で固定し、 \mathrm{C_2} のみを動かして重み付き最小二乗近似を行った。したがって、ここでは3種の成功比率が1に収束することを仮定している。

 他方で回避成功比率については、かすりと性質が近いとしてかすり成功比率で得られた \mathrm{C_2} の値を流用してこれを固定し、 \mathrm{C_1} のみを動かして重み付き最小二乗近似を行った。したがってここでは回避無限大で比率がいくらになるかをフィッティングで求めていることになる。4種の成功比率のフィッティングでパラメータが実質1つずつとした理由は、 \mathrm{C_1}\mathrm{C_2} を同時に動かしてもフィッティングに大差がない、敏感な測定データでないことに他ならない。

 フィッティングの重みは、各標本の分散の逆数で与えられる。本測定では真の分散は未知であるので、二項分布とした標本分散を近似的に用いたい。しかし実際には、しばしば生起数がゼロを取り、分散が発散および重みがゼロを取ってしまうため、すべての点で簡易的に試行回数の二乗の逆数を重みとして用いた。

結果

 各4回の判定における成功比率について、式(4)から式(7)から求めた予測に対し、実測の成功比率を図1から図4にそれぞれプロットした。

f:id:hakamaya:20220312160556p:plain

図1 回避成功比率のフィッティング評価

f:id:hakamaya:20220312154830p:plain

図2 かすり成功比率のフィッティング評価

f:id:hakamaya:20220312161418p:plain

図3 防御成功比率のフィッティング評価

f:id:hakamaya:20220312161957p:plain

図4 ヒット成功比率のフィッティング評価

 凡例の数字は補助スキルレベルの範囲で、異なるレベル間で同一の傾向を示すことがすなわち式(1)から式(3)による補正ステータスの有効性を示す。各回帰直線は重みを考慮しない最小二乗法で求められたものであることに注意。特にヒット成功比率では、サイズの小さい点に引っ張られて y=x の関係から大きくずれている。

 図では y=x にプロットが並ぶほど真の値に近い良い測定かつそれを反映する良い近似であるといえる。標本誤差で説明できないフィッティングとの残差を持つ標本は、回避で112点中4点(3.6%)、かすりで112点中4点(3.6%)、防御で112点中4点(3.6%)、ヒットで102点中5点(4.9%)であった。ヒット成功比率において標本数が少ないのは、ヒットとクリティカルの生起数すなわち試行回数がともにゼロであったデータが10個あったためである。もとより標本誤差の信頼率が95%であることを踏まえれば、この結果は、4段判定モデルおよびパラメータの値を含めた比率計算式の妥当性を示唆している。

 しかしながら、本質的に他のモデルを否定するものではないことに注意する必要がある。本来は、使用した関数とパラメータでしか測定を説明できないという議論をしなければならず、次回の課題である。ここで簡単に述べておくとすれば、関数は連続であること、比率がゼロまたは1となるような閾値はステータスがゼロまたは無限大を除く領域で存在しないことの2点が挙げられる。前者は図1から図4を見れば明白で、後者は成功、耐性、回避いずれかのステータスが200程度かつ該当スキルレベルがゼロと極端に低いかつそれと対立するステータスが極端に高い場合においても、比率がゼロまたは1でなかった数個の測定が根拠となる。

 くわえて、フィッティング関数は複雑なようでいて、動かしたパラメータは各攻撃結果について1個ずつのみである。攻撃結果間で同じ関数を適用する必要性も皆無であるが、結果的に同じものでもよく合ったわけである。こうした単純さは、フィッティングの妥当性を信じるうえでうれしい。

 ただ、測定データの質には疑問が残っている。回避とかすりについては、媒介変数になる \dfrac{0.193d'}{a'+0.193d'} が0.4以下の測定が実に112個、それ以上は0.90のわずか1個であり、定義域のゼロから1まで幅広く多点で網羅できているとはいえない。たとえば \dfrac{0.193d'}{a'+0.193d'}=0.5 となるのは \dfrac{d'}{a'}=5.2 となり、回避が成功の5倍以上であるような測定を増やしたいところである。

 反対に防御については、 \mathrm{C_2} の大きさゆえに、媒介変数になる \dfrac{20.9c'}{a'+20.9c'} が小さく防御比率が低く出る測定に不足が見える。たとえば \dfrac{20.9c'}{a'+20.9c'}=0.4 となるのは \dfrac{c'}{a'}=0.032 となり、実に成功が耐性の30倍を超えるような極端な測定が要求される。

 また、ヒットについては、基本的に攻撃結果の多数を占める回避、かすり、防御を定義上試行回数に含めないため、サイズを増やすのが容易ではない。そもそもヒットないしクリティカルの比率が小さい高耐性高回避での十分な測定は諦めるにしても、全体的にサイズを増やし、パラメータの精度の向上以前に式の確度を高めたい。

応用

 式は入れ子構造を取っており、任意の条件での各攻撃結果を個別にではなく同時に計算するのが手っ取り早く、理解しやすいだろう。

 例として、S地形下の浮遊脚部フィランソロピー(アルテミス、射耐1604.4、回避1674)補助51振り相手に、射撃99振りの任意の成功で射撃攻撃したときの各比率を計算した結果が図5である。

f:id:hakamaya:20220313112615p:plain

図5 フィランソロピー(防御のみ右軸)

 図5は防御比率のみ右軸を使用していることに注意されたい。また、横軸は補正成功 a' ではなく単なる成功 a としている。比率が線型でないことと、入れ子構造を持つことが災いして、このグラフを式だけから直感的に描くことは困難だろう。

 攻撃結果別に特徴を探っていくと、まず回避とかすりは単調減少している。これはそれらの判定がモデルにおいて先に行われ、式が比較的単純であることに起因する。下に凸に曲がっているのが式の特徴で、一般に低成功高回避側で急速に比率が変化することになる。反対に、成功を高めて右向きにグラフを進めても、ある程度すると回避、かすり比率の減少は緩やかになり、極めて高い成功をもってしてもかすりがなくならないという悲しい経験則が式にも表れている。回避がかすりと比較して曲がりが小さく比率も小さいのは、式を定数倍し、左側収束の値となる \mathrm{C_1} が小さいことによる。

 防御比率は回避およびかすり判定を終えた後に計算されるため、回避、かすり比率の高い低成功側では割を食うように全体に占める比率が下がっている。これは、 \mathrm{C_2} が非常に大きく、 a'\gg c' 以外では防御成功比率が \frac{c'}{a'} に概ね比例することも一因である。回避、かすり比率の減少が落ち着いた成功2500付近で極大値の81%を取り、以降緩やかに比率が落ちていく。

 残るヒットとクリティカルは、成功の増加に伴って回避や防御が成功しにくくなる分だけ比率も増加する。それらの比は式(8)の入れ子を除いた部分の \frac{c'+d'}{a'} が律しているため、全体での比率の大きさは成功2200付近で逆転してクリティカル優位になっている。戦略面からみると、クリティカルをたくさん出したいがために成功を懸命に上げても、空しい結果が待っているだろう。成功600で0.4%、1000で1%、2000でなお3.4%、あの手この手で4000まで上げたとしても精々9.1%である。フィランソロピーが特別堅いせいでもあるが、工夫し甲斐の無い仕様だというのが率直な感想である。

 別の例として、計算自体はやはり5種まとめて行うことを勧めるが、比較は特定の攻撃結果ごとに実施するのも有力だろう。たとえば症状や防御無視といった効果付きの攻撃は、当たるか当たらないかで展開が大きく異なる。そこで、別条件での各攻撃結果について比率を算出したのち、回避比率とかすり比率の和を比べてみることにする。図6は、射撃攻撃スキル50で成功を動かしたときの、対S地形フィランソロピー(射耐1604.4、回避1674)について、補助50、100、150での回避比率とかすり比率の和を列挙している。

f:id:hakamaya:20220313083706p:plain

図6 補助スキルレベルと命中

 かすりの煩わしさや補助機体のうざったさは、自身も一プレーヤーとして日々感じているところである。そこには一体どういった条件でどのくらい避けるかわからないという、手の打ちようのなさや不信感も少なからず働いているように思う。このたびこうして計算手段が生まれたことで、対策や戦略を練った上で想定状況の下振れ5%を引いたのなら仕方ないであるとか、失敗40%のリスクは許容できないので組み立てを変えようとかいった、能動的なリスクコントロールが可能となるだろう。

 図5と図6の作成は図7のようなエクセルシートで行った。

f:id:hakamaya:20220313091620p:plain

図7 エクセルを用いた比率予測およびグラフ作成

 A列にパラメータの数値を直打ちしておく。次に、H2からR2まで下記の数式を入力し、それらについて下向きにオートフィルを行う。あとはC列からG列に隙にステータスを入力すれば、N列からR列に各攻撃結果の比率のパーセント表記が自動で計算される。

 入力するステータスというのはあらかじめ式(9)の実行ステータスの計算式に従って算出したものを用いる(威力検証)。

実行ステータス=((パーツ+チップ+メダロッター)*(1+乗算効果a+乗算効果b+...)+性格ボーナス+ランク効果+脚部特性)*地形相性 (9)

H2
=C2*(D2+50)/100

I2
=E2*(G2+50)/100

J2
=F2*(G2+50)/100

K2
=$A$2*I2/(H2+$A$2*I2)

L2
=$A$3*J2/(H2+$A$3*J2)

M2
=$A$4*(I2+J2)/(H2+$A$4*(I2+J2))

N2
=$A$1*L2*100

O2
=(100-$N2)*L2

P2
=(100-$N2-$O2)*K2

Q2
=(100-$N2-$O2-$P2)*M2

R2
=(100-$N2-$O2-$P2-$Q2)

付録

 図8から図10に測定およびフィッティングに使用した全データ112点を載せた。別ページにて画像ではなく表を載せているので、コピー等する場合はそちらを使用してもらえればよい。xが生起数、pが標本比率および比率の最尤値、plが下側95%信頼区間、puが上側95%信頼区間。

f:id:hakamaya:20220313101215p:plain

図8 No.1-40

f:id:hakamaya:20220313101345p:plain

図9 No.41-80

f:id:hakamaya:20220313101440p:plain

図10 No.81-112

*1:攻撃MF、プラス症状エクスプロシブ状態での射撃攻撃、アサッシン、ランク5火薬属性、ランク5ガトリング、ガード体勢、マイナス症状ホビリティ、防御不能、回避不能、防御回避不能。コンシール等、ステータスに作用するものは含みません。抜けがあれば教えてください。

*2:*1に該当するものは含まれない。また、安易な仮定を避けるため、攻撃機、被攻撃機とも脚部は未破壊かつリミットオーバーなしかつメダルの脚部相性がグッドのものに限る。

【メダロットS】防御時のダメージ計算式

f:id:hakamaya:20220228183832p:plain

防御時のダメージ計算式

 防御時のダメージ D は、攻撃側の成功 a 、威力 b 、攻撃スキルレベル  s_1 、防御側の耐性  c 、回避  d 、補助スキルレベル  s_2 によって与えられます。

 D=D\left(a,b,c,d,s_1,s_2\right) \tag{1}

 また、各スキルレベルは成功と威力、耐性と回避に掛かる形でのみダメージに作用します。そこで、各変数を式(2)から式(5)のように変換します。

 a'=a'\left(a,s_1\right)=a\dfrac{s_1+50}{100} \tag{2}

 b'=b'\left(b,s_1\right)=b\dfrac{s_1+50}{100} \tag{3}

 c'=c'\left(c,s_2\right)=c\dfrac{s_2+50}{100} \tag{4}

 d'=d'\left(d,s_2\right)=d\dfrac{s_2+50}{100} \tag{5}

 再定義した4つの変数を用いると、防御時のダメージ D

\begin{eqnarray}D = \left\{ \begin{array}{ll} 1.025b'-1.028\dfrac{b'c'}{b'+c'} & \left(a'\leq a_0\right) \\
0.512\left(\dfrac{b'}{b'+c'}\right)\left(a'-a_0\right)+1.025b'-1.028\dfrac{b'c'}{b'+c'} & \left(a'\gt a_0\right)\end{array}\right.\tag{6} 
\end{eqnarray}

というある成功 a_0 (以下境界成功と呼びます)と攻撃時の成功 a' との大小によって場合分けされた2通りの式で表されます。ここで a_0

a_0=\left(0.501\left(c'+d'\right)-5.7\right) \tag{7}

で与えられます。以上の式(2)から式(7)まで、あらゆる条件での防御時の平均ダメージが計算できます。計測データとの比較から、誤差は最大でも10程度だと考えています。乱数によるダメージ幅が±7.3%あること(luxさん | Twitter威力、成功のダメージ寄与とダメージ乱数幅の推定#1 - luxのメダロットブログ)を踏まえれば、実用には十二分な精度です。

 式が複雑すぎるという文句はわたしが開発に言いたいくらいですが、このまま記事を閉じるのも不親切なので、以下に解説を続けます。天下り的な説明に終始しないよう、都度実測データに基づく解析手順を併記しています。

 式の使い方は応用の章で何例か紹介しています。当記事がゲームの楽しみを深めるものとなれば幸いです。

解説

パーツステータスとスキルレベル

 はじめに、独立変数となるステータスを整理します。防御時のダメージに作用するゲーム内ステータスには成功、威力、耐性(格耐または射耐)、回避のパーツ等に設定されたもの(以下特にパーツステータスと呼びます)と、メダルのスキルレベルに大別されます。このうちスキルレベルは、成功等の各ステータスに掛かる形でのみダメージに作用します。格闘スキルを上げると格闘攻撃の与ダメージが上がる、補助スキルレベルを上げると被ダメージが下がるといった認識は、広くプレイヤーに共有されているでしょう。

 問題はその度合いで、これは式(2)から式(5)のように、スキルレベル+50倍でそれぞれ表されます。

 a'=a'\left(a,s_1\right)=a\dfrac{s_1+50}{100} \tag{2}

 b'=b'\left(b,s_1\right)=b\dfrac{s_1+50}{100} \tag{3}

 c'=c'\left(c,s_2\right)=c\dfrac{s_2+50}{100} \tag{4}

 d'=d'\left(d,s_2\right)=d\dfrac{s_2+50}{100} \tag{5}

   a' b' c' d' はそれぞれ対応するステータスとスキルレベルを落とし込んだもので、パーツステータスの成功  a 等との混同を避けるために特に区別する際は補正成功等と呼ぶことにします。この変換をあらかじめ行うことで、ダメージ式から2つ変数を減らし、式をすっきりさせることができます。

 分母の100は一種の規格化で、50+50すなわちスキルレベル50を基準とし、その何倍であるかを意味します。スキルレベル0なら50時の0.5倍、当然50なら1倍、99なら1.49倍、150なら2倍になります。この関係は充填・冷却ステータスとスキルレベルのものと一致し、すでに馴染みがあるかもしれません(まばさん | Twitter【特別編】メダロットSの充填計算式 - 瞬く一時【備忘録】)。

 規格化は変数の値や対応するパラメータがいたずらに大きくあるいは小さくなることを防ぎ、直感的理解を助けます。基準とするレベルは0でも150でも何でもよい(変動分をフィッティングパラメータに反映させるだけ)です。たとえば99に取れば、攻撃機によく使われる攻撃スキル99振りの際に、成功と威力をそのまま補正成功、威力とすることができるメリットが生まれます。今回は100で割るという式の明快さと、フラットルール(全スキルレベル50固定)の普及、攻撃スキルと補助スキルでそろえることを重視し、50を基準としました。

解析

 実はスキルレベルの解析は難しいです。なぜなら攻撃スキルレベルは成功と威力、補助スキルレベルは耐性と回避にそれぞれ同時に作用するためです。そもそも解析時は式(2)から(5)どころかスキルレベル自体がダメージに直接作用するかどうかもわかっていません。ところが、この問題をうまく切り抜ける方法が見つかり、関係式の発見に至りました。ここではまだ説明が難しいので、別途節を設けて書くことにします。

3つの項

 ダメージを表す式(6)をみると、常に2つの項を持ち、さらに一定以上の成功のとき成功を変数に取る項を加えて持っています。解説する上でこれらの項は別々に扱う方が都合が良いため、スキルの補正は各ステータスに乗せたまま、ダメージ式を分割して再定義することにします。

D\left(a',b',c',d'\right)=D_1\left(a',b',c',d'\right)+D_2\left(b'\right)+D_3\left(b',c'\right) \tag{9}

\begin{eqnarray}D_1\left(a',b',c',d'\right) = \left\{ \begin{array}{ll} 0 & \left(a'\leq a_0\right) \\
0.512\left(\dfrac{b'}{b'+c'}\right)\left(a'-a_0\right) & \left(a'\gt a_0\right)\end{array}\right.\tag{10} 
\end{eqnarray}

\displaystyle D_2\left(b'\right)=1.025b' \tag{11}

\displaystyle D_3\left(b',c'\right)=-1.028\dfrac{b'c'}{b'+c'} \tag{12}

 式(6)を構成していた3つの項がそれぞれ D_1D_2D_3 に対応していることを確認してください。それぞれに特徴的な変数にちなみ、 D_1 を成功項、 D_2 を威力項、 D_3 を耐性項と呼ぶことにします。

成功項

 3項のうち唯一成功が寄与するのがこの成功項 D_1 です。改めて式を詳しくみていきましょう。

\begin{eqnarray}D_1\left(a',b',c',d'\right) = \left\{ \begin{array}{ll} 0 & \left(a'\leq a_0\right) \\
0.512\left(\dfrac{b'}{b'+c'}\right)\left(a'-a_0\right) & \left(a'\gt a_0\right)\end{array}\right.\tag{10} 
\end{eqnarray}

 最も特徴的なのは、成功によって式が2つに場合分けされる点です。補正成功 a' が境界成功 a_0 より小さいときには、成功をいくら上げてもダメージは増えません。検証#4にてこの仕様を初めて見つけた際、これは一定以上成功を下げてもダメージが下がらなくなるという意味で最低保障のようなものだと思っていましたが、むしろ成功のダメージへの寄与を限定する防御側に有利な仕様とも受け取れます。

 その解釈を補強するように、 a_0 は一定のパラメータではなく、式(7)に従って耐性 c' と回避 d' に比例して大きくなります。

a_0=\left(0.501\left(c'+d'\right)-5.7\right) \tag{7}

 この式(7)に成功項の2つ目の特徴が現れており、それは唯一回避が効く部分であるという点です。そもそも回避ステータスが回避率やかすりダメージだけでなく、限定的とはいえ防御時のダメージにも影響すること自体、わたしは一連の検証を始めてから初めて知りました。

 続けて、 a'\gt a_0 の場合をみていきます。成功の関数とみれば、これは1次関数です。しかし、その傾きはこれまた困ったことに一定ではないことがわかります。少しわかりにくいかもしれませんが、成功の前についている \frac{b'}{b'+c'} は、 b' が増えるほど大きく、また c' が増えるほど小さくなります。すなわち、威力が高いほど成功項の寄与も増し、他方で耐性が高いほど D_1 を抑えられることになります。このように威力と耐性はあっちやこっちやでダメージの増減に関わるという、実に不可解な仕様が取られています。

解析

 式の全容が判明した今でこそ言えることですが、ダメージの調査は成功から手を付けるのが最も筋が良いです。なぜなら成功は D_1 にのみ含まれているためです。あくまで計測できるのは(乱数をはらんだ)防御時のダメージ D であり、 D_1D_2 ではありません。ここに検証の難しさがあります。式全体の構造を知らないまま、式の異なる D_1D_2D_3 を同時に見てそれらを分離するのは不可能であり、2項以上に含まれる威力、耐性、各スキルレベルを評価できるようになるのは先です。

 図1と図2をご覧ください。それぞれビーストマスター(射耐2508、回避613.2、補助スキルレベル0)とダッシュボタン(射耐3314、回避0、補助スキルレベル150)相手に、威力936で成功の異なる射撃攻撃を与え、そのダメージを横軸成功に対し散布図にしたものです。ここから実測データを交えた議論を展開していきますが、手順や統計的扱いについては過去記事の#4#3をご参照ください。今回新たに計測したもので生データを見たい場合はお声掛けください。

f:id:hakamaya:20220228124831p:plain

図1 成功1次領域と無相関領域(ビーストマスター)

f:id:hakamaya:20220228125627p:plain

図2 成功1次領域と無相関領域(ダッシュボタン)

 この2図を比較するだけでも、1次関数の傾きや適用式が変化する境界の成功が条件に応じて変化することが視覚的にはっきりします。なお、ここでは横軸は式(10)の定義に合わせて補正成功 a' で取っていますが、射撃スキルレベル99固定の標本であるため、解析時はこの処理が適当か判断できません。当時はパーツ成功 a で作業を行っています。加えて、後にダメージ一定領域のダメージが D_2+D_3 であることがわかるのですが、この段階でも成功を変数に持たない D-D_1 の存在を知ることができます。

 ここまで一直線に話を進めていますが、一連の検証は本当に困難を極めました。傾きの条件による変化や a_0 を境にした場合分けの存在はつい最近になってようやく判明したことです。今となっては間違いだらけの#1を公開したのが昨年の8月、契機となった図1ビーストマスターのデータを記録したのが年明けての1月です。

 さて、話を解析に戻します。図1、図2の2つの系列の他にも、条件を変えて同様の計測を行い、やはり成功は特定の成功以下で無相関になること、それ以上では特定の傾きを持つ1次関数を取ることがわかってきました。問題はその境界値と傾きを決定する条件の定性化ならびに定量化です。

 図3から図5はそれぞれ、アインラート(射耐962.5、回避1003.2、補助スキルレベル44)相手に3通りの威力、順に612、780、936で成功を変化させてダメージを記録したものです。

f:id:hakamaya:20220228131723p:plain

図3 威力による成功の傾きの変化(威力612)

f:id:hakamaya:20220228131810p:plain

図4 威力による成功の傾きの変化(威力780)

f:id:hakamaya:20220228131826p:plain

図5 威力による成功の傾きの変化(威力936)

 図3から図5の比較により、関数の境界成功は威力には依存せず、他方で傾きは少なくとも威力には依存することがわかりました。加えて重要なのが依存の定量的評価です。図6はこの3点に高威力の2点を追加した計測の威力対傾きのプロットですが、残念なことに最も簡単な直線関係にはないことがわかりました。直線すなわち1次関数であれば誤差を含めて一意に決めることができますが、曲線はフィッティングする関数次第でいかようにも測定点に合わせられてしまい、真の計算式から外れてしまいます。このままでは関数として十分な記述ができないため、データの追加がたくさん必要になります。すでに式(10)を見ている読者にはもうおわかりでしょうが、この成功の傾きは耐性に関しても曲線を取るのです。

f:id:hakamaya:20220228132545p:plain

図6 威力による成功の傾きの変化

 傾きの最尤値は、1次領域内の標本の最小二乗近似で求め、その誤差は、同標本の標本誤差以内を通る最大値と最小値でつけています。また、境界成功値 a_0 の最尤値は、1次領域内の最尤回帰直線が無相関領域内の各標本の平均ダメージを取るときの成功で、その最大値は1次領域内の傾き最大の回帰直線が無相関領域内の各標本の標本誤差以内のダメージの最大値を取るときの成功、その最小値は1次領域内の傾き最小の回帰直線が無相関領域内の各標本の標本誤差以内のダメージの最小値を取るときの成功です。

 依存の定量的評価ももちろん重要ですが、並行して何には依存しないかも確かめてやる作業が必要です。図7と図8はそれぞれ、ヒメダッカー(射耐380.4、回避1850.4、補助スキルレベル43)とチャージドシーズ(格耐384、回避404、補助スキルレベル43)相手に、威力600で成功の異なる射撃あるいは格闘攻撃を与え、ダメージを成功についてプロットしたものです。図7の右から4点には、luxさんが計測されたデータを使用しています。

f:id:hakamaya:20220228133533p:plain

図7 回避依存性(ヒメダッカー)

f:id:hakamaya:20220228133639p:plain

図8 回避依存性(チャージドシーズ)

 これらの比較の何がよいかというと、ヒメダッカーの射耐とチャージドシーズの格耐が近くかつ補助スキルレベルが同じかつ乖離した回避であるため、対応する射撃、格闘の同じ威力のときの成功-ダメージの挙動を見てやることで、回避によるパラメータの変化だけをあぶりだすことができます。すると見事に傾きは一致し、境界値のみずれることがわかりました。さらにはベースである D-D_1 も一致しており、ここにも回避の寄与は存在しないことが判明しました。

 こうした計測の積み重ねで、成功の傾きは威力および耐性および各スキルレベルにのみ依存することがわかりました。さらに、成功の傾きが威力について(少なくとも計測範囲内で)上に凸の増加関数であることは、図6のように耐性固定で3通り以上の威力での傾きを取ればわかります。耐性について上に凸の減少関数であることもまた同様に3通りの計測からわかります。このようにフィッティング関数に制約を与えていくものの、威力、耐性、補助スキルレベルのうち1つだけを変数とするそれぞれの解析だけでは決め手に欠きました。

 式(10)にあるように、威力変化に伴う傾きの変化率と耐性変化に伴う傾きの変化率は独立には決まりません。上記の制約に加え、威力を b_1 から b_2 に動かしたときの傾きの変化量は耐性が大きいほど小さくなり、他方で耐性を c_1 から c_2 に動かしたときの傾きの変化量もまた然りです。この事実は \left(b_1,c_1\right),\left(b_1,c_2\right),\left(b_2,c_1\right),\left(b_2,c_2\right) の4通りを取った段階でわかり、一般にこれは2変数について上に凸の関数に含まれる1つ以上の同一の項に2変数が混在していることを示唆します。そこで、(基本的に99で計測している攻撃スキルレベルはひとまず置いておき)思い切って威力と耐性、補助スキルレベルの3つを含む媒介変数を仮定して、傾きが連続的に変化しないか試していくことにしました。

 この手法のメリットは、一度のフィッティングに使えるデータの数だけでなく幅を増やせることです。複数通りに威力を固定して成功を振るという厳密な計測の約束から、攻撃機はプレイヤー側で用意するほかなく、防御機もまたストーリーや超襲来といったステージの相手機体や地形、特別ルールの設定に縛られることになります。ところが、曲線のフィッティングでは、外挿を嫌って計測データの幅を広く取りたい事情があります。傾きについて威力は正の相関、耐性は負の相関であることから、低威力かつ高耐性で左に、高威力かつ低耐性で右に幅を広げたフィッティングが可能になります。

 これは後の節で説明しますが、並行して行っていた解析から、攻撃スキルレベルが成功と威力とにスキルレベル+50つまり式(2)といった現在考えている関係であることを突き止めつつありました。そこで耐性と補助スキルレベルについてもここから類推し、式(2)から式(5)に連なる現在の補正ステータスの考え方を予測しつつありました。

 結果的にこの戦略がはまりました。媒介変数として機能する \frac{b'}{c'} を見つけ(図9)、次いで1次の媒介変数として機能する 1-\cfrac{1}{\frac{b'}{c'}+1} を見つけるに至ったのでした(図10)。後者を式変形すれば、式(10)の \frac{b'}{b'+c'} と同じものであることを確認してください。

f:id:hakamaya:20220228135712p:plain

図9 媒介変数として機能する \frac{b'}{c'} 

f:id:hakamaya:20220228140204p:plain

図10 1次の媒介変数として機能する \frac{b'}{b'+c'} 

 場合分けの境界となる a_0 は、威力に無相関かつ耐性と回避に依存することが判明したうえでの解析は難しくありません。もっとも、回避が唯一寄与し、さらには場合分けを与えるという特殊性が、これまでの解析に陰から諸々悪さをしていたわけですが。式(7)の明快さそのまま、耐性と回避の単純和で美しい直線関係が表出します(図11)。

f:id:hakamaya:20220228140603p:plain

図11  a_0 の決定

威力項と耐性項

 威力項 D_2 の定義である式(11)、および耐性項 D_3 の定義である式(12)を再掲します。

\displaystyle D_2\left(b'\right)=1.025b' \tag{11}

\displaystyle D_3\left(b',c'\right)=-1.028\dfrac{b'c'}{b'+c'} \tag{12}

 威力項は攻撃スキルレベルが式(3)に従って補正されていることにさえ留意すれば、なんてことはない、極めてシンプルな1次式です、最高ですね。

 しかし、いかに D_2 がシンプルで最高であっても、これを直接ダメージから窺うことはできません。 D_1D_3 も威力に関しての曲線であるため、たとえ威力以外の全ステータスを固定して計測したとしても、これらの和の曲がったダメージが出力されることになります。

 耐性項は、3つのダメージ項のうち常に唯一負を取る項で、いわばダメージを耐性で直接的に軽減させる役割を担っています。ここに威力 b' も含まれていますが、やや割合で効くと受け取ればよろしいです。要するに威力が大きいほど耐性によるダメージの軽減量も増えるという具合です。それならそれでおとなしく比例にしておいてくれと思ってしまいますが。

 他に気になるのが、式(11)と式(12)の先頭についているパラメータの値が近いことです。仮にこれらを同じ定数 \alpha として \alpha b' で括ってやると、

\begin{align}D_2+D_3&=\alpha b'\left(1-\dfrac{c'}{b'+c'}\right)\\
&=\alpha b'\dfrac{b'}{b'+c'}\tag{13}\end{align}

となり、いかなる低威力高耐性であってもあくまで D_2D_3 の和としては正を取ることがわかります。しかし実際の計測では(もちろん有限の威力で)ゼロダメージを記録しており、フィッティングパラメータも D_3 の方が大きいです。実用上の恩恵はほとんど無さそうなものの、この辺りのダメージを追加で探ることでフィッティング関数により強い制約を課すことができるのかもしれません。

 また、 \frac{b'}{c'} であれば、威力 b' が2倍になればダメージも2倍、耐性 c' が2倍になればダメージは1/2倍という比例、割合で効くことになります。式(13)の \frac{b'}{b'+c'}b'\gg c' で1、 b'\ll c'\frac{1}{c'} の単純な比例関係に漸近します。

解析

 成功と回避を唯一含む D_1 は求まったため、この項の寄与だけは式(9)の変形によりダメージ D から除くことができます。なお、解析の段階では威力項と耐性項に分かれていることは知りようがなく、誤解を避けるためダメージから成功項を引いた D' を新たに定義することとします。

D\left(a',b',c',d'\right)=D_1\left(a',b',c',d'\right)+D_2\left(b'\right)+D_3\left(b',c'\right) \tag{9}

D'\left(b',c'\right)=D-D_1 \tag{14}

 式(14)は大変強力な式で、 D から D' への変換を行うことで、あらゆる条件のダメージから成功と回避の寄与を除外し、威力と耐性のみからなる関数として解析することができます。

  D' が成功だけでなく回避に依存しないことは、図7、図8のベースの比較で確認したことを思い出してください。実際、成功と威力固定で耐性と回避を変化させた#3のデータでは、補正耐性に対してダメージが連続的に変化する様が確認できます(図12)。

f:id:hakamaya:20220228141358p:plain

図12 連続的に変化する D' 

 ここで補正耐性と簡単に書きましたが、実は図12のデータは耐性と補助スキルレベルの関係を確認するのに適しています。スキルレベルの解析が難しい理由として、耐性と回避に同時に作用してしまうことを挙げていました。ところが、 D' は耐性のみに依存し、回避には依存しません。したがって、耐性に掛かる影響のみを知ることができます。

 同様に、攻撃スキルレベルについても D' の解析が有効です。成功依存性が無いため、威力に掛かる影響のみを知ることができます。ただし、成功依存性が無いという条件のみなら、 a'\lt a_0D_1=0 のときの D も満足します。より前の段階で調べたのはこちらの方で、たとえばダッシュボタン(射耐3314、回避0、補助スキルレベル150)であれば a_0=3315 という非常に広い成功無相関領域を持ちます。図13のように式(3)の補正威力で並べ、ダメージ D\left(=D'\right) が連続的に変化することを確認したときが、式(2)から式(5)の一律な補正方法を予測した瞬間だったのでした。とはいえ、連続性だけでは証拠として弱いと突っ込まれてしまうと、確かにそのとおりです。ただ、こうした論理の脆弱性をフィッティングから排除するのは困難で、最終的によく合うかどうかで良し悪しを判断してもらうしかないと思っています(そのために長々と解析の節を書いています)。

f:id:hakamaya:20220228142927p:plain

図13  a'\lt a_0 領域での威力と攻撃スキルレベル

 さて、スキルレベル補正の話が片付いたところで、耐性固定で取った D' を威力に対してプロットしたものが図14です。

f:id:hakamaya:20220228150553p:plain

図14 威力と耐性の関数 D' 

 図中の凡例に書いているのは防御機体の略記および補正耐性です。概観として、耐性の高いものから低いものまで威力がゼロに近づくと D' もゼロに近づきます(最低ダメージおよび D' がゼロであることも確認)。しかし、威力ゼロ近傍での傾きは耐性によって大きく異なります。耐性が低いものほど低威力でも傾きが大きく、威力の増加に伴ってわずかに傾きを増加させて1.03程度( D ではなく D' の傾きであることに注意、 D_1 が威力の増加関数であるため、 D の傾きより小さくなる)に落ち着きます。対して高耐性ほど低威力側での傾きが寝ており、大きく曲がりながら D' が増加します。

 いろいろと策を尽くした結果、最終的に適当なフィッティング関数の決定の第一のヒントとなったのが、低耐性のものほど曲がりが小さく、1次関数的である性質です。ここから、 D' は威力の1次項と耐性による負の項の和によって構成されているのではないかという、現在の D_2D_3 の原型に行き着きました。

 ものは試しで D'-1.03b' を威力(図15)、耐性(図16)に対して取ってみます。耐性固定のデータだけでなく図12で使用した威力固定のデータも同時にプロットしています。

f:id:hakamaya:20220228151444p:plain

図15 耐性項と威力

f:id:hakamaya:20220228151518p:plain

図16 耐性項と耐性

 図15と図16とを見比べると、グラフの形状が類似していると感じてもらえるでしょうか。こうした威力と耐性の対称性などもヒントに、成功項の傾きの解析でうまくいった媒介変数の仮定から攻めていき、1次の媒介変数として機能する \frac{b'c'}{b'+c'} の発見に至りました(図17)。さらにはこのことから、威力の1次項と耐性による軽減項の分離に正当性がもたらされました。

f:id:hakamaya:20220228151959p:plain

図17 1次の媒介変数として機能する \frac{b'c'}{b'+c'} 

 余談ですが、 D'\left(=D_2+D_3\right) を威力 b'微分すると、 \frac{1}{\left(b'+\mathrm{C}\right)^2} の1次式になります。#4にて D の差分商が \frac{1}{b+\mathrm{C}} の1次式にみえると書きましたが、当たらずとも遠からずだったわけです。

 ここからパラメータの微調整を行い、最終的なダメージ計算式の式(6)が完成しました。フィッティングに用いた全223個のデータ( 304.0\leq a'\leq6273.3,87.6\leq b'\leq12832.3,118.4\leq c'\leq6628,0\leq d'\leq5349.6,0\leq s_1\leq150,0\leq s_2\leq150 )について、実測ダメージに対し実測ダメージと予測ダメージの差を図18にプロットしました。

f:id:hakamaya:20220228154039p:plain

図18 フィッティングの評価

 ここで、誤差棒は実測ダメージの標本誤差です。実測と予測の差について、223点のうち196点(88%)が誤差範囲内、217点(97%)が誤差+2以内、最も外れる物でも誤差+7以内に収まりました。成功(図19)、威力(図20)、耐性(図21)、回避(図22)、攻撃スキルレベル(図23)、補助スキルレベル(図24)の6軸いずれも無相関で、あらゆる条件で常に良い予測を返すといえます。

f:id:hakamaya:20220228153811p:plain

図19 フィッティングの評価(成功)

f:id:hakamaya:20220228153217p:plain

図20 フィッティングの評価(威力)

f:id:hakamaya:20220228153624p:plain

図21 フィッティングの評価(耐性)

f:id:hakamaya:20220228153409p:plain

図22  フィッティングの評価(回避)

f:id:hakamaya:20220228154244p:plain

図23 フィッティングの評価(攻撃スキルレベル)

f:id:hakamaya:20220228154453p:plain

図24 フィッティングの評価(補助スキルレベル)

応用

 一般式こそこれ以上ない応用であり、利用の仕方は無限に存在します。スタンダードに仮想敵相手に好きな攻撃パーツの数値を入力してダメージを出力しても良いですが、個人的におすすめするのはグラフの作成およびそれによる比較です。

 例を挙げます。メダチェンジを除く戦車の中では最速ながら最低の射耐値を持つ脚部であるラストオーダー(ホドヨイシモフリ)と、脚部特性を含め全ステータス優秀と名高い浮遊脚部フィランソロピー(アルテミス)では、射撃攻撃の被ダメージがどれくらい違うのでしょうか。戦車のダメージ30%カットが優るのか、あるいは素の耐性値の高さには及ばないのかという比較です。

 双方の地形相性をS(したがってそれぞれの射耐が705.6、1605.4)、補助スキルレベルを51とし、攻撃側の成功を1100、射撃スキルレベルを99として、威力を横軸に取った予測ダメージのグラフを作成しました(図25)。

f:id:hakamaya:20220228154802p:plain

図25 ラストオーダーとフィランソロピー

 2次元散布図の良いところは、ほどよい情報量を含むところです。xとyの一対一対応は人間にとって理解しやすいです。そこに質の良い関数の連続性が加わることで、ただ2つの数字を見比べるよりずっと多くの情報を読み取ることができます。

 図25を見ると、低威力側ではフィランソロピーの方が堅いものの、威力2400辺りでダメージが逆転することがわかります。これは耐性が高いほどよく曲がるという計算式の特性によるもので、一方常に一定割合のダメージカットという別の原理でダメージの小さいラストオーダーは傾きの変化が小さく、高威力側ほどその恩恵を受けます。これはエルーシブなどダメージカットの脚部特性持ちについても同様のことがいえます。実用上威力1000以下を見ても仕方ないなどと、状況や目的に応じて横軸縦軸を適当な範囲とスケールに変えてやることも大切です。

 また別の例として、補助スキルレベルの違いによるダメージの差を見てみます。成功1100、射撃スキルレベル99の射撃攻撃に対し、再び大人気のフィランソロピーで、スキルレベルを0、50、100、150としたときの予測ダメージは図26のようになります。

f:id:hakamaya:20220228155001p:plain

図26 補助スキルレベルの影響(パーツ成功1100)

 4本の線の比較で、0から50に上げたときの減少量がとりわけ目につきます。これは実は成功項 D_1 が大きく影響しています。 D_1 がゼロか否かを決める a_0 というパラメータがありましたが、これは防御機の耐性と回避に依存するのでした。補助スキルレベル0、50、100、150の a_0 は順に815.5、1636.8、2458.0、3279.3と計算されます。ここで、パーツ成功1100、攻撃スキルレベル99での補正成功 a' は1639です。したがってスキルレベル0のときだけ a'\gt a_0 となり、成功項 D_1 がゼロにならずに他と比べて余分にダメージを受けてしまうのです。

 実際に、すべて a'\gt a_0 となる成功500に設定を変えて取ると、スキルレベル0と50の差は他とあまり変わらないように見えます(図27)。

f:id:hakamaya:20220228155057p:plain

図27 補助スキルレベルの影響(パーツ成功500)

 以上の2例をみても、防御時のダメージは直感的に理解しづらいものだと思います。威力を2倍にしたらダメージも倍になる、耐性を2倍にしたらダメージは半分になるという式であれば面倒なグラフ作成など不要なのですが。限定的な状況の数字がどうこうの他に、仕様の大枠を把握しておくというのは楽しく、これをもってその助けになるのではないかと期待します。

 図25、26、27の作成は図28のようなエクセルシートで行いました。

f:id:hakamaya:20220228160059p:plain

図28 エクセルを用いたグラフ作成

 A列にパラメータの数値を直打ちしておきます。次に、C7からC10、C12セルに下記の数式を入力し、C12について下向きに、その後C列の各数式セルについて右向きにオートフィルを行います。あとは1から6行目に好きなステータスを入力すれば、B列の威力に対応したダメージが当該列に並びます。

 入力するステータスというのはあらかじめ式(15)の実行ステータス(ダメージ計算式で定義するところのパーツステータス)の計算式に従って算出したものを用いてください(威力検証)。メダロッターやメダルに応じて自動計算するプログラムを書いてもよいでしょうが、参照データが膨大かつ日々増えていくためわたしはやる気がしません。

実行ステータス=((パーツ+チップ+メダロッター)*(1+乗算効果a+乗算効果b+...)+性格ボーナス+ランク効果+脚部特性)*地形相性 (15)

 ダメージカットはカット量をそのまま(戦車なら0.3)を入力してください。特にないものは0、もしくは空欄で構いません。現在2種類以上のダメージカットが同時に発動する状況として、戦車、脚部特性(フォートレス、チャーム等)、MFインプレグナブルのうち2つ以上が重なる場合が考えられます。このうち戦車(30%)とフォートレスないしチャーム(30%)の重ね掛けについては調査済みで、加算の60%減ではなく乗算の51%減になります。したがって当シートでは0.51と6行目に入力すればよいです。

 最後に、シートでは横軸の威力は補正威力ではなくパーツ威力であることに注意してください。この辺りも含めてご自分で使いやすいよう自由にアレンジを加えて活用してもらえるとうれしいです。

C7
=C$1*(C$2+50)/100

C8
=C$3*(C$5+50)/100

C9
=C$4*(C$5+50)/100

C10
=$A$2*(C$8+C$9)+$A$3

C12
=(IF(C$7>C$10,$A$4*$B12*(C$2+50)/100/($B12*(C$2+50)/100+C$8)*(C$7-C$10),0)+$A$5*$B12*(C$2+50)/100+$A$6*$B12*(C$2+50)/100*C$8/($B12*(C$2+50)/100+C$8))*(1-C$6)

おわりに

 状況を選ばないダメージ計算の一般式の完成、計画から8ヶ月を経てこの日を迎えることができ感無量です。とにかく大変で楽しいものでした。

 日々モチベーションを与えてくださったメダロッターの皆様には感謝しています。特にluxさんには統計的な乱数排除方法の考案にはじまり、解析を行ううえで大変力をいただきました。今回のフィッティングでも攻撃スキルレベル99以外のデータ46個のうち40個はluxさん記録のもので、これら無しに式の完成はありませんでした。ありがとうございました。

 検証の今後については、少しゆっくりしたいと思っています。かすりはともかくヒット(防御無視)やクリティカルのダメージは、ゴーストやアサッシン、フリーズ、トルネードといった戦略で計算式がほしいものですが、防御シール等を使うにしても計測が大変そうです。全くの未知だったこれまでと違い、ある程度防御時の立式が流用できるであろうことも、個人的には少し好奇心が削がれます。攻撃結果比率も含めたダメージ期待値みたいなものが最終的に作れたら面白いです。新たな検証プレイヤーの登場を待っています。

【メダロットS】ダメージ計算の試み メモ

 こんにちは。防御時のダメージ計算式はもうちょっとで完成というところまで来ました。ただし、そのもうちょっとというのが最難関で、いつ解けるかわかりません。ちょうどluxさん(Twitter)に紹介していただいた折、現状の理解を簡単にメモしておきます。

medarotter-lux.hatenablog.com

防御時のダメージ計算式

成功1次項

 防御時のダメージ D は、攻撃側の成功 a 、威力 b 、攻撃スキルレベル  s_1 、防御側の耐性  c 、回避  d 、補助スキルレベル  s_2 によって与えられます。

 D=D\left(a,b,c,d,s_1,s_2\right) (1)

  D は二つの項 D_1D_2 にわけると見通しが良くなります。

 D=D_1\left(a,b,c,d,s_1,s_2\right)+D_2\left(b,c,s_1,s_2\right) (2)

 式(2)のように、 D_1 は成功と回避を変数に含み、 D_2 は含みません。 D_1 はさらにある成功 a_0 を境に次のように書けます。

D_1=0 \left(a\lt a_0\right) (3)

D_1=\displaystyle \alpha\left(a-a_0\right)\dfrac{50+s_1}{50+99} \left(a\gt a_0\right) (4)

 ここで、 \alpha は成功の1次関数パラメータと見なすことができます。ただし、 \alpha は定数ではなく、次のような威力、耐性、攻撃スキルレベル、補助スキルレベルの関数として表せます。

\alpha=\alpha\left(b,c,s_1,s_2\right)

 =\displaystyle 0.763\cdot\left(1-\dfrac{1}{\dfrac{b\left(50+s_1\right)}{c\left(50+s_2\right)}+1}\right) (5)

 式(5)からわかるように、 \alpha はスキルレベルを含めて威力が高いほど大きく、また耐性が高いほど小さくなります。

 式(3)と式(4)をスイッチするある成功 a_0 もまた定数ではなく、次の式(6)のように耐性、回避、補助スキルレベルの3つのステータスによって決まります。

a_0=a_0\left(c,d,s_2\right)

  =0.0034\cdot\left(c+d\right)\left(50+s_2\right)-7.52 (6)

 成功のダメージ寄与の度合いを決めるものだと見なせた  \alpha に対し、 a_0 は成功のダメージ寄与の始点を決めるものといえ、この値以下の成功値ではダメージが増えません。また、 \alpha と違い威力にはよらず、唯一回避ステータスが影響するパラメータでもあります。

 ここまで、式(3)から式(6)まで、成功の1次項 D_1 はパラメータの値まで含めて詳細にわかっています。測定データが膨大なこともあり、解析手順の説明は日と記事を改めて行う予定です。

f:id:hakamaya:20220223000705p:plain

図1  \alpha と測定データ

f:id:hakamaya:20220223001004p:plain

図2  a_0 と測定データ
成功を含まない項

 さて、解決していないのが成功を含まない D_2 の方です。式(2)より D_2 は式(7)ように表せます。

D_2=D-D_1 (7)

 すなわち、測定した D から式(3)から式(6)により計算した D_1 を引くことで、 D_2 を求めることができます。これは大変強力な式で、 D から D_2 への変換を行うことで、あらゆる条件のダメージから成功と回避の寄与を除外し、(各スキルレベルを加味した)威力と耐性のみからなる関数として解析することができます。

 #3で測定した成功と威力が一定のデータについて、式(7)から D_2 を求めました(図3)。

f:id:hakamaya:20220223002953p:plain

図3  D_2 と耐性の関係

 図3のように、横軸を補助スキルレベルを加味した耐性 c\left(50+s_2\right) で取ると D_2 は単調減少します。このことから D_2 は回避によらず、耐性によってのみ軽減されることがわかります。#3にて \left(c+0.2d+300\right)\left(70+s_2\right) を横軸に取るとダメージが単調減少するように見えると報告しましたが、それは D_1a_0 に含まれる回避の影響を分離できなかったことによる性質の良くない近似だったと判明しました。

 今度は攻撃スキルレベルを加味した威力 b\left(50+s_1\right) を横軸に取り、#4の対ビーストマスターの威力評価で計測したもの、luxさんによる対ヒメダッカーの計測データを含む、ある耐性相手に威力を変化させて取ったダメージから変換した D_2 を図4にプロットしました。

f:id:hakamaya:20220223004642p:plain

図4  D_2 と威力の関係

 概観として、耐性の高いものから低いものまで威力がゼロに近づくと D_2 もゼロに近づきます(最低ダメージおよび D_2 がゼロであることも確認)。しかし、威力ゼロ近傍での傾きは耐性によって大きく異なります。耐性が低いものほど低威力でも傾きが大きく、威力の増加に伴ってわずかに傾きを増加させて1.53程度( D ではなく D_2 の傾きであることに注意、 D_1 が威力の増加関数であるため、 D の傾きより小さくなる)に落ち着きますが、これが収束なのかはわかっていません。対して高耐性ほど低威力側での傾きが寝ており、大きく曲がりながら D_2 が増加します。

 現在、この原点での収束と曲がり具合をヒントに、関数の決定およびそのパラメータに耐性を落とし込む作業を進行しています。成功の1次式 D_1 の決定にあたっては諸々の思い込みが足を引っ張っていましたが、 D_2 は独立変数まではっきりわかっているのによほど難しいです。一にも二にも曲がっていることが悪さをしています。

おわりに

 防御時のダメージについては成功と回避の寄与の分離に成功し、残すところは耐性と威力のカーブフィッティングのみ、しかしこれが一番厄介という状況です。ひらめき次第で明日にも解けるかもしれないし、1ヶ月経っても結論が出ないかもしれません。当面はこの解析を第一に続けていくつもりですが、計測データの共有や解析の質問等あれば喜んで応じます。いつでもお気づきの点を教えてもらえると幸いです。

【メダロットS】攻撃結果の比率計算

 こんにちは。今回は回避や防御の確率調査の第1弾です。

概要

 メダロットSのロボトルでは、攻撃に際して回避、かすり、防御、ヒット、クリティカルの5種類の攻撃結果のうちから1つが選ばれます。この比率は、一部の技や状況を除き、攻撃側の成功や被攻撃機の耐性等に応じて変化することが経験的に知られています。一方で、その具体的な値についてはゲーム内でも説明がなく、プレイヤーの間でも情報が不足していました。

 今回は実際のロボトルで攻撃機の成功、被攻撃機の耐性、回避、補助スキルレベルの4つのステータスを変化させながら攻撃を繰り返して得た統計データを元に、母比率の推定およびゲーム内での攻撃結果の決定手順の推測を行いました。

 その結果、次のような傾向が現れました。

  • 成功の増加に応じて回避比率、かすり比率と防御比率が減少し、クリティカル比率が増加した。
  • 回避ステと補助スキルレベルの増加に応じて回避比率、かすり比率が増加した。
  • 耐性と補助スキルレベルの増加に応じて防御比率が増加した。
  • 成功に対し回避と耐性がともに高い場合、防御より回避・かすりが優先して発生した。
  • 回避とかすり成否の判定の後、防御成否の判定、いずれも失敗した場合にヒットまたはクリティカルになるとすることで計測を説明できた。

 今回の計測データは、最終的な目的であるステータスから比率を返す計算式を定式化するには不十分で、今後条件やサイズを増やしていくことが望まれます。

手法

成功評価のセッティング

 以下に並べた、ダメージ計算 #4にて成功評価のために計測したデータの一部を用いました(表1)。

(A) ハイパーレーザー星1Lv1レーザー
(B) プレシス星2Lv1ライフル
(C) バイカラー星3Lv60ビーム
(D) エレクトミサイル星3Lv60アンチエア
(E) サイレントハント星5Lv90アンチシー
(F) ハーモニー星5Lv90アンチエア、パシーラLv20
(G) ポピュラー星5Lv90デストロイ、カスミLv20
(H) ポピュラー星5Lv90デストロイ、カスミLv20、グラビティ

表1

  成功
(A) 345.6
(B) 585.6
(C) 835.2
(D) 1089.6
(E) 1306.8
(F) 1718.4
(G) 2344.8
(H) 4209.6

 すべて射撃スキルレベル99で、成功の計算には次式を使用しました(威力検証)。

実行成功=((パーツ+チップ+メダロッター)*(1+乗算効果a+乗算効果b+...)+性格ボーナス+ランク効果+脚部特性)*地形相性

 場所は2021年12月29日から翌年の1月6日までの期間限定で開催されていた進撃!ロボトル「年末年始のロボロボ大進撃!」のステージ10-8で、相手はビーストマスター*3機です(図1)。

f:id:hakamaya:20220109205348p:plain

図1 限定進撃ステージ10-8

 元々攻撃結果確率の検証に用いるために取ったデータではないため、(おそらく)不必要な威力の統一がされていたり、防御比率が高く出るであろう極端に高耐性・低回避な被攻撃機であったりしますが、プロトモデルとしての調査に利用するには十分でしょう。

耐性、回避、補助スキルレベル評価のセッティング

 こちらも耐性、回避、補助スキルレベルを変化させた過去のダメージ計算 #3で取得したデータの一部、以下の(I)から(O)を見返して本評価に流用しました(表2)。

(I) ゲソカケシタLv90
(J) ジェットスラップLv90、格耐I*2、ヒコオLv3
(K) ダイコクチョーLv90
(L) ダッシュアタック(ホプライト+75%)Lv90
(M) オスワリLv90、サケカースLv20
(N) ブラックスタッグ(メダチェンジ)Lv90、サケカースLv20、スピード
(O) ダッシュアタック(ホプライト+75%)Lv90、サケカースLv20

表2

  耐性 回避
(I) 236.8 1677.6
(J) 548.4 2262
(K) 920 567.2
(L) 2171 865
(M) 2208 0
(N) 2210.4 2674.8
(O) 2807 865

 補助スキルレベルは(N)を除き0、51、150の3通りで、(N)のみ性格スピードの回避ボーナス量を合わせるために1、51、150で取りました。以下では補助スキルレベルnの被攻撃機(X)の標本を(X_n)と略記することにします。

 計測場所は常設超襲来のvsテオドラベリル2、攻撃パーツは敵3番機の右腕スカソルLv90です(図2)。なお、こちらも元々攻撃結果確率の検証に用いるために取ったデータではなく、エナジーが不自由なく消費できるならデータを追加したいところです。

f:id:hakamaya:20210906043452p:plain

図2 超襲来、vsテオドラベリル2
統計的扱いその1

 先に並べたような特定の条件でそれぞれ(被)攻撃を繰り返し、発生した攻撃結果を記録していくわけですが、それらの比率は必ずしも設定された確率通りにはなりません。無限回の試行をしない限り、ガチャと同じように上振れや下振れがあるわけです。無限回試行することはできないので、統計的な解析により設定確率を推定する必要があります。

 統計学一般についてはネット上にも多くの情報がありますし、ここでは網羅的な話はできませんが、本検証での具体的な手順を追いながら技術的な話を手短に書いておきます。初めは意味はよくわからずとも、計算機さえあればひとまず実践できることを目的として書いています。

 ある条件で n 回試行し、そのうちある攻撃結果が x 回起こったとします。このとき標本比率

p=\dfrac{x}{n} (1)

が得られます。

 ただし、知りたいのはゲーム内で設定された真の確率、母比率 \pi です。標本比率 p はそのまま最尤値として母比率 \pi の点推定に用いることができます。しかし、有限回の試行では必ずしも p\pi に一致しません。そこで、正規近似に基づく式(2)を使った区間推定を行います。

p - 1.96 \sqrt{ \dfrac{ p \left( 1 - p \right) }{ n } } \leq \pi \leq p +  1.96 \sqrt{ \dfrac{ p \left( 1 - p \right) }{ n } }  (2)

 このとき、不確実性を表す指標として p に加えられているものが95%信頼区間です。同じ推定を100回行えば、そのうち95回は真の値が区間内に入ります。母比率がぴったり何%だと決めるのは難しいので、推定に数理的に導かれる幅を持たせてやるわけです。分母が \sqrt{n} であることからもわかるように、信頼区間は試行回数を増やすほど狭くなり、すなわち誤差を小さくすることができます。推定した母比率の上下限が0から1の範囲を超える場合は、超過分をそのまま誤差範囲から差し引けばよいです。

 式(2)ではなく、t値と標準誤差から愚直に求めても構いません。ただ、いずれにしても正規近似を用いているのは同じで、試行回数が50もあれば式(2)との差は後述する式(3)、(4)と比較すれば小さいです。

統計的扱いその2

 手始めに確率の区間推定をしたいという場合は、とりあえず式(2)を使っておけば良いでしょう。計算も簡便ですし、なにより数理が明快です。

 ただ、本検証ではもう少し踏み込んだ解析を行いました。というのも、式(2)は確率分布が正規近似できることに依拠しているのですが、この近似がうまくいかない場合があるためです。そこで、代わりにClopper-Pearsonの信頼区間を用いました。

 そもそも本調査対象である一定確率で回避するかあるいはしないかといった二択の確率事象は一般にベルヌーイ試行と呼ばれ、確率分布は二項分布を取ります。 n が十分大きいとき、二項分布はより解析的に扱いやすい正規分布に漸近します。この性質を利用したのが式(2)だったわけです。

 しかし、この近似は n が小さく、また p が0または1に近い場合にはうまくいきません。良い近似を与える目安として、たとえば np \gt 5 かつ 1 - np \gt 5 といったものが使われるようです。今回の計測でも、少なからずこの目安を満たさないものがありました。

 正規近似が悪いなら、二項分布のまま検定をして信頼区間を算出しようというのがClopper-Pearsonの信頼区間です。下限値 p_ \mathrm{ lower } と上限値 p_ \mathrm{ upper } はそれぞれ次のように与えられます。

 p_ \mathrm{ lower } = B _ { \alpha / 2 } \left( x ,  n - x + 1 \right)  (3)

 p_ \mathrm{ upper } = B _ { 1- \alpha / 2 } \left( x + 1 ,  n - x \right)  (4)

 ここで、  B _ { q } \left( \alpha ,  \beta \right) は正のパラメータ \left( \alpha ,  \beta \right) を持つベータ分布の上側確率  100 \left( 1 - q \right) \% のパーセント点です。

 見た目と意味こそいかついですが、だれもがパソコンを持っている現代なら一瞬で計算できます。本検証ではExcelのBETA.INV関数で95%信頼区間を求めました。こうして得た区間推定を、最尤値である標本比率と合わせて解析に用いました。

 ちなみに、ウェブ上で検索するとベータ分布の代わりにF分布を利用した信頼区間が多く見つかります。2つの分布が変数変換で行き来できることを踏まえれば、これらは本質的に同じものです。計算が面倒なF分布に基づく信頼区間の方が普及しているのは不思議ですが、分布表などで数値解を出していた時代の名残なのかと想像しています。

結果

成功の評価

 ビーストマスター(射耐2508、回避613.2、補助スキルレベル0)相手に成功を変化させて攻撃を繰り返して計測した、各攻撃結果の発生回数xおよびその比率pの点推定と区間推定を表3に示します。

表3

  成功 n x_回避 x_かすり x_防御 x_ヒット x_クリ p_回避 p_かすり p_防御 p_ヒット p_クリ 区間p_回避 区間p_かすり 区間p_防御 区間p_ヒット 区間p_クリ
(A) 345.6 176 5 22 147 2 0 0.028 0.125 0.835 0.011 0 0.009, 0.065 0.08, 0.183 0.772, 0.887 0.001, 0.04 0, 0.021
(B) 585.6 179 2 8 167 2 0 0.011 0.045 0.933 0.011 0 0.001, 0.04 0.019, 0.086 0.886, 0.965 0.001, 0.04 0, 0.02
(C) 835.2 165 1 8 152 3 1 0.006 0.048 0.921 0.018 0.006 0, 0.033 0.021, 0.093 0.869, 0.957 0.004, 0.052 0, 0.033
(D) 1089.6 215 2 7 194 5 7 0.009 0.033 0.902 0.023 0.033 0.001, 0.033 0.013, 0.066 0.855, 0.939 0.008, 0.053 0.013, 0.066
(E) 1306.8 127 1 2 112 5 7 0.008 0.016 0.882 0.039 0.055 0, 0.043 0.002, 0.056 0.813, 0.932 0.013, 0.089 0.022, 0.11
(F) 1718.4 189 0 3 166 9 11 0 0.016 0.878 0.048 0.058 0, 0.019 0.003, 0.046 0.823, 0.921 0.022, 0.088 0.029, 0.102
(G) 2344.8 151 0 2 129 4 16 0 0.013 0.854 0.026 0.106 0, 0.024 0.002, 0.047 0.788, 0.906 0.007, 0.066 0.062, 0.166
(H) 4209.6 140 2 1 105 2 30 0.014 0.007 0.75 0.014 0.214 0.002, 0.051 0, 0.039 0.67, 0.819 0.002, 0.051 0.149, 0.292

 成功に対して、回避とかすり(図3)、防御(図4)、ヒットとクリティカル(図5)の比率をそれぞれプロットしました。

f:id:hakamaya:20220126164100p:plain

図3 成功の評価(回避、かすり)

f:id:hakamaya:20220126164128p:plain

図4 成功の評価(防御)

f:id:hakamaya:20220126164147p:plain

図5 成功の評価(ヒット、クリティカル)

 概観としては、かすりと防御は単調減少、クリティカルは単調増加しているように見えます。これはプレイの実感に合うものです。他方で回避とヒットは低い比率で横ばいに見えます。回避率については、被攻撃機がスキルレベルも含めて極めて低い回避ステであることを考慮すれば不思議ではありません。ヒットについてはクリに比べると成功上昇に伴う伸びがほとんどありません。ただし、この段階では成功がヒット率にほぼ効かないと結論付けるのは早計で、被攻撃機の耐性と回避のアンバランスさなど、データを追加して幅広く因果関係を探っていく必要があります。

 他に気になるのは、最も成功の低い(A)です。この点だけ回避とかすりの比率が増え、割を食うように防御率が下がりました。ここには比率算出における根本的な問題が潜んでいると考えられます。

 回避ステに対して成功を下げると回避とかすり率が上がり、また耐性に対して成功を下げると防御率が上がるとしましょう。すると今回のように耐性と回避が一定のまま成功を下げ続ける、すなわち耐性と回避に対して同時に成功を下げ続けると、ヒットとクリがゼロになった後は回避、かすり、防御で飽和してしまいます。しかし、実際に飽和した(B)から(A)では、防御率を落としてでも、かすりと回避が続伸する、回避・かすりの優先が存在します。

 この矛盾は、ゲーム内の計算において、回避・かすりの判定が先に行われ、そこで回避またはかすりが選ばれなかった場合に限り、続けて防御するか否かの判定が行われていると考えると解消できます。

 この仮定を元に、回避とかすりをそれぞれ除いた試行のみから、防御の比率を算出したものが図6です。

f:id:hakamaya:20220126200029p:plain

図6 回避、かすりを除いた成功の評価(防御)

 このように取ると、防御比率はあくまでヒット・クリティカルに対しては(B)から(A)で減っていなかったことがわかりました。これは、耐性に対して成功を下げると防御率が1になるまで上がるという関係から外れていません。図中の回帰直線のように比例関係にあるかはまだ何とも言えませんが、図4の極大を持つグラフより解釈が容易になりました。

耐性、回避補助スキルレベルの評価

 スカソルのソード(成功2079.6、格闘スキルレベル99)を、耐性、回避、補助スキルレベルの異なる(I)から(O)の機体で受けたときの、各攻撃結果の発生回数xおよびその比率pの点推定と区間推定を表4に示します。

表4

  耐性 回避 補助スキル n x_回避 x_かすり x_防御 x_ヒット x_クリ p_回避 p_かすり p_防御 p_ヒット p_クリ 区間p_回避 区間p_かすり 区間p_防御 区間p_ヒット 区間p_クリ
(I_0) 236.8 1677.6 0 163 1 3 81 19 59 0.006 0.018 0.497 0.117 0.362 0, 0.034 0.004, 0.053 0.418, 0.576 0.072, 0.176 0.288, 0.441
(I_51) 236.8 1677.6 51 214 8 20 117 22 47 0.037 0.093 0.547 0.103 0.22 0.016, 0.072 0.058, 0.141 0.477, 0.615 0.066, 0.152 0.166, 0.281
(I_150) 236.8 1677.6 150 116 6 19 66 15 10 0.052 0.164 0.569 0.129 0.086 0.019, 0.109 0.102, 0.244 0.474, 0.661 0.074, 0.204 0.042, 0.153
(J_1) 548.4 2262 0 157 3 13 91 16 34 0.019 0.083 0.58 0.102 0.217 0.004, 0.055 0.045, 0.137 0.498, 0.658 0.059, 0.16 0.155, 0.289
(J_51) 548.4 2262 51 118 5 18 77 10 8 0.042 0.153 0.653 0.085 0.068 0.014, 0.096 0.093, 0.23 0.559, 0.738 0.041, 0.15 0.03, 0.129
(J_150) 548.4 2262 150 152 8 35 96 9 4 0.053 0.23 0.632 0.059 0.026 0.023, 0.101 0.166, 0.305 0.55, 0.708 0.027, 0.109 0.007, 0.066
(K_0) 920 567.2 0 114 0 1 89 3 21 0 0.009 0.781 0.026 0.184 0, 0.032 0, 0.048 0.694, 0.853 0.005, 0.075 0.118, 0.268
(K_51) 920 567.2 51 98 1 3 79 9 6 0.01 0.031 0.806 0.092 0.061 0, 0.056 0.006, 0.087 0.714, 0.879 0.043, 0.167 0.023, 0.129
(K_150) 920 567.2 150 92 4 5 76 1 6 0.043 0.054 0.826 0.011 0.065 0.012, 0.108 0.018, 0.122 0.733, 0.897 0, 0.059 0.024, 0.137
(L_0) 2171 865 0 104 2 7 77 6 12 0.019 0.067 0.74 0.058 0.115 0.002, 0.068 0.027, 0.134 0.645, 0.821 0.021, 0.121 0.061, 0.193
(L_51) 2171 865 51 77 0 3 69 0 5 0 0.039 0.896 0 0.065 0, 0.047 0.008, 0.11 0.806, 0.954 0, 0.047 0.021, 0.145
(L_150) 2171 865 150 86 2 6 77 1 0 0.023 0.07 0.895 0.012 0 0.003, 0.081 0.026, 0.146 0.811, 0.951 0, 0.063 0, 0.042
(M_0) 2208 0 0 58 0 0 51 0 7 0 0 0.879 0 0.121 0, 0.062 0, 0.062 0.767, 0.95 0, 0.062 0.05, 0.233
(M_51) 2208 0 51 61 0 0 54 3 4 0 0 0.885 0.049 0.066 0, 0.059 0, 0.059 0.778, 0.953 0.01, 0.137 0.018, 0.159
(M_150) 2208 0 150 87 0 0 80 6 1 0 0 0.92 0.069 0.011 0, 0.042 0, 0.042 0.841, 0.967 0.026, 0.144 0, 0.062
(N_1) 2210.4 2674.8 1 109 5 10 83 5 6 0.046 0.092 0.761 0.046 0.055 0.015, 0.104 0.045, 0.162 0.67, 0.838 0.015, 0.104 0.02, 0.116
(N_51) 2210.4 2674.8 51 86 5 15 63 1 2 0.058 0.174 0.733 0.012 0.023 0.019, 0.13 0.101, 0.271 0.626, 0.822 0, 0.063 0.003, 0.081
(N_150) 2210.4 2674.8 150 71 12 10 48 1 0 0.169 0.141 0.676 0.014 0 0.09, 0.277 0.07, 0.244 0.555, 0.782 0, 0.076 0, 0.051
(O_0) 2807 865 0 98 2 0 83 5 8 0.02 0 0.847 0.051 0.082 0.002, 0.072 0, 0.037 0.76, 0.912 0.017, 0.115 0.036, 0.155
(O_51) 2807 865 51 94 1 2 86 3 2 0.011 0.021 0.915 0.032 0.021 0, 0.058 0.003, 0.075 0.839, 0.963 0.007, 0.09 0.003, 0.075
(O_150) 2807 865 150 92 5 11 73 2 1 0.054 0.12 0.793 0.022 0.011 0.018, 0.122 0.061, 0.204 0.696, 0.871 0.003, 0.076 0, 0.059

 まず、回避比率について見ていくのですが、回避ステと補助スキルレベルの両方が異なるデータ間でも比較を行いたいです。そのために、防御時のダメージが耐性・回避ステと補助スキルレベルを乗算する形で参照していたことから、攻撃結果決定の計算についても乗算で変数になっていると類推します。ダメージ参照時と同様に、回避* (補助レベル+70) として横軸を取ったグラフが図7、補正定数を最小の正の整数の1すなわち回避* (補助レベル+1) として横軸を取ったグラフが図8です。

f:id:hakamaya:20220128150743p:plain

図7 回避ステと回避率

f:id:hakamaya:20220128150829p:plain

図8 不適切な補助スキルレベル補正の例

 図7と図8の差は一目瞭然で、補助レベルに70を足した方がはっきりと同一の増加傾向に従います。この補正定数は、スキルレベルの差を緩和するものと解釈すればよいです。たとえば仮に定数が1だとすると、補助スキルレベル0と51では回避の実行値が52倍になるのに対し、仮に定数が70なら1.7倍にまで差が縮まります。現在の計測データからはこれ以上正確な値を探っても意味がないため、ひとまずこのまま補正定数を70とします。また、図中には回帰直線を併記していますが、実際に回避と回避率が比例関係にあるかは何とも言えません。ただし、単調増加であるとは見なせました。また、かすりについても回避* (補助レベル+70) に対して比率が誤差範囲内で単調増加しました。

 最後に、防御比率について述べます。これも成功の評価のときと同様に、成功に対して耐性と回避がともに高い場合(たとえば(O_150))には、回避・かすり率が高まり続ける一方で、見かけの防御比率が下がりました。これもやはり回避・かすりの判定が先に行われ、そこで回避またはかすりが選ばれなかった場合に限り、続けて防御するか否かの判定が行われていると考えるとうまくいきました。耐性と補助スキルレベルの関係を回避と同様に耐性* (補助レベル+70) として、回避とかすりを除いた試行のみから防御の比率を算出したものが図9です。

f:id:hakamaya:20220128160011p:plain

図9 耐性と防御率

 高耐性では比率が1に収束する、すなわちほとんどヒットやクリティカルが出なくなりました。他方、耐性を下げていくと防御率は1次以上に大きく落ち込んでいき、最も耐性の低い(I_0)では防御とヒット+クリティカルの回数が1:1ほどになりました。

考察

段階的な攻撃結果判定の存在

 成功に対して回避と耐性がともに高くヒットとクリティカルがほとんど発生しない場合、防御より回避またはかすりを優先することはわかりました。さらにこれは回避またはかすりになるか否かの計算の後、否だった場合に限り防御の判定計算が行われるとすると辻褄が合いました。こうした段階的な攻撃結果判定が存在すると現在は考えています。

 一方で、回避とかすりもまた判定の段階が分かれているのか、ヒットやクリティカルは回避またはかすり、防御と判定されなかった残りとしてよいのかといったところは、解析はいくらかしたものの結論が出ていません。はっきりしない原因の多くは計測の条件とサイズの不足にあり、今は解析よりそちらの充実が先です。比率の定式化をするにしても、証拠をもう少し固めてからになるでしょう。

段階的判定に伴う誤差

 今回標本誤差には、二項分布である前提でClopper-Pearsonの信頼区間を用いました。しかし、先に議論した段階的判定を認めると、その確率は二項分布に従いません。先に行われる判定の影響を受ける、条件付き確率となるためです。

 ただし、これは深刻な問題とならないと考えています。第一に、試行回数nで算出した誤差が、条件付きの厳密な誤差を上回るとは直感的には考えにくいためです。第二に、回避とかすりを除いて防御比率を出したように、ある判定後の判定についても正しい条件さえ与えてやればまた紛れもなくベルヌーイ試行になるためです。もっとも、条件が正しいかは結果がそれらしいかから事後的に判断することになりますが。

 むしろ段階的判定による誤差の大きさそのものが問題です。仮に5種の攻撃結果のうち最大の4回判定があり、1種ずつそうであるか否かが決まる仕様だとするなら、最後の判定では残りの2種のみの発生回数の和が試行回数になります。そのため、ここの相対誤差を小さくするには、単に試行回数というより残りの2種の発生回数が多くならないといけません。たとえばヒットとクリティカルがこれに該当するとなると、条件によってはそれらは精々全体の2%であったりしますから、これを50回集めるだけでも全体で2500の試行回数が要求されることになります。

まとめ

 攻撃結果の比率は、これまで具体的な値が明らかになっていませんでした。そこで、今回は攻撃機の成功、被攻撃機の耐性、回避、補助スキルレベルの4つのステータスについて、実際の計測データから比率への影響を調査しました。

 その結果、成功に対して回避が高いほど回避比率、かすり比率が増加し、耐性が高いほど防御比率が増加、反対にそれらが低いとヒットとクリティカル比率が増加するという経験的事実がはっきりと表れました。また、それらの判定は同時より段階にわかれていると見なす方が自然であることもわかりました。

 一方で、比率計算の定式化には至らず、今後も計測を増やしていく必要があります。

【メダロットS】ダメージ計算の試み #4

 こんにちは。引き続き検証記事になります。ダメージに関する成功と威力の影響を再考していきます。

概要

 これまでのメダロットSのダメージ計算の検証で、ダメージは威力の1次関数であると結論付けていました(#2)。しかし、前回の威力計算手順の検証をする中で、1次関数では説明ができないダメージを記録しました。そこで、改めて威力、加えて成功についてダメージへの影響を調べたのが本記事です。

 #2とは記録場所と相手機体を変え、その他は同様に特定の耐性、回避、補助スキルレベルを持つ相手に対し、威力と攻スキルレベル固定で成功を振ってダメージを記録、別に成功と攻スキルレベル固定で威力を振ってダメージを記録し、それぞれ防御時の平均ダメージを成功、威力の関数として解析を行いました。

 それにより、成功、威力ともに1次とした#2とは異なる結果が得られました。成功について、ダメージは成功530付近まで一定で、それ以上では係数0.40の1次関数で表せることがわかりました。また、威力については測定範囲(威力175~8619)の全領域で1次関数にならず、1次項と定数項の他に、対数項を加えた1つの式によく従うことがわかりました。

 #2と異なる結果となった理由に見当は付いており、今回の結果を疑う要素とはなりませんでした。その一方で、現時点では説明ができない新たな問題も見つかりました。また、類似したステータスである成功と威力の処理が異なることも意外です。先は長いですが、今後も地道にデータを蓄積、解析していくことが、ダメージ計算の完全な理解への近道となるでしょう。

手法

セッティング

 ダメージの記録を行った攻撃は以下の(A)から(Y)です(表1、表2)。すべて射撃スキルレベル99、地形相性はSです。

(A) ストームビーム星1Lv1ビーム、アラセLv20、威力III+III

(B) ハイパーレーザー星1Lv1レーザー、威力II+II、パワー

(C) デッドジャンゴ星1Lv1アンチエア、アラセLv20、パワー

(D) ダイモン星1Lv1ライフル、カスミLv20、パワー

(E) ダイモン星1Lv1ライフル、カスミLv20、成功II+I、パワー

(F) プレシス星2Lv1ライフル、威力IV+III、パワー

(G) バイカラー星3Lv60ビーム、コウジLv3、威力II

(H) エレクトミサイル星3Lv60アンチエア、威力I、パワー

(I) サイレントハント星5Lv90アンチシー、アズマLv20、威力II+I

(J) ハーモニー星5Lv90アンチエア、パシーラLv20、威力II+I、スナイパー

(K) ポピュラー星5Lv90デストロイ、カスミLv20、威力II+II

(L) ポピュラー星5Lv90デストロイ、カスミLv20、威力II+II、グラビティ

表1

  成功 威力
(A) 313.2 937.2
(B) 345.6 937.2
(C) 391.2 936
(D) 500.4 934.8
(E) 530.4 934.8
(F) 585.6 934.8
(G) 835.2 934.8
(H) 1089.6 934.8
(I) 1306.8 934.8
(J) 1718.4 936
(K) 2344.8 936
(L) 4209.6 936

(M) ハードターゲット星1Lv1アンチエア、アニスLv20、成功V+II

(N)マグネミサイル星1Lv1アンチエア、ソルトLv13、成功V+V

(O) グラインド星1Lv1ライフル、正月コイシマルLv1、成功V+III

(P) シグナレス星1Lv1ビーム、アニスLv20、成功V+V

(Q) ダイモン星1Lv1ライフル、キララLv3、スナイパー

(R) アキュレート星2Lv1ガトリング、カスミLv20

(S) ノーマルレーザー星2Lv30レーザー、正月コイシマルLv1、成功I

(T) ノーマルレーザー星2Lv30レーザー*1.5、正月コイシマルLv1、成功I

(U) ユニゾンレーザー星3Lv60レーザー

(V) ユニゾンレーザー星3Lv60レーザー*1.5

(W) ユニゾンレーザー星3Lv60レーザー*1.5、アラセLv20

(X) ユニゾンレーザー星3Lv60レーザー*1.5、アラセLv20、パワー、オプチカル

(Y) デスブレイン星5Lv90ハイパービーム*3、ヒカルLv20、パワー、モンキーキャッチ星5Lv90

表2

  成功 威力
(M) 738 175.2
(N) 738 196.8
(O) 736.8 356.4
(P) 736.8 468
(Q) 736.8 561.6
(P) 738 638.4
(S) 735.6 859.2
(T) 735.6 1288.8
(U) 736.8 1657.2
(V) 736.8 2485.8
(W) 736.8 3069
(X) 736.8 5475
(Y) 1081.2 8619.0

 表にある通り標本(A)から(L)まではすべて威力が936±1.2に揃うよう調整したうえで、成功を313.2から4209.6まで振り、ダメージへの成功の寄与のみを取り出します。一方で(M)から(Y)まではすべて成功が736.8±1.2に揃うよう調整したうえで、威力を175.2から5475まで振り、ダメージへの威力の寄与のみを取り出します。さらに成功の寄与を補正した標本(Y)を系列に加えることで、より高威力側まで寄与の確認をしました。

 威力ならびに成功の計算には式(1)を使用しました(威力検証)。

実行威力=((パーツ+チップ+メダロッター)*(1+乗算効果a+乗算効果b+...)+性格ボーナス+ランク効果+脚部特性)*地形相性 (1)

 (A)から(Y)のすべては、2021年12月29日から翌年の1月6日までの期間限定で開催されていた、進撃!ロボトル「年末年始のロボロボ大進撃!」のステージ10-8のビーストマスター*3機を相手に計測しました(図1)。威力検証の際と同様に、射撃ガードとCアブソーバーの併用で検証対象の攻撃を自由に繰り返し試行することができます。

f:id:hakamaya:20220109205348p:plain

図1 限定進撃ステージ10-8
収集データの扱い

 #3の手法_収集データの扱いをご参照ください。

結果

成功の評価

 威力固定で成功を変化させた(A)から(L)について、曲線でフィッティングするのに十分な試行回数を得られた、防御時のダメージについてのみ解析を行いました(表3、図2)。威力の補正には後述の威力の評価で得られた、威力936付近の傾き1.2を用いました。

表3

  成功 威力 標本サイズ 乱数幅(%) ダメージ 威力補正 誤差
(A) 313.2 937.2 109 7.19 751 -1.44 2.5
(B) 345.6 937.2 147 7.25 751.5 -1.44 2
(C) 391.2 936 133 7.25 751.5 0 2
(D) 500.4 934.8 118 7.26 750.5 1.44 2.5
(E) 530.4 934.8 140 7.12 751.5 1.44 2
(F) 585.6 934.8 148 7.23 775 1.44 2
(G) 835.2 934.8 120 7.02 876.5 1.44 2.5
(H) 1089.6 934.8 166 7.22 976.5 1.44 2
(I) 1306.8 934.8 112 7.14 1065 1.44 3.5
(J) 1718.4 936 166 7.14 1232 0 2.5
(K) 2344.8 936 98 7.11 1484.5 0 5.5
(L) 4209.6 936 87 7.21 2233 0 9

f:id:hakamaya:20220113161411p:plain

図2 成功の評価

 表3と図2のように、成功530付近でダメージの傾向に変化が生じることがわかりました。図3は差分商の散布図で、付近の近似された傾きを意味します。(A)から(E)までの5点で取った差分商はほとんどゼロで、極めて低い成功領域では、ダメージはほぼ一定であるといえます。見方を変えれば、一定以上成功が低い場合にはダメージの最低保障が働くとも解釈できるでしょう。

 一方で(E)から(L)までの区間では、傾きは0.4付近で一定で1次関数的であることがわかりました。この結果は、全成功領域で1つの(曲線の)式に従うというより、ある境界値を境に参照式が変化するとするのが自然です。(A)から(D)、(E)から(L)それぞれの回帰直線の交点の成功526をその境界値と決定しました。

f:id:hakamaya:20220113152353p:plain

図3 2つのトレンドを持つ差分商
威力の評価

 成功固定で威力を変化させた(M)から(Y)についても同様に、防御時のダメージを表4にまとめ、威力とダメージの関係を図4に示しました。

表4

  成功 威力 標本サイズ 乱数幅(%) ダメージ 威力補正 誤差
(M) 738 175.2 55 7.59 72.5 -0.48 1
(N) 738 196.8 55 7.60 85.5 -0.48 1
(O) 736.8 356.4 67 7.18 209 0 1.5
(P) 736.8 468 57 6.90 311.5 0 2
(Q) 736.8 561.6 58 7.26 406.5 0 2.5
(P) 738 638.4 41 6.94 490 -0.48 4.5
(S) 735.6 859.2 125 7.08 741.5 0.48 2
(T) 735.6 1288.8 134 7.15 1287 0.48 3.5
(U) 736.8 1657.2 113 7.28 1785 0 5.5
(V) 736.8 2485.8 129 7.16 2954.5 0 8
(W) 736.8 3069 133 7.21 3798 0 10
(X) 736.8 5475 142 7.16 7389 0 17.5
(Y) 1081.2 8619.0 70 7.22 12377.5 -137.8 61

f:id:hakamaya:20220113163041p:plain

図4 威力の評価

 全体として概ね1次関数的ではあるものの、わずかに下に凸に曲がりました。回帰直線からの残差は誤差では説明できないものです。そこで、成功の解析と同様に差分商を図5にプロットしました。

f:id:hakamaya:20220113194058p:plain

図5 単調増加する差分商

 繰り返しになりますがこれは傾きに相当する量です。図4のようにある区間で一定となればそこでは元の関数は1次関数的であるといえますし、直線であれば元の関数は2次関数的ということができます。図5はそのどちらでもなく、曲線かつ単調増加であります。したがって、元の関数を多項式関数と見るのは難しく、別の関数を探さなくてはなりません。
 結論から言うと、この差分商は (x+\mathrm{a})^{-1}によく従うことがわかりました。\mathrm{a}は回帰のパラメータの1つで、数十程度の遊びがあるようです。ここでは \mathrm{a}=270として、図5の横軸 x (= 威力)(x+270)^{-1}に変換してプロットしたものが図6です。変換後の座標系で非常に高い直線性を示す、すなわち (x+270)^{-1}に比例していることがわかります。図6中の回帰直線のパラメータをそのまま使えば、式(2)のように書けます。

\dfrac{\Delta{y}}{\Delta{x}}=1.6014-\dfrac{456.29}{(x+270)} (2)

f:id:hakamaya:20220113195633p:plain

図6 (x+a)^-1に比例する差分商

 差分商の関数がわかったところで、これをまた元のダメージyの関数に戻してやる必要があります。差分商は有限区間での微分に相当するものでもありますから、微分して  (x+\mathrm{a})^{-1}になる関数が元の関数というわけです。それは (x+\mathrm{a})の真数を持つような自然対数になります。また、式(2)は定数項も含んでいますから、それも積分して1次関数として加えてやることで式(3)を導出しました。

y=\displaystyle \int dx \dfrac{dy}{dx}

 \simeq \displaystyle \int dx \dfrac{\Delta y}{\Delta x}

 =\displaystyle \int dx \dfrac{1.6014-456.29}{x+270}

 =1.6014x-456.29\ln(x+270)+\mathrm{c} (3)

 式(2)のパラメータはあくまで差分商を最適化するものなので、ダメージの次元でもっと良い値を探し直す必要があります。わたしはこの複雑な非線形関数をフィッティングする適当な手法を知らないので、総当たり的に計算して最もうまくいった・・・・・・・・次のものに決定しました(式(4))。

y=1.602x-453\ln(x+270)+2553 (4)

 式(4)と実測値の差をプロットしたものが図7です。ここでの誤差棒は実測値の99%信頼区間をそのまま持ってきたものであることにご留意ください。式(4)は実測値を完全に再現するには至りませんでした。しかしながらその差は誤差範囲から最大でも±2に止まるものです。

f:id:hakamaya:20220114150258p:plain

図7 式(3)によるダメージの再現

 フィッティングに伴う恣意性は、主に低・中・高威力領域のどこを実測値と合わせてどこを合わせないかに効いていて、そのうち式(3)は全点について信頼区間以上に最も離れる点(ここでは(S))が最もよく近づくように決定しました。ここで、ある隣接する2点が上と下の逆方向にずれているといったことは、フィッティングの良し悪しでどうなるものでもありません。こうした問題がフィッティング関数が適切でないことから来ているのか、測定作業における過失から来ているのか、あるいはそれ以外の何が原因かというのはわかっていません。

成功と威力の同時評価

 今回新たに取得した(A)から(Y)に加え、威力検証で同じくビーストマスター相手に取得した、スイチュウフロー系列(成功844.8~1013.8、威力415.2~1219.2)の14点とノーマルレーザー系列(成功661.2~901.2、威力1288.8~2148)の8点は、成功 aと威力 bのみを変数とする同一のダメージ Dの式を適用することができます。これら47点について、式(5)または式(6)で予測したダメージと実測値との差を図8(横軸成功)、図9(横軸威力)に示しました。

D=0.013a+1.602b-453\ln(b+270)+840 (a\leq526) (5)

D=0.402a+1.602b-453\ln(b+270)+840 (a\gt526) (6)

f:id:hakamaya:20220114152308p:plain

図8 成功と威力の同時評価

f:id:hakamaya:20220114152438p:plain

図9 成功と威力の同時評価

 47点は成功と威力を同時に広範に取っているわけではない、とりわけ中~高成功かつ中~高威力のデータが不足していますが、少なくとも今回の系列内で破綻が無いかの確認はできます。やはり追加したデータの中にも完全再現できていないものが見つかりました。特に誤差範囲含むダメージ域からの距離が大きいものは、威力チップ付きでシュートブースト状態のスイチュウフローの+22、バレットレイン付きで威力1.5倍のノーマルレーザーの-12、効果なしのスイチュウフローの+10でした。これらの系統的理由は見つかっていません。しかしながら、成功と威力についてただの1次関数とした式(7)との再現レベルは雲泥の差で(図10)、場合分けや対数補正項を加えたことの有効性が大いに示されました。

D=0.399a+1.443b-781 (7)

f:id:hakamaya:20220114152945p:plain

図10 1次関数によるダメージ再現

考察

#2との比較

 今回と同じく成功と威力についてダメージへの影響を調べた#2では、成功と威力ともに1次関数としてふるまうと結論付けていました。少なくとも威力についてはおそらくこの結論は誤りで、正しく記録と解析を行えば、今回のように曲がるだろうとみています。最大の原因は、まさか少しだけ曲がるとは思いもしなかったという決めつけでしょう。直線性があるという結論ありきの検証ならば、間隔の開いた3、4点を取れば済み、相手の耐性の違いや試行回数不足に伴う測定誤差もさほど問題になりません。むしろ回帰式からの残差をそうした誤差に都合よく押し付けることになっていました。曲がる可能性を排除するなら、最低限耐性が統一されたデータを取るべきです。

威力検証ライジュウコウ系列との比較

 同一機体相手のスイチュウフロー系列とノーマルレーザー系列についてはすでに一緒に成功と威力の評価をしてみましたが、ここではライジュウコウ系列についても比較を試みます。収集場所がストーリー第4章6-1VHで、相手もヒメダッカー(射耐380.4、回避1850.4、補助スキルレベル43)と異なるため、直接ダメージの比較はできません。ここでは同威力領域での傾きを比べます。

 ライジュウコウ系列では、ヒメダッカー相手に威力1882.8から2271.6の6点の回帰式の傾きが1.54でした。一方で今回得た式(6)の威力2100での傾きは1.41ほどです。威力2300でもやはり傾きは1.43ほどに止まり、対ヒメダッカーのものに遠く及びません。これはダメージの威力項に威力以外の独立変数が含まれていることを示唆しており、両者で大きく異なるたとえば射耐や回避が関係しているのかもしれません。少なくともこの相違が、成功と威力の評価の検証がまだ終わりではないと語っていることは確かです。

まとめ

 過去の検証でのダメージは威力の1次関数であるとする結論では説明できない事実が見つかり、今回再び威力、加えて成功のダメージへの影響を調査しました。

 その結果、成功は一定値以下でのダメージの最低保障の存在が確認され、以降は1次関数で表せることがわかりました。一方で威力については、調査した全領域で1次項と定数項の他に、対数項を加えた1つの式によく従うことがわかりました。

 ただし、今回得た近似式は他の条件で取られたダメージのデータには必ずしも合致せず、根気強い記録と解析が引き続き求められます。