Skip to content

GDD: Rival Interactions — встреча как выбор (атаковать · игнорировать · сотрудничать)

Обзор

Компаньон экшен-пивота (../action-pivot/concept.md, ../action-pivot/gdd.md). Сегодня у встречи с соперником нет состояния «игнорировать»: соперники воспринимают игрока через то же постепенное обнаружение по конусу/LOS, что и мобы (с задержкой реакции перед огнём), и, увидев, выбирают бой или бегство по храбрости и HP — но никогда «заметил и занялся своими делами». После обнаружения любая встреча решается боем или бегством, поэтому всё социальное поведение, которое у ботов уже есть — лутание, бегство, гонка за ключом, эвакуация с настоящей добычей, — невидимо на уровне встречи. Пивот делает это острым: при восприятии только-аггро и убранном правиле взаимной видимости встречи схлопнулись бы в мгновенные автоматические бои — вот почему Tier 0 является жёсткой зависимостью «соперников с этажа 1», а не опциональным слоем флейвора.

Эта фича делает каждую встречу с соперником решением игрока: атаковать, игнорировать или сотрудничать. Ключевая идея, совмещающая это с автострельбой и управлением в одну кнопку: автострельба автоматизирует исполнение боя (прицеливание, огонь, стойку), но не легитимность цели. Кто считается допустимой целью — отдельное правило, и именно в нём живёт выбор. Ни кнопки атаки, ни ввода прицеливания не добавляется; вся новая поверхность ввода — один осознанный тап.

Референс — ядро альянсов-и-предательства MISFITZ (см. сводку исследования в концепте экшен-пивота) — но сфейканное ИИ-ботами вместо реальных игроков и сети, которая остаётся вне скоупа. Боты способны убедительно сфейкать то, что важно для соло-казуальной игры: выбор, стоящий перед игроком, и читаемое намерение другого рейдера.

Раскатка ступенчатая и гейтится данными: Tier 0 выходит вместе с пивотом (это зависимость «соперников с этажа 1»), Tier 1 — fast-follow после валидации ретеншена пивота, Tier 2 строится только если телеметрия покажет, что встречи с соперниками двигают ретеншен.

Механики

Состояние отношений (Tier 0 — выходит с пивотом)

Каждый соперник несёт одно состояние по отношению к игроку: нейтрален или враждебен.

  • Мобы — всегда допустимые цели автострельбы. Без изменений.
  • Нейтральные соперники исключены из таргетинга автострельбы — в обе стороны. Игрок и нейтральный соперник могут проходить мимо, лутаться и бить мобов бок о бок; никто не стреляет. Мир — исход встречи по умолчанию, и именно это делает его нарушение решением.
  • Враждебные соперники — обычные цели: симметричный бой, как сегодня.

Три выбора, выраженные через это единственное правило:

  • Игнорировать = не делать ничего. Ноль ввода; встреча разрешается как два рейдера, занятых своими делами.
  • Атаковать = тапнуть соперника — единоразовое объявление, а не кнопка атаки. Тап переводит соперника во враждебность, автострельба игрока открывается, соперник отвечает тем же. Аналог PvP-флага в MMO: момент выбора явный и намеренный; всё после него автоматическое. (В реализации это возрождает кусочек запаркованного tap-target-пути как «тап = объявление» — ни хоуминг, ни патфайндинг не возвращаются.)
  • Сотрудничать (минимальная форма) = игнорировать + близость. Поскольку мобы — всегда допустимые цели для обеих сторон, игрок и нейтральный соперник в одном кармане монстров автоматически бьют одних и тех же мобов — ко-оп бок о бок эмерджентно следует из правила таргетинга без новых механик. Эмоут Tier 1 лишь оформляет то, что система уже производит.

Что переключает флаг (триггеры эскалации)

Тап игрока — не единственный триггер; соперники используют тот же флаг, что держит встречи напряжёнными, а не идеально безопасными:

  • Объявление игрока: тап, как выше. Взводится только в разумном радиусе от соперника (защита от мис-тапа) и громко подтверждается (см. UX).
  • Возмездие: любой урон переводит нейтралитет во враждебность в обе стороны. Если соперник открыл огонь по игроку, автострельба игрока отвечает автоматически — защита не требует ввода, казуальный игрок никогда не наказан за то, что не среагировал.
  • Оспариваемые цели: обе стороны идут к одному призу (дверь Vault, сундук босса, последняя площадка эвакуации в конце рейда) → состояние предупреждения — видимый бит взаимной настороженности, — затем враждебность, если никто не отступил. Зоны жадности — место, где умирают перемирия; одно это правило несёт фантазию жанра экстракшена.
  • Агрессия архетипа (Tier 1, ниже): часть соперников решает переключиться сама — всегда после телеграфированного замаха, никогда как нечитаемая мгновенная атака.

Деэскалация: враждебность не спадает до нейтралитета внутри встречи (начатый бой — это бой); она сбрасывается, если стороны потеряли друг друга достаточно надолго (существующее поведение потери погони). Помнит ли сбежавший соперник игрока — тюнабл.

Tier 1 — архетипы и социальная текстура (fast-follow)

Роллится на соперника при спавне; разное поведение поверх одной машины состояний:

  • Охотник (Hunter) — ищет игроков; переключается во враждебность при виде цели после ясно телеграфированного замаха (смена глифа → бит предупреждения → огонь). Кноб гейтинга по этажам держит Охотников подальше от ранних этажей.
  • Крыса (Rat) — избегает всех, лутается по углам, бежит при виде игрока, никогда не переключается первой. Убить её — чистая прибыль и чистый выбор — зеркало игры «стоил ли лут того, чтобы стать таким человеком?».
  • Оппортунист (Opportunist) — нейтрален, пока игрок не станет того стоить: ранен или несёт жирный хаул возле эвакуации. Архетип, делающий жадность в конце рейда опасной.

Социальная текстура того же тира:

  • Человеческие ники + косметическая вариативность — классический трюк .io-игр. Соперник с игроцким ником, который лутает сундук, игнорирует тебя и эвакуируется, читается казуальной аудиторией как реальный человек. Ноль нового ИИ; крупнейший выигрыш «воспринимаемого мультиплеера» на единицу работы.
  • Один сигнальный глагол: рядом с нейтральным соперником появляется контекстный эмоут (помахать / «перемирие?») — соперник отвечает по архетипу (помахал в ответ = де-факто перемирие; проигнорировал; или предупреждающий взгляд Охотника). Одна кнопка, переиспользующая паттерн контекстной Кнопки Действия.

Tier 2 — глубокая социалка (только если телеметрия заслужит)

Строится, только если телеметрия Tier 0/1 покажет: рейды с осмысленными встречами удерживают лучше, чем рейды без них. Временные альянсы (совместная зачистка босса с явным перемирием, окно предательства у лута), поведение «за мной», бои соперник-против-соперника, которые игрок может наблюдать или использовать, и асинхронные призраки — соперники, носящие ники и лоадауты реальных игроков из бэкенд-данных (Clash-стиль «фейковые реальные люди», по-прежнему без реалтайм-сети). Настоящий клиент-серверный PvP остаётся вне скоупа бессрочно.

Что сохраняется из текущего ИИ ботов

Всё. Целевое лутание, бегство, гонка за ключом, вскрытие Vault, эвакуация с несённым хаулом и джекпот за убийство (мёртвый соперник роняет всё, что нёс) не меняются — фича меняет только когда бою позволено начаться, а не что соперники делают и роняют.

Прогрессия / экономика

Ни новых валют, ни новых треков прогрессии. Экономика самого выбора:

  • Атака — джекпот с ценой риска, без изменений: несённый хаул соперника — крупнейший разовый приз рейда, и объявление войны его оплачивает — честный бой с равным, начатый намеренно. Архетип Оппортуниста даёт игроку почувствовать тот же расчёт с другой стороны.
  • Игнорирование — избегание потерь: отпустить жирного соперника — значит смотреть, как его хаул покидает карту (существующее правило), теперь ощущаемое как отклонённая ставка, а не проигранный бой.
  • Сотрудничество платит общей безопасностью, а не общим лутом: нейтральный соперник, впитывающий аггро мобов в том же кармане, — реальная боевая субсидия. Механик деления лута на этом тире нет — дроп достаётся тому, кто схватил (радиус магнита держит это честным и личным).
  • Телеметрия встреч (см. tech spec) — гейт инвестиций в Tier 2.

UX

  • Глиф намерения над головой каждого соперника — элемент высшей ценности: 💰 лутается · ⚔ враждебен · 🏃 бежит · 🔑 охотится за ключом · нейтральная метка покоя. Один глиф превращает «заспавнился бот» в «здесь другой человек, занятый своим делом».
  • Тап объявления: прощающая зона попадания; взводится только в радиусе; безошибочное подтверждение — красная вспышка на сопернике, глиф щёлкает в ⚔, стинг объявления войны. Никаких случайных войн от жирного пальца по земле.
  • Состояние предупреждения (оспариваемые цели, замах Охотника): видимый бит взаимной настороженности — янтарная пульсация глифа на сопернике — достаточно долгий, чтобы прочитать и отступить.
  • Возмездию не нужен UX: игрок видит, как его автострельба отвечает на атаку; существующие вспышка урона + стрелка угрозы уже объясняют, кто начал.
  • Кнопка эмоута (Tier 1): контекстная, появляется рядом с нейтральными соперниками, один тап, ответ виден на сопернике (анимация ответного взмаха или взгляд).
  • Экран смерти/результата: «Сражён <ник соперника>» с портретом/косметикой соперника — делает фейковую популяцию личной; в паре с быстрым путём «В рейд снова».

Визуальная идентичность

Целиком переиспользует существующий арт соперников; добавляется только обвес состояний: набор глифов намерения, янтарная пульсация предупреждения, красная вспышка враждебности + стинг, пара анимаций эмоута (взмах/взгляд) и неймплейты в стиле существующих лейблов. Замах агрессии архетипа использует тот же визуальный язык, что телеграфы атак мобов — одна грамматика «опасность приближается» везде.

Скоуп

Tier 0 — в составе экшен-пивота (зависимость «соперников с этажа 1»): состояние нейтрален/враждебен · фильтр таргетинга в обе стороны · тап-объявление с подтверждением · симметрия возмездия · эскалация на оспариваемых целях · глифы намерения · телеметрия встреч.

Tier 1 — fast-follow после валидации ретеншена пивота: архетипы Охотник/Крыса/ Оппортунист · человеческие ники + косметическая вариативность · сигнальный эмоут · блок «сражён таким-то» на экране результата (проверено 2026-07-23: цепочка атрибуции и строка «Slain by X» уже отгружены в Unity — Health.LastAttackerKillerName → экран результата; Tier 1 добавляет только пул ников/портрет).

Tier 2 — гейтится телеметрией встреч: альянсы/предательство · бои соперник-против-соперника · асинхронные призраки.

Вне (явно): реалтайм клиент-серверный мультиплеер и матчмейкинг; голос/чат; механики деления лута и обмена; взаимодействия соперников с FTUE (обучающие этапы остаются без соперников). Отгружается только в Unity; правила Tier 0 могут дёшево проверяться на веб-прототипе в рамках валидационного спринта Фазы 0 пивота (см. ../action-pivot/implementation-plan.md) — у веб-билда самый полный ИИ соперников, что делает его лучшим стендом для модели встреч.

ТЗ / tech spec

Unity-проект (unity/raiders); следует конвенциям групп/ключей GameConfig.

  • Тюнаблы (GameConfig), новая группа rival:
  • Враждебность: радиус взвода объявления, длительность состояния предупреждения, радиус оспариваемой цели, время сброса враждебности (потеря контакта), тумблер «помнит атаковавшего».
  • Архетипы (Tier 1): веса спавна по этажам/биомам, время замаха агрессии Охотника, триггеры Оппортуниста (доля HP игрока, порог размера хаула, радиус близости к эвакуации), смещение бегства Крысы.
  • Гейтинг по этажам: соперники-нейтральны-с-этажа / доступность-архетипов-с-этажа (сочетается с погружением давлений по этажам из пивота).
  • Игровые системы:
  • ИИ соперника (контроллер бота): состояние нейтрален/враждебен и его триггеры поверх существующей системы целей (цели loot/flee/key/extract без изменений); состояние предупреждения; профиль архетипа, читаемый при спавне.
  • Фильтр таргетинга: захват цели автострельбы/автомили игрока исключает нейтральных соперников; логика огня соперника получает зеркальное исключение. События урона переключают флаг в обе стороны (возмездие).
  • Ввод объявления: рейкаст тапа по сопернику (прощающая зона, взвод по радиусу), маршрутизируемый как переключение враждебности — переиспользует хит-тест запаркованного tap-target, но не его движение/хоуминг.
  • Телеметрия (TinySauce): встреча-началась (близость), игрок-объявил, соперник-объявил, встреча-избегнута, соперник-убит-игроком, игрок-убит-соперником — гейт Tier 2 зависит от существования этих событий с Tier 0.
  • UI / арт:
  • Виджет глифа намерения на якоре полосы HP соперника; янтарная пульсация предупреждения; красная вспышка объявления + звук-стинг.
  • Контекстная кнопка эмоута (Tier 1) + анимации ответов взмах/взгляд.
  • Рендер неймплейтов + ассет пула ников; косметическая вариативность (тинты/аксессуары) на существующих спрайтах соперников.
  • Блок «сражён таким-то» на экране результата с ником/портретом соперника.