Предлагаю метод расчёта показателя боевого опыта игроков.
Прошу проверить показатель боевого опыта на справедливость (удобство, наглядность, возможность накруток и т.п.). Вдруг разрабам он понравится, а нам, игрокам, с этим потом маяться.
Итак, по порядку.
В хелпе портала Unlimited приведена ключевая боевая характеристика юнитов: "Боевая эфективность атакующего юнита, приведенная к 1 продиуму". Для определённости, назовём её УВЭЮ (удельная взаимная эффективность юнитов).
В условиях дуэльного боя двух групп юнитов одинакового веса, УВЭЮ показывает,
во сколько раз надо изменить продовый вес группы атакующих юнитов, чтобы эта группа сравнялась по боеспособности с группой юнитов-защитников. То есть, чтобы они воевали вечно (в нашем случае - 20 раундов).
Например, солдат против камикадзе имеет УВЭЮ, равную 1,74 . Чтобы группа солдатов воевала бесконечно долго с группой камикадзе, вес группы солдатов должен быть меньше в 1,74 раза веса группы камикадзе. То есть, солдат эффективен камикадзе в 1,74 раза по весу - берёт умением, а не весом.
УВЭЮ расчитывется через табличные параметры юнитов следующим образом:
УВЭЮij = КОРЕНЬ((ЭУi * Кij * ЭБi) / (ЭУj * Кji * ЭБj)) * (Пj / Пi), где
ЭУi и ЭУj - эффективные уроны i и j юнитов (результат произведения значений "Нападение" и "Урон" юнитов);
ЭБi и ЭБj - эффективные брони (

) i и j юнитов (результат произведения значений "Защитное поле" и "Броня" юнитов);
Кij и Кji - коэффициенты "К юнит против юнита";
Пi и Пj - продовый вес групп юнитов (для единичных весов - опускается).
А корень тут применяется, чтобы обеспечить линейность показателя: во сколько раз.
УВЭЮ можно расчитать и по результату первого раунда боя между группами юнитов. (Зачем это делать, если её можно расчитать по табличным параметрам (и, вообще, - она уже расчитана!), станет ясно позже).
Система уравнений для первого раунда боя двух групп юнитов:
ЭБiк = ЭБiн - Уj
ЭБjк = ЭБjн - Уi
где
ЭБiн и ЭБiк - начальная и конечная эффективная броня i-й группы юнитов;
ЭБjн и ЭБjк - начальная и конечная эффективная броня j-й группы юнитов;
Уi = ЭУi * Кij - урон от i-й группы юнитов j-й группе;
Уj = ЭУj * Кji - урон от j-й группы юнитов i-й группе;
Если ЭБк меньше или равны нулю, группы считаются уничтоженными.
Введём два важных "внутренних" юнитных параметра:
Удельный эффективный урон V, который равен произведению значений "Нападение" и "Урон" юнита, делённого на вес юнита.
Удельная эффективная броня Z, которая равна произведению значений "Защитное поле" и "Броня" юнита, делённого на вес юнита.
Тогда формула боя примет вид:
Пiк * Zi = Пiн * Zi - Пjн * Vj
Пjк * Zj = Пjн * Zj - Пiн * Vi,
где
Пiн и Пiк - вес группы i-го юнита на начало и конец боя;
Пjн и Пjк - вес группы j-го юнита на начало и конец боя.
После простых преобразований получим систему уравнений:
Vj / Zi = (Пiн - Пiк) / Пjн
Vi / Zj = (Пjн - Пjк) / Пiн
Подставив "внутренние" параметры в формулу УВЭЮ, получим
УВЭЮij = КОРЕНЬ((ЭУi * Кij * ЭБi) / (ЭУj * Кji * ЭБj)) * (Пj / Пi) =
= КОРЕНЬ((Пiн * Vi * Пiн * Zi) / (Пjн * Vj * Пjн * Zj)) * (Пjн / Пiн) =
= КОРЕНЬ((Vi * Zi) / (Vj * Zj)).
Подставив отношения "внутренних" параметров в последнюю формулу, получим окончательный вид УВЭЮ, который расчитывается по результату боя (начальным и конечным весам групп юнитов):
УВЭЮij = КОРЕНЬ(((Пjн - Пjк) * Пjн) / ((Пiн - Пiк) * Пiн)).
Я так подробно всё это изложил для того, чтобы показать: формула не с потолка, не выдумана - по ней расчитывается эффективность юнитов.
Это "родная" формула игры, непосредственно зависящая от действующей в игре формулы боя.
Обращаю внимание опытных игроков, что под корнем стоит отношение потерь групп юнитов. То есть, тот параметр, который используется в калькуляторах логовниц и очень информативен для анализа боёв. Но в этой формуле отношение потерь применено в более продвинутой форме: она есть корень из отношения
нормированных потерь. А сама нормировка осуществляется по принципу: вес своих потерь нормируются к начальному весу вражеской группы юнитов, которая эти потери и нанесла. Очень, скажу так, получилось мудро.
Итак, моё предложение:
использовать эту же формулу для расчёта эффективности армий в бою, а также для определения и накопления боевого опыта игроков.
(С учётом дополнений и поправок от 29 июля и 10 августа)
Удельная взаимная эффективность армий равна:
УВЭАij = КОРЕНЬ(((Пjн - Пjк) * Пjнб) / ((Пiн - Пiк) * Пiнб)).
УВЭАij = 1 / УВЭАji
где
Пiн и Пiк - полные веса группы i-го юнита на начало и конец боя;
Пjн и Пjк - полные веса группы j-го юнита на начало и конец боя;
Пiнб - боевой вес (без чемоданов и с учётом веса неуязвимых юнитов) группы i-го юнита на начало боя;
Пjнб - боевой вес (без чемоданов и с учётом веса неуязвимых юнитов) группы i-го юнита на начало боя.
(Нормирование к боевым (а не полным!) весам армий противника исключает возможность чемоданных накруток).
Я провожу такие аналогии:
"юнит" - "группа армий",
"внутренние" юнитные параметры (V и Z) - мастерство игрока формировать и управлять своими армиями во время боя.
Смысл показателя: во сколько раз надо изменить вес всех армий атакера, чтобы боеспособность всех его армий сравнялась с боеспособностью всех армий защитника (при неизменном их мастерстве!). То есть, во сколько раз атакер эффективнее защитника по весу своих армий.
Напоминаю, это удельный показатель, показывающий боевую эффективность каждой единицы веса армий. И в этом его прелесть: он показывает именно мастерство игрока, а не весовые преимущества его армий. Чем больше показатель превышает единицу, тем лучше он способен управляться со своими армиями. И наоборот - меньше единицы - мастерство под сомнением. Прямая аналогия с юнитной эффективностью.
Общий случай для боя двух игроков:
Первая армия атакера прилетает на соту защитника, где вступет в бой на несколько раундов. В течение этих раундов прилетают ещё несколько армий атакера (этого же).
На соте защитника уже стоят несколько армий, а также возвращаются на соту в течение боя. Из торгователей, заводов и трансферов во внутреннюю армию также вываливаются юниты и вступают в бой.
По окончании боя расчитываются суммарный начальный и конечный полный вес всех армий атакера и начальный боевой вес, а также - защитника. Эти шесть параметров подставляются в формулу УВЭА и получается показатель эффективности армий.
Накопление боевого опыта игроков.
С одним боем всё ясно: для каждого игрока расчитывется УВЭА, который и является его боевым опытом.
А если игрок провёл несколько дуэлей? Каким образом корректно учитывать результаты очень разных (по весу) боёв?
Просто складывать УВЭА для разных боёв нельзя. Необходимо взвешенное накопление результатов всех боёв, по которому и следует расчитывать УВЭА.
УВЭА - показатель удельный, поэтому начальные и конечные веса армий после каждого боя надо нормировать к общему боевому (!) весу всех армий, участвовавших в бое.
Таким образом, для каждого игрока
вводится не один параметр накопления, как сейчас - боевой опыт,
а шесть параметров - накопителя: суммы удельных весов своих армий (начальных и конечных полных, а также начальных боевых) и армий (начальных и конечных полных, а также начальных боевых) всех своих врагов, с которыми воевал.
После каждого боя расчитываются удельные веса армий, нормированные к общему боевому весу всех армий в этом бое, и добавляются к сумматорам-накопителям. И только после этого значения этих сумматоров подставляются в формулу УВЭА, получая искомый
общий боевой опыт.
Расчёт начальных и конечных весов армий для боёв, в которых участвуют несколько игроков.
Это наиболее общий случай: бой из нескольких раундов с произвольным количеством участников, имеющих произвольное количество армий произвольного состава, прилетающих на соту в произвольное время этого боя.
Сначала во всех раундах боя выделяются моменты, в которых армии-участники боя обмениваются ударами. Эти моменты я назвал микробоями (лучшего названия не придумал). В старой системе боя обмен ударами был в конце каждого раунда - количество микробоёв равнялось количеству раундов. В новой системе - и в середине раунда возможен обмен ударами.
Затем для каждого микробоя определяется состав армий - участников, которые прибыли или уцелели к началу текущего микробоя.
Для текущего микробоя расчитываются начальные и конечные веса всех армий участников, , а также начальных боевых, которые нормируются к начальному боевому весу всех армий-участников.
На этом этапе есть такая неопределённость: каждый игрок знает и свои и чужие потери, но сколько именно потерь он нанёс лично - не знает.
Эта неопределённость устраняется распределением вклада
каждой армии в потери
каждой армии противника пропорционально весу боевых юнитов в этой армии, то есть, без веса чемоданов.
Полученные нормированные начальные и конечные веса каждой армий добавляются в шесть
временных накопителя игрока - собственника армии.
То есть, по вышеописанной процедуре - как для дуэльного боя.
И так - для всех микробоёв.
По окончании боя расчитывается УВЭА для каждого игрока (показатель эффективности его армий во всех микробоях этого боя), который отображается в логе боя.
Значения шести временных накопителей нормированных весов армий добавляются в шесть постоянных накопителя для каждого игрока и по ним расчитывается новое значение боевого опыта игрока, которое тоже отображается в логе боя, а также в общем военном рейтинге.
Сравнение УВЭА с другими показателями.
Боевой опыт на основе УВЭА можно назвать по другому - усреднённое мастерство. И именно этим он будет отличаться от остальных: если остальные показатели чего-то накапливают (потери врагов, отношение потерь и т.п.), то УВЭА - усредняет.
Игрок,
улучшая свой показатель УВЭА,
одновременно ухудшает показатель противника. И наоборот.
По остальным - показатели у всех растут, но по-разному.
Мастер-новичок с УВЭА будет виден сразу, а по накопительным показателям - он долго будет позади долгоиграющих немастеров.
(Добавлено 10 августа)
Накрутки "неуязвимыми" юнитами исключаются следующим образом.
Если в одной из армий присутствует неуязвимый юнит (например, штурмовик) со своим напарником (ядозавр) в армии противника, то вес напарника устанавливается так:
Пs = Пq * (Пu / (Пu + Пn)), где
Пs - вес напарника, подставляемый в формулу УВЭА;
Пq - фактический вес напарника;
Пu - вес всех юнитов в армии противника, уязвимых для напарника;
Пn - вес юнитов в армии противника, не уязвимых для напарника.
Если для напарника не будет уязвимых юнитов (Пu = 0), то его вес в формулу УВЭА подставляться не будет - накрутки исключаются.
Спам-накрутки по формуле УВЭА невозможны
Для расчёта эффективности армий в бою необходимо чтобы
обе стороны понесли потери. В противном случае, один игрок получит нулевую эффективность, а другой - бесконечную, что выходит за рамки действия формулы.
Если в бою одна из сторон не понесла потерь - УВЭА не расчитывается.
Таким образом, спам-накрутки становятся невозможными.
(Добавлено 18 августа).
Накрутки за счёт больших отношений весов армий атакера и защитника (накрутки мелкими армиями) исключаются путём расчёта УВЭА только для выживших армий.
То есть, атаки смертников за бой не считаются, военрейт для них не расчитывается.
После боя хотя бы одна армия у каждой из обеих сторон должна остаться в живых, если стороны хотят, чтобы военрейт был расчитан. Точнее, у каждой из сторон должен остаться в живых хотя бы один боевой юнит (не чемодан!).