Баланс
14:21, 13 май 2011
В последнее время участились жалобы на баланс, на засилье уворотов, которые слишком много уворачиваются и про танков, которые не танкуют. Тема важная, поэтому мы решили проверить наличие баланса в игре на уровне формул. Выкладыю вам представленный отчет. Он был составлен с помощью тысяч автоматических боев, которые проводились на персонажах разного уровня. В результатах можно увидеть усредненные показатели по оставшемуся количеству хп рассматриваемой пары в выбранных уровневых группах с различными комбинациями расходки.
Кому не интересны выкладки, могу резюмировать. Проблемы в балансе не обнаружено. Если обобщить, то усредненное значение оставшегося хп после проведение 1000 боев у противокласа колеблется в районе 20%.
Test datas[1] for level 20 for BR = nil
Crit-Dex level(20) for fightcnt 1000 result - 1.0145352112676 1.2322056338028
Dex-Tank level(20) for fightcnt 1000 result - 1.0131718309859 1.2026450704225
Tank-Crit level(20) for fightcnt 1000 result - 1.0052816901408 1.223185915493
Test datas[2] for level 20 for BR = nil
Crit-Dex level(20) for fightcnt 1000 result - 1.0034765306122 1.1896081632653
Dex-Tank level(20) for fightcnt 1000 result - 1.0018132653061 1.1813816326531
Tank-Crit level(20) for fightcnt 1000 result - 1.0004153061224 1.1834428571429
Test datas[3] for level 20 for BR = nil
Crit-Dex level(20) for fightcnt 1000 result - 1.0035994344958 1.2065937794533
Dex-Tank level(20) for fightcnt 1000 result - 1.0014750235627 1.195808671065
Tank-Crit level(20) for fightcnt 1000 result - 1.0003072573044 1.2002252591894
Test datas[4] for level 20 for BR = 0.05
Crit-Dex level(20) for fightcnt 1000 result - 1.0070622054665 1.1940772855796
Dex-Tank level(20) for fightcnt 1000 result - 1.0020037700283 1.1947191328935
Tank-Crit level(20) for fightcnt 1000 result - 1.0018963242224 1.2019981149859
Test datas[5] for level 20 for BR = 0.1
Crit-Dex level(20) for fightcnt 1000 result - 1.0067031102733 1.2111244109331
Dex-Tank level(20) for fightcnt 1000 result - 1.0034081055608 1.1995098963242
Tank-Crit level(20) for fightcnt 1000 result - 1.0031602262017 1.1989349670123
Test datas[1] for level 15 for BR = nil
Crit-Dex level(15) for fightcnt 1000 result - 1.0141471861472 1.2332683982684
Dex-Tank level(15) for fightcnt 1000 result - 1.0101904761905 1.2061904761905
Tank-Crit level(15) for fightcnt 1000 result - 1.005683982684 1.2230822510822
Test datas[2] for level 15 for BR = nil
Crit-Dex level(15) for fightcnt 1000 result - 1.0032570532915 1.1961865203762
Dex-Tank level(15) for fightcnt 1000 result - 1.0016065830721 1.1787507836991
Tank-Crit level(15) for fightcnt 1000 result - 1.0009200626959 1.191078369906
Test datas[3] for level 15 for BR = nil
Crit-Dex level(15) for fightcnt 1000 result - 1.0029463768116 1.2091014492754
Dex-Tank level(15) for fightcnt 1000 result - 1.0013811594203 1.1924449275362
Tank-Crit level(15) for fightcnt 1000 result - 1.000515942029 1.2037695652174
Test datas[4] for level 15 for BR = 0.05
Crit-Dex level(15) for fightcnt 1000 result - 1.0059101449275 1.202652173913
Dex-Tank level(15) for fightcnt 1000 result - 1.0016565217391 1.1990565217391
Tank-Crit level(15) for fightcnt 1000 result - 1.0017550724638 1.1980275362319
Test datas[5] for level 15 for BR = 0.1
Crit-Dex level(15) for fightcnt 1000 result - 1.0065942028986 1.2120579710145
Dex-Tank level(15) for fightcnt 1000 result - 1.0020536231884 1.2004898550725
Tank-Crit level(15) for fightcnt 1000 result - 1.0035985507246 1.2033130434783
Test datas[1] for level 10 for BR = nil
Crit-Dex level(10) for fightcnt 1000 result - 1.0144671052632 1.2222565789474
Dex-Tank level(10) for fightcnt 1000 result - 1.0101842105263 1.2147894736842
Tank-Crit level(10) for fightcnt 1000 result - 1.0044671052632 1.2251513157895
Test datas[2] for level 10 for BR = nil
Crit-Dex level(10) for fightcnt 1000 result - 1.004719047619 1.1887047619048
Dex-Tank level(10) for fightcnt 1000 result - 1.0013 1.1810952380952
Tank-Crit level(10) for fightcnt 1000 result - 1.0003380952381 1.1872785714286
Test datas[3] for level 10 for BR = nil
Crit-Dex level(10) for fightcnt 1000 result - 1.003178021978 1.2093956043956
Dex-Tank level(10) for fightcnt 1000 result - 1.0011934065934 1.193789010989
Tank-Crit level(10) for fightcnt 1000 result - 1.0003846153846 1.2031340659341
Test datas[4] for level 10 for BR = 0.05
Crit-Dex level(10) for fightcnt 1000 result - 1.0044681318681 1.2105208791209
Dex-Tank level(10) for fightcnt 1000 result - 1.002421978022 1.1958285714286
Tank-Crit level(10) for fightcnt 1000 result - 1.0013714285714 1.1985626373626
Test datas[5] for level 10 for BR = 0.1
Crit-Dex level(10) for fightcnt 1000 result - 1.0066043956044 1.2171428571429
Dex-Tank level(10) for fightcnt 1000 result - 1.003167032967 1.1891164835165
Tank-Crit level(10) for fightcnt 1000 result - 1.0033142857143 1.2010087912088
Test datas[1] for level 35 for BR = nil
Crit-Dex level(35) for fightcnt 1000 result - 1.0140682999258 1.2203496659243
Dex-Tank level(35) for fightcnt 1000 result - 1.0125204157387 1.201416481069
Tank-Crit level(35) for fightcnt 1000 result - 1.0040237564959 1.2286481069042
Test datas[2] for level 35 for BR = nil
Crit-Dex level(35) for fightcnt 1000 result - 1.004065626681 1.1869367939753
Dex-Tank level(35) for fightcnt 1000 result - 1.0023165680473 1.1777278106509
Tank-Crit level(35) for fightcnt 1000 result - 1.000427380312 1.1852294244217
Test datas[3] for level 35 for BR = nil
Crit-Dex level(35) for fightcnt 1000 result - 1.0025594735535 1.2041442761361
Dex-Tank level(35) for fightcnt 1000 result - 1.0017760119195 1.1974524459896
Tank-Crit level(35) for fightcnt 1000 result - 1.0006985348895 1.1983004718152
Test datas[4] for level 35 for BR = 0.05
Crit-Dex level(35) for fightcnt 1000 result - 1.0052244847281 1.2073372237398
Dex-Tank level(35) for fightcnt 1000 result - 1.0023727340452 1.1936563198411
Tank-Crit level(35) for fightcnt 1000 result - 1.0013307673206 1.1983215793395
Test datas[5] for level 35 for BR = 0.1
Crit-Dex level(35) for fightcnt 1000 result - 1.0073677675689 1.2034735535138
Dex-Tank level(35) for fightcnt 1000 result - 1.0036225478023 1.1977333002235
Tank-Crit level(35) for fightcnt 1000 result - 1.0042950086913 1.1981931959275
Test datas[1] for level 30 for BR = nil
Crit-Dex level(30) for fightcnt 1000 result - 1.0114430232558 1.2295976744186
Dex-Tank level(30) for fightcnt 1000 result - 1.0119581395349 1.198538372093
Tank-Crit level(30) for fightcnt 1000 result - 1.0030186046512 1.2360674418605
Test datas[2] for level 30 for BR = nil
Crit-Dex level(30) for fightcnt 1000 result - 1.0046902654867 1.1888748419722
Dex-Tank level(30) for fightcnt 1000 result - 1.0014281500211 1.1785360303413
Tank-Crit level(30) for fightcnt 1000 result - 1.0008803202697 1.1884471133586
Test datas[3] for level 30 for BR = nil
Crit-Dex level(30) for fightcnt 1000 result - 1.0035237354086 1.196333463035
Dex-Tank level(30) for fightcnt 1000 result - 1.0014844357977 1.1971836575875
Tank-Crit level(30) for fightcnt 1000 result - 1.0002871595331 1.1998077821012
Test datas[4] for level 30 for BR = 0.05
Crit-Dex level(30) for fightcnt 1000 result - 1.0041245136187 1.204460311284
Dex-Tank level(30) for fightcnt 1000 result - 1.0022817120623 1.196946692607
Tank-Crit level(30) for fightcnt 1000 result - 1.0014727626459 1.2002708171206
Test datas[5] for level 30 for BR = 0.1
Crit-Dex level(30) for fightcnt 1000 result - 1.0078354085603 1.2030311284047
Dex-Tank level(30) for fightcnt 1000 result - 1.0031968871595 1.1985023346304
Tank-Crit level(30) for fightcnt 1000 result - 1.0037019455253 1.20913307393
Test datas[1] for level 25 for BR = nil
Crit-Dex level(25) for fightcnt 1000 result - 1.0146370235935 1.2212141560799
Dex-Tank level(25) for fightcnt 1000 result - 1.0109255898367 1.2041161524501
Tank-Crit level(25) for fightcnt 1000 result - 1.0042903811252 1.2242359346642
Test datas[2] for level 25 for BR = nil
Crit-Dex level(25) for fightcnt 1000 result - 1.0036896778435 1.1846285338593
Dex-Tank level(25) for fightcnt 1000 result - 1.0014457593688 1.1802432610125
Tank-Crit level(25) for fightcnt 1000 result - 1.0007692307692 1.1887054569362
Test datas[3] for level 25 for BR = nil
Crit-Dex level(25) for fightcnt 1000 result - 1.003364298725 1.2085385549484
Dex-Tank level(25) for fightcnt 1000 result - 1.0011888281724 1.1955160898604
Tank-Crit level(25) for fightcnt 1000 result - 1.0003254401943 1.2049301760777
Test datas[4] for level 25 for BR = 0.05
Crit-Dex level(25) for fightcnt 1000 result - 1.0051353976928 1.2039781420765
Dex-Tank level(25) for fightcnt 1000 result - 1.0017850637523 1.195737704918
Tank-Crit level(25) for fightcnt 1000 result - 1.0020886460231 1.1971997571342
Test datas[5] for level 25 for BR = 0.1
Crit-Dex level(25) for fightcnt 1000 result - 1.0049987856709 1.2127091681846
Dex-Tank level(25) for fightcnt 1000 result - 1.003766848816 1.1954037644202
Tank-Crit level(25) for fightcnt 1000 result - 1.0029137826351 1.2070625379478
Так что в формулах проблемы нет. Они работают отлично. Но одновременно с этим, мы видим, что класс танка не так популярен в игре, как хотелось бы. Поэтому допускаем, что хоть сам базовый баланс правильный, в игре могут быть обстоятельства и элементы механики, которые по разному влияют на классы. Например, крит может убить уворота в несколько ударов, если у него пройдут криты, а у уворота не пройдут увороты. А у защитника, такая возможность классом не предусмотрена. На больших числах это не сказывается, но для отдельных боев это может быть показательно. Защитник стабилен, а остальные классы рандомные. Поэтому когда у убийцы проходит 20 уворотов подряд в отдельно взятом бою, все начинают говорить о перекрученности уворота и т.д. А у защитника, таких взрывов, привлекающих внимания нету.
В общем, с моей точки зрения, проблема не в балансе, а в «заурядности» этого класса. Поэтому, будем чуть-чуть менять эту ситуацию =)