На игровом сервере установлен боевой движок UBEv2 с поддержкой скорострела.
В симуляторе убрана случайная составляющая. Это позволит не пересчитывать результаты по десять раз, что бы получить примерное представление о бое, а с первого раза увидеть результат "в нормальных условиях" без влияния случайностей.
ВНИМАНИЕ! Скорострел работает НЕ ТАК, КАК НА ОФФЕ!
Логика работы скорострела:
Предпоалагается, что оба флота летят в формации "диск". Что, в целом, логично - надо максимизировать возможность каждого корабля дать залп.
Залп флота распределяется между классами кораблей противника в зависимости от брони (ака - тоннажа, ака размера). Тоже логично - в большую цель легче попасть.
Щиты принципиально отличаются от брони тем, что щиты считаются целиком по типу кораблея, а броня - индивидуально для каждого корабля. Т.е. что бы повредить один корабль, сначала надо пробить щиты по типу кораблей.
При выстреле атакующего в противника, против которого у аттакера есть скорострел, урон увеличивается кратно скорострелу. Это отражает заточенность одних кораблей против других. Обращаю внимание - скорострел применяется уже по щитам.
Дальше часть урона поглощается щитами, а если что-то прошло сквозь щиты - наносится повреждение по броне.
А там сравниваем прошедший урон с броней и списываем нужное количество корабликов.
FAQ по скорострелу:
Q: Что означает в описании корабля Х строка "Одним залпом поражает КорабльY ZШтук"?
A: Она означает, что если корабль Х (при отсутсвии бонусов к щитам/броне/урону и отсутсвии офицеров) встретится с ZШтук кораблей разновидности КорабльY, то за один раунд корабль Х уничтожит все корабли противника.
Q: Корабль Х уничтожил корабли противника, но ответным залпом его самого сбили!!!
A: А так вполне может быть. Выживаемость корабля Х никто не гарантировал
Q: Как-то странно выбираются цели при залпе...
A: Увы, что бы корректно выбирать цели, необходимо обсчитывать каждый корабль. Т.е. во-первых - иметь индивидуальную запись каждого корабля. Во-вторых - вычислять эффективность удара в зависимости от параметров каждого корабля, т.е. совершать просмотр огромного количества информации каждый ход. Если даже применять всякие алгоритмы оптимизации и сортировки, то на величинах порядка десятков тысяч кораблей (обычная бойня между топ-флотами даже по меркам нашего сервера) количество вычислений будет чрезвычайно велико. И это не считая сложности разработки более-менее оптимального алгоритма. Поэтому ради ускорения расчетов приходится идти на сознательное огрубление модели.
Q: Просуммировал нанесенные повреждения, а затем посчитал, сколько должно было быть нанесено повреждений. Цифры не совпадают!!!
A: Поскольку применяется достаточно грубая и упрощенная модель (см. предыдущий ответ), часть урона может пропасть. Например, если несколько атакующих стреляют по одним и тем же кораблям и первым залпом корабли защитника уничтожены, то остальной урон прийдется на пустое место, т.е. "пропадет". Учет "пропавшего" урона потребовал бы перерасчета всех оставшихся категорий кораблей на каждой итерации, т.е. существенно увеличил бы нагрузку (эксперимент такого рода проводился). Кроме того, если урон приходится на последние корабли противника, часть его все равно пропадет.
Установлен UBEv2
Модератор: Gorlum