Решено (2026-07-26). Барьеры вводятся в двух формах — Стена и Купол, — и это осознанное решение Макса, а не развилка. Формы не конкурируют: у них разные предметы защиты и разная контр-игра (см. Почему форм две). Числа ниже — черновые, к ревизии при балансе. Реализационный план — Planning - Barriers.
Что это и чем отличается от щита
Барьер — объект в мире, а не число на юните. Он стоит в конкретном месте боевого поля, перехватывает то, что летит через него или в него, имеет собственный запас прочности и может быть обойдён.
Отличие от Щита (ShieldComponent, поглощение в
DamagePipeline) — по трём осям сразу, и все три обязательны, иначе барьер выродится в «щит по
площади» и не окупит работу:
| Щит | Барьер | |
|---|---|---|
| Где живёт | число на юните (CurrentShield) | геометрия на арене |
| Когда срабатывает | в момент расчёта урона по цели | на траектории, до того как урон дошёл |
| Как контрится | продавить уроном | продавить уроном или обойти |
Третья строка — суть механики. Барьер вводит в бой пространственное правило, а не ещё один буфер HP. Всё остальное в этом документе служит ей.
Почему форм две
Одна форма закрывала бы только половину угроз, а вторая половина обесценивала бы её целиком.
| Форма | Против чего | Как вскрывается | Что даёт бою |
|---|---|---|---|
| Стена (дуга/сегмент) | всё, что летит по траектории: снаряды, линейные атаки и лучи | зайти так, чтобы линия огня её не пересекала | превращает арену в геометрию: маршрут и угол атаки начинают значить |
| Купол (окружность) | всё, что приходит площадью извне: круговые АОЕ, залпы по кластеру | войти внутрь — под куполом он уже не помогает | наказывает состав без ближнего боя; делает кучность защитой, а не только уязвимостью |
Разные контр-игры — это и есть оправдание двух форм. Стену обходят, купол вскрывают заходом. Игрок, у которого есть ответ на одну, не получает бесплатного ответа на вторую.
Дополнительно они по-разному ложатся на уже принятое: стена питает позиционику (слоты, фланги, бутылочное горлышко), купол — работает рычагом против кучности в связке с АОЕ.
Стена (дуга)
Геометрия: отрезок или дуга конечной длины, задаётся точкой, нормалью и полудлиной. Ставится в мир и не двигается (носитель может уйти — стена останется до истечения срока).
Правило: блокирует всё, чья траектория пересекает её отрезок:
- снаряды (
Projectile) — гасятся в точке пересечения, урон уходит в стену; - линейные площадные атаки (
AreaShape.Line) — обрезаются по стене: цели за ней не задеваются.
Не блокирует:
- круговые АОЕ (
AreaShape.Circle) — взрыв не летит по траектории, он случается в точке. Если центр по ту сторону стены — стена ни при чём; - проход тел. Юниты ходят сквозь стену свободно, зона контроля отклонена окончательно, и барьеры её не возвращают.
Направленность: стена двусторонняя — гасит и то, что летит в неё изнутри. Иначе получаем бесплатную бойницу: свои стреляют, по своим не попадают, и никакого решения ставить её нет.
Купол
Геометрия: окружность радиуса R. Привязан к носителю и двигается вместе с ним (носитель погиб — купол гаснет). Статичный купол в точке — допустимый вариант для конкретного мементо, но дефолт именно носимый.
Правило: блокирует всё, что приходит снаружи внутрь:
- снаряд, пересекающий границу извне, гасится, урон уходит в купол;
- круговой АОЕ, центр которого вне купола, не задевает никого внутри.
Не блокирует:
- выстрелы изнутри наружу — свои под куполом стреляют свободно;
- АОЕ, центр которого внутри купола, — вошедший под купол враг взрывается там, и купол его жертвам не поможет. Это и есть контр-игра «зайти внутрь»;
- проход тел — как и стена.
Общие правила (обе формы)
Прочность. У барьера собственный пул HP. Поглощённый урон вычитается из него, до носителя не доходит вовсе. Барьер не имеет брони и сродства: в него уходит урон после эффективности источника, но без брони и школьных модификаторов. Его HP — честный «пул поглощения», и игрок читает его как число, а не как результат скрытой формулы.
Разрушение и срок. Пул кончился — барьер исчезает мгновенно, следующий снаряд летит свободно. Плюс срок жизни в секундах: барьер уходит и по времени, даже целым.
Свой/чужой. Барьер команды A не мешает снарядам команды A. Проверка идёт по команде источника снаряда/АОЕ, а не по цели.
Лечение и союзные эффекты не блокируются никогда. Хил-снаряды и союзные ауры проходят сквозь любой барьер в обе стороны. Иначе саппорт превращается в постоянную борьбу со своей же командой.
Пробитие — отдельный контр-инструмент. Барьеры не пробиваются «истинным уроном» автоматически: это сделало бы школу урона случайным ключом. Вместо этого — явное свойство источника «игнорирует барьеры» у конкретных мементо и врагов (аналог вольфрамовых стержней в Mechabellum). Так контр-игра остаётся решением при сборке билда.
Стакинг. Два барьера на одной траектории не удваивают защиту: снаряд гасится о первый по
ходу движения; при точном совпадении — тай-брейк по Id. Детерминизм важнее выразительности.
Требования к AI (не опционально)
Барьер, невидимый для AI, читается игроком как баг. Лучник, пять секунд честно расстреливающий стену, — это ровно риск «AI тупит на глазах» из Блока 4, и он здесь срабатывает первым. Поэтому вместе с барьерами обязательно едет:
- Дальник видит перекрытую линию огня. Цель, до которой траектория пересекает вражеский барьер, получает штраф в Score либо исключается фильтром. Настраивается как блок в схеме Filter / Score / Override (см. архитектурный принцип).
- Опция «бить сам барьер» — отдельный блок поведения, а не дефолт для всех. Кому он включён — вопрос AI-пресетов, не движка.
- Мили предпочитает цель под куполом. Внутри купола её не прикроют чужие дальники — это ровно та контр-игра, ради которой купол вводится.
- Никакого обхода пафайндингом. Тела ходят сквозь; «обход» — это выбор цели и угла атаки, а не навигация вокруг преграды.
Читаемость
- Барьер видно всегда — векторная геометрия (Shapes уже в проекте), не намёк частицами.
- Попадание даёт рябь в точке контакта: игрок должен видеть, что выстрел съеден именно здесь.
- У барьера своя полоска прочности — иначе непонятно, добивать его или обходить.
- Разрушение — заметное гашение, а не тихое исчезновение: момент «стена пала» и есть поворот боя.
Порядок: после позиционики
Барьеры ставятся в план сразу следом за позиционикой, но не раньше её.
Причина: обе формы окупаются только тогда, когда юниты умеют занимать слоты, заходить с фланга и выбирать угол атаки. Пока этого нет, «обойти стену» и «зайти под купол» некому — механика превратится в чистый буфер HP и будет переписана вместе с приходом позиционики.
Что осталось на баланс
- Прочность и срок жизни обеих форм; длина стены и радиус купола относительно арены.
- Сколько источников барьеров держим в ростере (риск: барьер у каждого второго = дальний бой выключен как класс).
- Носители свойства «игнорирует барьеры» — сколько их и на каких ролях.
- Нужен ли куполу отдельный ответ на многофазовые бои и типы боёв «продержаться».