Решено (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, и он здесь срабатывает первым. Поэтому вместе с барьерами обязательно едет:

  1. Дальник видит перекрытую линию огня. Цель, до которой траектория пересекает вражеский барьер, получает штраф в Score либо исключается фильтром. Настраивается как блок в схеме Filter / Score / Override (см. архитектурный принцип).
  2. Опция «бить сам барьер» — отдельный блок поведения, а не дефолт для всех. Кому он включён — вопрос AI-пресетов, не движка.
  3. Мили предпочитает цель под куполом. Внутри купола её не прикроют чужие дальники — это ровно та контр-игра, ради которой купол вводится.
  4. Никакого обхода пафайндингом. Тела ходят сквозь; «обход» — это выбор цели и угла атаки, а не навигация вокруг преграды.

Читаемость

  • Барьер видно всегда — векторная геометрия (Shapes уже в проекте), не намёк частицами.
  • Попадание даёт рябь в точке контакта: игрок должен видеть, что выстрел съеден именно здесь.
  • У барьера своя полоска прочности — иначе непонятно, добивать его или обходить.
  • Разрушение — заметное гашение, а не тихое исчезновение: момент «стена пала» и есть поворот боя.

Порядок: после позиционики

Барьеры ставятся в план сразу следом за позиционикой, но не раньше её.

Причина: обе формы окупаются только тогда, когда юниты умеют занимать слоты, заходить с фланга и выбирать угол атаки. Пока этого нет, «обойти стену» и «зайти под купол» некому — механика превратится в чистый буфер HP и будет переписана вместе с приходом позиционики.


Что осталось на баланс

  • Прочность и срок жизни обеих форм; длина стены и радиус купола относительно арены.
  • Сколько источников барьеров держим в ростере (риск: барьер у каждого второго = дальний бой выключен как класс).
  • Носители свойства «игнорирует барьеры» — сколько их и на каких ролях.
  • Нужен ли куполу отдельный ответ на многофазовые бои и типы боёв «продержаться».