АХТУНГ!!
Если в одном месте горит и нет времени читать, или с трудом даются русские буквы, то все выводы заключены в выноски и выделены жирным шрифтом
Сидели мы тут в скайп-конфе, с LInfo и думали, как же все-таки просчитываются результаты боя в Сеттлерсах.
И таки разгадали, чем думали программисты при составлении калькулятора.
Итак, что мы имеем:
таблицы юнитов
и врагов
расшифрую колонки по-порядку:
Einheit - Наименование юнита
Kurzel - Буквенное обозначение
HP - количество хп
Max. - максимальная сила удара
Min. - минимальная сила удара
Durchschn. - средняя сила удара
Trefferchanche - шанс срабатывания
Initiative - Инициатива
Turm - тип войска (башенный или нет)
EP - количество экспы за тушку
Вначале обратили внимание на Средний дамаг, как он получается? Если взять, к примеру, рекрута, то средний дамаг должен быть равен (15+30)/2=22,5. А по таблице 27. Видимо, какие-то коэффициенты.
Поехали дальше, Шанс срабатывание - шо это? Видимо шанс - попадет или нет удар по противнику.
LInfo, который допиливал свой калькулятор боя, предложил следующую формулу боя. Мы помозговали и добили ее до опытного вида (пытались получить формулу минимального и достаточного урона для победы на противником за один раунд при бое "рекрут против разбойника")
dmg = min(rand(15,30)*0,8)*n
где:
dmg - итоговый дамаг
rand(15,30) - рандомный дамаг в диапазоне рекрута (по таблице 15-30)
0,8 - это шанс срабатывания
n - количество юнитов данного типа (здесь: рекрут)
Формула вырвана из цикла в 20 повторов для нахождения минимального значения и переведена в более понятную форму (оригинал на пхп)
Вроде все верно: юнит рандомно бьет с рандомной силой, умножить на количество юнитов в стеке
Но не клеилось.
По сравнению с официальным калькулятором выходили серьезные погрешности.
Официальная вики в машинном переводе чуть не привела к коллапсу серого вещества. поэтому решили думать своими силами.
Полезли в кальк, смотрели по-шаговый бой
вот частичный пример первого раунда
Что мы видим
Rekrut verursacht 30 Schaden an Pluenderer (10HP)
Rekrut verursacht 15 Schaden an Pluenderer (-5HP)
Rekrut verursacht 30 Schaden an Pluenderer (10HP)
Rekrut verursacht 30 Schaden an Pluenderer (-20HP)
Rekrut verursacht 30 Schaden an Pluenderer (10HP)
Rekrut verursacht 30 Schaden an Pluenderer (-20HP)
Что за цифры в скобочках? Наверное, сколько урона нанес рекрут. Ок. А что это в следущей строке? (-5) Это как? Он сам себе вмазал? Или промахнулся на -5? А как тогда можно промахнуться на -20?
Тогда цифры в скобках - это сколько хп осталось у противника. Но, опять же, как это - -5 хп? Убил и воскресил с 5 хп? Или это кровотечения?
Ну не могли же так заморочиться программисты.
А что это такое - почему все удары у рекрутов по 15 и по 30? а где рандом, неужели нам так повезло? пробуем еще один бой и еще. Везде удары по 15 и по 30.
то есть, либо создатели калькулятора сами не ведали о формулах расчета, либо...
=====================================================
юниты имеют только два типа атаки - минимальную и максимальную.
А каким ударом они бьют решает рандом.. или [b]шанс срабатывания
Проверяем:
(30*0,8 + 15*0,2) = 27 !!!! как в таблице
То есть, получается, что 80% - это шанс нанести максимальный урон
=====================================================
Тогда наша формула в корне не верна.
Мы вернемся к ней чуток позднее
А пока давайте, все же, разберемся с пошаговым боем и странными отрицательными цифрами в скобках.
Теперь мы знаем, что юниты бьют либо свой минимальный, либо свой максимальный дамаг.
Смотрим на бой.
Что будет, когда рекрут ударит 30 дмг? у разбойника останется (40-30)= 10 хп
Второй рекрут бьет 15 и у разбойника остается (10-15)= -5 хп wtf O_o
Зомби, они среди нас
На самом деле, все гораздо проще.
=====================================================
Второй добивает полуживого мародера и затаптывает его тушку в землю.
Третий рекрут бьет уже второго мародера, четвертый также добивает и вбивает в землю
И самое главное: когда бьет Генерал (120), он не убивает одним ударом троих , а убивает одного, нанося ему 120 дамага (разрывает нахрен в клочья).
таким образом, самая главная мысль, которая чуть не увела нас в неизвестном направлении - в отличие от героев меча и магии и иже с ними, дамаг, превосходящий хп у единицы противнка, не переносится на следующую единицу противника, а исчезает в небытие.
=====================================================
Поэтому вольная трактовка "у меня 100 рекрутов, поэтому они убьют
(100*(30*0,8+15*0,2)/40)=67,5=67 мародеров" - НЕ ВЕРНА !!.
При небольших стеках этой формулой можно пользоваться, но при большой и разнообразной армии вы можете быть ооочень сильно удивлены результатом боя.
Вернемся к формуле.
Как высчитываются дамаги:
Опять же, в отличие от героев меча и магии, система боя больше подходит под Age of Wonders.
Бой считается для каждого юнита в отдельности
x = rand (0,100) if x <= 80 then y = z - 30 else y = z - 15 end
Примерный прикид. Здесь нет проверки на трупность Y, количества сходивших, записи дамага в массив для генерации пошагового результата и общего дамага за раунд. да и незачем это в общепозновательной статье
Принцип: вычислили дамаг, вычли из хп врага, проверили не труп ли, пустили к врагу следущего рекрута или достали нового врага. Циклируем.
Есть еще такая штука как Инициатива
при нападении на форт с собаками. имеющими высокую инициативу, первыми сходят не наши войска, а собаки, затем сходят наши юниты, после этого оставшиеся юниты противника. Если у нас есть кавалерия (с высокой инициативой), то получится бутерброд )
после того, как сходят юниты с одинаковой инициативой происходит промежуточный просчет дамага. то есть, когда сходят псы, с нас вычтут погибших рекрутов, затем сходят наши рекруты и лучники, вражеские мародеры и пращники и подведется окончательный расчет дамага. В случае с кавалерией, промежуточный дамаг будет после ходов коней и псов.
Боссы.
Расчет повреждений не учитывает промежуточные параметры.
То есть, если в конце боя у вас осталось 1,5 солдата, то по окончании боя у вас будет 2 здоровых юнита.
Таким образом, нападать на форты с боссами надо такими войсками, чтобы вынести его в течение одного боя (не раунда, а боя), не считаясь с потерями в личном составе.
UPD
Вижу, идут споры, нужно или нет строить луков.
Мое мнение - нужно, но!
Модель поведения такова: надо составлять армию таким образом. чтобы вынести противника за один раунд. Это всем понятно.
Имеем исходные данные с учетом специфики расчета дамага, который приведен выше.
=====================================================
нам нужно иметь количество рекрутов достаточное, чтобы сдержать дамаг врага (мародеры + пращники) и не допустить их до лукарей, от которых они дохнут аки мухи.
на первых порах достаточно построить 20 луков ( этого хватит, чтобы захватить правый сектор)
после захвата правого сектора вы пойдете на северо-восток
для него будет достаточно 30-40 луков
=====================================================
сейчас у меня 40 луков и мне хватает с головой, но я уже поднимаю до 50ти
давайте представим, что вы нападаете на форт с 80 мародерами. явно не силами 60 рекрутов. вы накопите, как минимум 100.
итак, расклад боя по версии калькулятора:
100 рекрутов - 100 мародеров: потери 48-53 (мин - макс) рекрутов
80 рекрутов, 20 лукарей: 45-50
70-30: 43-49
60-40: 42-48
50-50: 40-46
уменьшать количество рекрутов ниже смысла нет, так как они не защитят лукарей в большинстве боев.
взглянем на итоги:
1 вариант - давлю зергом рекрутов - теряю половину войска
2 вариант - сбалансированное войско - я сохраняю жизни до 10 рекрутам
профит 10 рекрутов каждый бой, раз за разом
легко посчитать, какая экономия у меня будет и как быстро я зачищу сектор
но у нас зачастую идут смешанные бои:
второй пример, реальный форт, 50 мародеров и 20 пращников
не буду грузить, приведу сразу оптимальные результаты:
100: 48-57
50-50: 34-41
40-60: 35-40
50 рекрутов и 50 лукарей (40 рекрутов, 60 лукарей) спасают жизни в среднем 13-17 рекрутам !!
Какой итог всему этому? я побеждаю гораздо выгоднее со стороны экономики, моя армия более мобильна, а значит более часто может вступать в бой, что означает более быструю прокачку и более раннее открытие новых технологий.
однако, когда в бой вступают собаки, то лучники становятся малоэффективными, так как собаки атакуют сперва их.
против собак надо использовать конницу или милицию (если вместо луков в отряде будет милиция, то дамаг сохранится, а собаки атакуют рекрутов, так как собаки атакуют юниту с наименьшим количеством хп)
прежде чем вступить в бой, поиграйтесь с калькулятором.
Отредактировано hronorog (2010-12-30 01:48:41)