Характеристики боевых юнитов с точки зрения дизайна: что каждый стат значит для игрока и билда. Техническая спецификация (EN-имена, операции, клампы, формулы) — Тех: 11. Стат-система. Откуда статы берутся: базовый баланс HP и скорости даёт класс (см. «Классы и базовый баланс» ниже), поверх — дельта Мементо (см. 5. Мементо), затем модификаторы: перки Сосуда, предметы, гильд-бонусы ГМ.
Принципы
- Бой читаемый и детерминированный. Нет случайных критов и промахов — одинаковые условия дают одинаковый исход. Это нужно для повторов боя, сравнения AI-профилей и честного кооп-мультиплеера.
- Статы — это числа. Категории (тип урона, тип атаки, тип ресурса) — отдельная настройка Мементо, не число.
- «Эффективности» — множители вокруг
100%(например, «эфф. наносимого урона 120%» = на 20% больше). - Базу HP и скорости диктует класс, а не персонаж. Конкретный герой — это дельта поверх классовой базы (см. ниже). Это держит числа читаемыми («танк ≈ 3000 HP») без потери покадрового баланса отдельных юнитов.
Классы и базовый баланс
Каждый боевой юнит несёт класс — типизированную ось, задающую базовый баланс HP и скорости передвижения. Класс — это не ярлык для UI, а механический вход: от него считаются числа, и из него же авто-выводится role-тег юнита. Остальные статы (урон, дальность, броня, размер) класс не трогает — их несёт персонаж/оружие.
Эталон 100% — Брузер (золотая середина): 2000 HP, скорость 3. Остальные классы — множители от него:
| Класс | HP | Скорость | HP (абс.) | Роль |
|---|---|---|---|---|
| Танк | 150% | 85% | 3000 | Живучий и медленный — держит фронт (агро-автоатака + перехват, см. Позиционику) |
| Брузер | 100% | 100% | 2000 | Золотая середина, эталон баланса |
| Убийца (мили-ДД) | 75% | 110% | 1500 | Хрупкий и быстрый — врывается в бэклайн |
| РДД | 65% | 75% | 1300 | Дальний урон, самый хрупкий |
| Поддержка | 65% | 75% | 1300 | Хил/баффы, самый хрупкий |
| Призыватель | 65% | 75% | 1300 | Держит армию, сам слаб |
- Бэклайн (РДД / Поддержка / Призыватель) — самый медленный в игре, медленнее танка. Это намеренно: бэклайн не кайтит сам, его защищает строй. Позиционирование и «держать линию» — ключевое решение расстановки, а не автопобег дальника от угрозы.
- Три бэклайновых класса пока делят один стат-профиль (65/75), но остаются отдельными классами — они несут разную семантику (UI, AI, теги), и развести их числа позже можно правкой одной строки.
- Конкретный персонаж кладёт дельту поверх классовой базы: «этот танк +200 HP» — это прибавка к 3000, а не переписывание абсолюта.
Урон автоатаки: класс задаёт цель, персонаж — раскладку
Класс диктует не только живучесть, но и целевой DPS автоатаки — с тем же эталоном-Брузером (решено 2026-07-26/1-2):
| Класс | DPS от эталона | DPS (абс.) | Коридор ±25% | Эталон темпа (атак/сек) |
|---|---|---|---|---|
| Брузер | 100% | 120 | 90–150 | 0.75 |
| Танк | 50% | 60 | 45–75 | 0.55 |
| Убийца | 120% | 144 | 108–180 | 1.0 |
| РДД | 100% | 120 | 90–150 | 0.75 |
| Поддержка | 50% | 60 | 45–75 | 0.7 |
| Призыватель | 50% | 60 | 45–75 | 0.7 |
- Норма — на произведение, а не на сомножители.
урон × скорость атакидолжен попасть в коридор; как автор его разложит — его дело. Медленный тяжёлый удар и частая тычка одинаково законны, и именно темп несёт характер юнита. Эталон темпа — ориентир, а не потолок. - Выход за коридор требует причины в карточке. Это не запрет, а разговор: за границей обычно стоит вторая валюта (DoT, площадь, хил), и её стоит назвать вслух.
- Коридор нормирует ТОЛЬКО автоатаку. Полный боевой вклад кита (эффекты, способности, площадь) им не покрывается — его меряют стендом. Кит с сильной второй валютой законно выходит за коридор по фактическому урону, но его автоатака всё равно живёт по норме.
- Общий темп сознательно замедлен на четверть относительно ранних значений: при восьми юнитах на арене частые удары не читаются ни глазом, ни звуком, а фидбэк удара (вспышка, замирание, боевые цифры) на такой частоте не успевает сработать.
Броня: класс задаёт бюджет, персонаж — раскладку
Та же логика, что с уроном (решено 2026-07-26/12). Класс даёт сумму физической и магической брони, а как её распределить — дело конкретного героя:
| Класс | Бюджет брони (физ + маг) | При ровной раскладке | Эффективное HP |
|---|---|---|---|
| Танк | 120 | 60 / 60 → −37% | 4800 |
| Брузер | 60 | 30 / 30 → −23% | 2600 |
| Убийца | 30 | 15 / 15 → −13% | 1725 |
| РДД / Поддержка / Призыватель | 20 | 10 / 10 → −9% | 1430 |
Раскладка не меняет средний запас прочности, только его форму. Танк с 60/60 держит 4800 против
обеих школ; танк с 120/0 — 6600 против физики и 3000 против магии, в среднем те же 4800. Так
получается потому, что эффективное HP линейно по броне (EHP = HP × (1 + броня/100)): переложить
единицу из одной школы в другую — значит ровно столько же отнять у одной стороны и добавить другой.
Специализация даёт разброс, а не силу: латник крепче против стали и голее против огня.
Эффективное HP — первоклассная величина баланса, а не производная. Живучесть юнита меряется им, а не голым HP: два числа (запас и броня) складываются в одно, по которому классы и сравниваются. В стенде это колонки
EHP_phys/EHP_magic; классовая норма — столбец выше.
Рекомендованные числа вне классовой оси
Часть статов к классу не привязана — их диктует способ боя, а не весовая категория. Для них канон держит не коридор, а норму-ориентир: отклоняться можно, но с причиной в карточке (решено 2026-07-26/13).
| Параметр | Привязан к | Градации |
|---|---|---|
| Дальность атаки | типу доставки | Ближний 1 · Древковый 3 · Дальний 8 · Осадный 12 |
| Скорость снаряда | «весу» снаряда | Лёгкий (стрела, дротик) 14 · Обычный (луч, копьё) 10 · Тяжёлый (шар, валун) 7 |
| Реген HP | ничему | 0 — восстановление это свойство кита, а не фон |
| Эффективности (наносимого/получаемого урона, лечения, эффектов, перезарядки) | ничему | 1.0 — отклонение всегда дизайн-акцент |
| Ресурс | киту | запас 100, старт 0, потолок набора 10/сек |
- Осадная дальность (12) пока задел: в ростере её никто не носит. Заведена, чтобы у будущего снайпера/баллисты был не «Дальний с плюсом», а собственная ступень.
- Размер юнита сознательно не нормируется (пока у всех 1.0). Он влияет на радиус тела и досягаемость атаки, то есть это механика, а не косметика — вводить его как ось имеет смысл, когда появятся существа заметно крупнее человека.
Формула снижения — урон × K / (K + броня) при K = 100, то есть та же, что в LoL и TFT.
Выбрана осознанно: процент снижения имеет убывающую отдачу (броня не даёт неуязвимости), а
эффективное HP растёт линейно (баланс складывается сложением, а не решением уравнений).
Формулы вида «снижение зависит от размера удара» (Path of Exile) отклонены: в автобою игрок не
видит расчёта и не может отреагировать, и переменная защита читается как несправедливость.
Каскад стат-базы (4 уровня)
Итоговый стат собирается сверху вниз, каждый уровень уточняет предыдущий:
| Уровень | Источник | Роль |
|---|---|---|
| 1 | StatsConfig | Глобальный фолбэк (например, враги-болванки без класса) |
| 2 | Класс | Базовый баланс HP и скорости от класса |
| 3 | Персона (Мементо / юнит) | Дельта конкретного героя поверх класса |
| 4 | Сосуд (Vessel) | Перки-модификаторы поверх всего (Фаза 2/4) |
Внутри каскада работают две разные оси (не смешивать):
- База — победитель ровно один: значение диктует последний уровень, который его задал жёстко. Поэтому Сосуд, если захочет, закрывает базу класса и персоны своим абсолютом.
- Модификаторы — прибавки и множители (
+X,+X%,×) от персоны, мементо, перков Сосуда и боевых баффов копятся и перемножаются поверх базы. «+20% HP от такого-то Сосуда» ложится сюда, не касаясь классовых баз.
Техническая формула сборки и операции (
Override/Flat/PercentAdd/PercentMult) — Тех: 11. Стат-система.
Каскад врага: класс → вид → подвид → юнит
У врагов между классом и юнитом добавляются групповые скейл-слои — та же механика групп, просто носитель (враг) подставляет свои уровни:
StatsConfig → Класс(база) → Вид(скейл) → Подвид(скейл) → Юнит EnemyData(флэт)
- Вид (Species) — стат-скейл общего вида: Гоблины ×0.4 HP, ×1.1 скорость; Големы — стойкие и медленные и т.д. Единая шкала: «гоблин = 40% героя того же класса». Наследуется всеми юнитами вида — правится в одном месте.
- Подвид (Subspecies) — малые модификаторы поверх вида (Северные гоблины: +резист Лёд). Задел; наполняется, когда подвид входит в игру.
- Юнит (EnemyData) — флэт конкретного врага, как персональный стат-блок мементо.
Фракция (Faction) к этому каскаду не относится — это пул генерации волн (кто может
выпасть вместе), а не стат-ось. CreatureType (Живое/Зверь/Нежить) — тоже отдельная ось
(сродства, см. ниже), не путать с Видом, даже если имена совпадают («Звери» / Зверь).
У героя параллельный каскад: StatsConfig → Класс → Мементо(персона) → Сосуд(Vessel).
Категории Мементо (не числа)
| Настройка | Варианты |
|---|---|
| Тип урона (обязателен) | Физическая ветка: Дробящий / Режущий / Колющий / Кровотечение / Яд физический. Магическая: Огонь / Лёд / Молния / Аркана / Яд магический. Чистая (мимо брони): Свет / Тьма / Чистый. Тип обязателен у каждого источника урона отдельно — у автоатаки свой, у каждой способности свой, наследования от юнита нет (реформа 2026-07-30). Аркана — законная «магия без стихии». Чистый — урон мимо брони без окраски (Раскол холодной статуи). |
| Школа урона (следствие) | Физическая / Магическая / Чистая — автором не задаётся, а выводится из типа: это то, какая броня гасит удар. Отдельного поля школы нет ни в ассете, ни в запросе урона, поэтому тип и школа не могут разойтись. |
| Тип существа | Живое / Нежить / Конструкт / Демон / Зверь / … Таксономия юнита (у мементо тоже, не только у врагов). Редкая специя на отдельных врагах (напр. Нежить устойчива к Яду), а не главный гейт сродства — решено 2026-07-15. Отдельно от фракции (фракция — организационная группа врагов; тип существа — что юнит есть). |
| Тип атаки | Ближний бой / Снаряд / Луч / Мгновенно / Нет автоатаки / Наследует. Паттерн атаки дополнительно задаёт линию, AOE, цепь, пробивание и т. п. |
| Тип ресурса | Нет / Мана / Ярость / … Базовая модель: Мана восстанавливается по времени, Ярость копится в бою (см. glossary); точные числа/кривые восстановления — прорабатываются. |
Тип урона и школа (модель урона)
Канон-дом модели урона — этот раздел
Тех-вика описывает реализацию той же модели; при расхождении дизайна и реализации главнее этот док. Инженерная развилка и отвергнутые варианты — запись журнала «Damage Type Is One Axis And The School Follows» (2026-07-30).
Одна ось, и она обязательна (решено 2026-07-30)
Автор контента задаёт тип урона, и только его. Школа (Физическая / Магическая / Чистая) — следствие типа, отдельным полем не существует: «физический огонь» невыразим, а тип и школа не могут разойтись.
Тип обязателен у каждого источника отдельно: у автоатаки свой, у каждой способности свой, у каждого бьющего эффекта свой. Наследования от юнита нет — прежний
Inheritбыл единственным способом не назвать тип и выглядеть при этом законно. Пропуск ловится тестом покрытия по всему контенту, а не внимательностью автора: раньше «просто физический» урон проходил молча, и взрыв костяного щита из-за этого не попадал в хрупкость холодной статуи.
Идентичность — это глагол, а не резист-матрица (решено 2026-07-26)
Яд травит (DoT + негативный дебафф), Свет очищает и лечит частью урона, Тьма бьёт голой мощью. Идентичность самодостаточна и работает против любого врага; «повезло с типом цели» её частью не является. Матрица «урон × тип существа» снята из кода 2026-07-26 (отклонена 2026-07-15/35), и её возврат ловит guard-тест
DamageType_NeverScalesDamage_ByCreatureType. Уязвимости и иммунитеты вернутся контентом — свойством конкретного врага («нежить не кровоточит»), а не правилом для класса целей.
Как читать модель:
- Школа — числовая ось, которую гасит броня. Их намеренно мало: две (Физическая, Магическая) плюс Чистая, которая броню игнорирует. Магия — одна броня на Огонь / Лёд / Молнию / Аркану; различия стихий живут в механике (поджог-DoT / заморозка-slow / цепь-burst), а не в отдельных резистах.
- Тип — природа удара, и он несёт идентичность дальше по цепочке: «Угли» копятся только с Огня, промороженная цель получает +20% от Дробящего, «Разрыв» читает Кровотечение. Броню тип не делит.
- Кровотечение — свой тип, а не «физика без уточнения». Школа у него фиксированно физическая, а природа своя: как Колющее оно попадало бы под «уязвимость к колющему» и не давало бы выразить «нежить не кровоточит».
- Яд — единственная природа с переменной школой: DoT идёт по школе конкретного яда, Физической или Магической, и никогда не Чистой (решение 2026-07-25/4). В списке типов он поэтому занимает два значения — «Яд физический» и «Яд магический», — чтобы правило «тип → школа» оставалось без исключений в коде. Отравленный клинок выражается двумя ударами: Колющее на попадание, Яд на тик.
- Свет и Тьма — Чистые, мимо брони (потому самые редкие): Свет с акцентом на очищение и хил союзнику, Тьма — на большую мощь. Идентичность — effects.
- Гибриды бьют двумя ударами разных типов, а не одной цифрой с половинчатой школой: «Ядовитая печать» — половина Ядом физическим, половина магическим; взрыв «Водяного щита» — половина Дробящим, половина Льдом. Так каждая половина режется своей бронёй и будит своих потребителей, а игрок видит две честные цифры.
Почему не 12 броней: каждая ось брони — то, что игрок обязан отслеживать по каждой цели. Две читаемых оси дают глубину без броне-матрицы (кооп-координируемо). Глубину свапа несут в первую очередь роли, механики и синергии; типы — специя.
Характеристики
Выживаемость
| Стат | Что значит |
|---|---|
| Макс. здоровье | Запас HP. Кончилось — юнит выбывает |
| Реген HP (число/сек) | Восстановление фиксированного числа HP в секунду |
| Реген HP (% макс/сек) | Восстановление % от макс. HP в секунду |
| Физ. броня | Снижает урон физической школы (по убывающей — много брони не даёт 100% защиты). Может уходить в минус (тогда урон усиливается) |
| Магическая броня | То же для магической школы (Огонь / Лёд / Молния / Аркана) |
| Эфф. получаемого урона | Общий множитель всего входящего урона (100% = норма; меньше = крепче) |
| Получаемая сила исцеления/щитов | Насколько эффективно на юните работают лечение и щиты |
Атака
| Стат | Что значит |
|---|---|
| Урон автоатаки | Базовый урон обычной атаки |
| Скорость атаки | Атак в секунду |
| Дальность атаки | На каком расстоянии юнит может бить (с учётом размера) |
| Сила навыков (AP) | Усиливает параметры способностей и пассивок, которые от неё зависят |
| Физ. пробивание (плоское / %) | Игнорирует часть физ. брони цели (фикс. число и/или процент) |
| Магическое пробивание (плоское / %) | То же для магической брони |
| Эфф. наносимого урона | Общий множитель всего исходящего урона |
| Вампиризм | % от нанесённого урона возвращается как HP |
Исцеление / щиты
| Стат | Что значит |
|---|---|
| Исходящая сила исцеления/щитов | Насколько сильнее лечение и щиты, которые юнит выдаёт другим |
Снаряд
| Стат | Что значит |
|---|---|
| Скорость снаряда | Как быстро летит снаряд дальнего юнита |
| Пробивание снаряда | Сколько целей снаряд проходит насквозь (0 — стоп на первой) |
Подвижность
| Стат | Что значит |
|---|---|
| Скорость передвижения | Как быстро юнит ходит по полю |
| Размер юнита | Влияет на модельку, радиус тела (расталкивание) и досягаемость атаки |
Эффективность эффектов
Эти четыре стата меняют только длительность эффектов, не их силу. Но удлинение по времени увеличивает суммарный итог: HoT «160 HP за 5 сек», растянутый до 10 сек, восстановит 320 HP (та же скорость, вдвое дольше). Силу эффектов (урон/тик, хил/тик, величину щита) меняют другие статы — сила навыков и множители урона/исцеления.
| Стат | Что значит |
|---|---|
| Эфф. наложения положительных | Длительность баффов, которые юнит накладывает |
| Эфф. наложения негативных | Длительность дебаффов, которые юнит накладывает |
| Эфф. получаемых положительных | Длительность баффов, которые юнит получает |
| Эфф. получаемых негативных | Длительность дебаффов на юните, включая контроль (меньше = устойчивее к оглушениям и т.п. = tenacity) |
| Эфф. перезарядки | Множитель времени КД способностей (меньше = чаще касты) |
Ресурс (только геройские мементо)
| Стат | Что значит |
|---|---|
| Макс. запас ресурса | Потолок маны/ярости/… |
| Начальный запас | Сколько ресурса в начале боя |
| Эфф. получения ресурса | Множитель набора ресурса |
Восстановление ресурса (решение 2026-07-27, уточнено 2026-07-28)
Ресурс капает по времени: 5 в секунду, одинаково у всех. Темп способности считается в уме: стоимость ÷ 5 = секунды между кастами.
Набор от попаданий снят. Пока ресурс капал с ударов, скорость атаки была двойным бустом — быстрее бьёшь, чаще ульта, — а темп способности зависел ещё и от того, дотянулся ли кит до цели.
Три уточнения от 2026-07-28:
- Запас маны равен стоимости активки. Полная шкала = ровно один каст, поэтому заполненная полоска и есть «готово» — игроку не нужно держать в голове ни запас, ни отдельный кулдаун.
- Гейт каста один — ресурсный. Кулдаун у ресурсных активок равен нулю. Иначе темп держат два владельца сразу, разгон набора ресурса теряет смысл, а числа расходятся при каждой правке.
- Ману тратит ровно одна способность кита, не больше. Остальные навыки — пассивки (со своими зарядами или внутренним КД) либо бесплатные активки вроде «Марша» Барабанщика.
Действующие числа ростера (запас = стоимость):
| Кит | Способность на мане | Стоимость и запас | Каст раз в |
|---|---|---|---|
| Ассасин | «Уйти в тень» | 75 | 15 с |
| Огненный мечник, Надёжный защитник | «Воспламенение», «Решительный удар» | 50 | 10 с |
| Железный копейщик | «Стальной вихрь» | 45 | 9 с |
| Друид | «Взрыв спор» | 45 | 9 с |
| Монах вихря | «Шквальный толчок» | 60 | 12 с |
| Криомант | «Ледяная зона» | 40 | 8 с |
| Древень | «Разрастание» | 40 | 8 с |
| Лесной следопыт, Светлый пастырь | «Метка охотника», «Длань жизни» | 30 | 6 с |
Друид и Древень переведены на ману с чистого кулдауна (были 11 и 12 с), Ассасин получил активку специально ради того, чтобы ресурс был и у него.
Стартового ресурса нет ни у кого (решение 2026-07-28): шкала набирается с нуля, первый каст
приходит по темпу. Прежние StartResource в статблоках были тестовыми — у Монаха он позволял открыть
бой толчком, и это второй владелец темпа: способность выходила раньше собственного интервала.
Тип ресурса пока один — Мана (либо его нет вовсе, как у Убийцы). Ярость откладывается сознательно: разделение «мана по времени / ярость от действий» остаётся вектором, но второй режим не заводим, пока не выстроен баланс одного. Плата известна — Мечник временно не может разгонять темп ульты вложениями; вернётся вместе с Яростью.
Сила навыков (AP): модель роста (решение 2026-07-28)
AP — ось роста внутри забега, а не часть базовой силы. Базовое значение способности уже достаточное; AP — то, чем игрок разгоняет его до поломки, если решил в это вложиться.
Шкала: старт 0 у всех, средний реальный вклад за забег ~50, конец акта при осознанной ставке ~100, мега-везение и практический максимум ~200. AP качают нечасто — это не обязательная стата.
Откуда AP берётся (решение 2026-07-28): квесты (Судьбы «Сосуда» — см. Run - Vessel Progression), уникальные эффекты, выдаваемые за квесты, и предметы. Классы и мементо базового AP не дают — иначе он перестаёт быть ставкой игрока и становится невидимой частью базы.
Форма скейла — аддитивная: итог = база + коэффициент × AP. В карточках пишется как
«+3 урона за 10 AP», а не коэффициентом: числа должны читаться с листа.
Щедрость зависит от того, насколько AP ожидаем для кита:
| Ось | Кому | Что растит | Насколько |
|---|---|---|---|
| Ожидаемая | Кастеры: маги, хилы, контроллеры | Главные числа — урон, лечение, щит, длительность контроля | Предсказуемо: AP их основной способ усиления |
| Опциональная | Физические киты: убийцы, танки, брузеры | Вторичное — дальность, радиус, длительность бафов, множители | Щедро: вкладываться им нелогично, значит ставка обязана окупаться заметно |
Правила, действующие поверх:
- Капов почти нет. Игрок должен иметь возможность разогнать способность до поломки; ограничение ставится только там, где без него параметр теряет смысл (штраф скорости «Стрельбы на ходу» ушёл бы в плюс и стал ускорением).
- Длительность контроля скейлить можно — стан, корень, заморозка. Это самый мощный вектор, поэтому он отдаётся тем, чья фантазия и есть контроль (Криомант).
- Один параметр может расти от нескольких статов сразу (AP + сила атаки + скорость атаки + броня), если это логично по концепции кита. Запрета на «двойной источник» нет.
- Где у величины потолок встроен в смысл (снижение урона, замедление, доля), AP растит не процент, а то, что рядом: длительность, величину, радиус, число зарядов. Так поломка остаётся возможной, а значение не упирается в математический предел.
Конкретные скейлы по каждому мементо и порядок реализации — docs/ap-and-skills-progress.md.
На будущее (отложено)
- Уровни юнитов в бою — пока нет; прогрессия идёт между боями через Мементо и перки. Решение отложено.
- Криты — пока нет. Если появятся, будут детерминированными (например «каждый 3-й удар — крит»), без случайности.
- Ярость как второй тип ресурса (копится в бою от действий) — отложена 2026-07-27, см. §Восстановление ресурса.
- Анти-хил (grievous wounds) — множитель −% к получаемому лечению как каунтер против хил-комбо. Существует и как чистый дебафф, и свёрнут в идентичность Яда (отравлённый лечится хуже) — см. effects. Нужен, т.к. в ростере есть сильный хил.
Формулы физической и магической брони и стандартные значения по классам— ЗАКРЫТО, и закрыто было выше в этом же файле: формулаурон × K / (K + броня)приK = 100и классовые бюджеты брони живут в §Броня (решение 2026-07-26/12). Строка «открыты» пережила собственный вердикт и врала три дня, делая файл вторым владельцем своего же факта. Снято 2026-07-30 по указанию Макса.- Статы силы призывов (заявка Макса 2026-07-29) — отдельно живучесть призывов и отдельно их урон, чтобы предметы и эффекты могли усиливать одно без другого. Сейчас призыв наследует числа своего определения, и «усилить призывы» нечем. Первый носитель — предметы (items-banners).
- Скейлы «первой атаки» (заявка Макса 2026-07-29): урон от AD и скорости атаки, дальность от
силы умений, у физических китов сила умений даёт бонусы дополнительным параметрам; сама атака
игнорирует flat-часть брони. Последнее требует ответа: броня у нас процентная
K/(K+armor)и flat-части в формуле нет — либо вводится плоское слагаемое, либо формулировка означает другое («игнорирует N единиц брони»).