# 0.10.0 — последний выживший

Статус на10 ноября2026: режим2–4 игроков реализован и проверен на локальном сервере. Общая карта co-op1–4 и одиночные режимы сохранены. Интернет-сервер и настоящая почтовая доставка ещё не подключены; статический Sites сам не запускает сетевые комнаты. Обновление публикации фиксируется отдельно от локальной готовности.

## Понятный цикл соревнования

- Создатель выбирает «Последний выживший» в профиле и приглашает соперников по ссылке. Для запуска нужны2–4 подключённых участника, готовность каждого и запуск создателем. В процессе новые участники не присоединяются.
- Каждый получает собственное одинаковое поле37×37 с исходными одиночными булыжниками. Золото, опыт, жизни, башни и пятёрка полностью личные. Нельзя потратить камни или деньги другого игрока.
- На общий строительный ход даётся60 секунд игрового времени. Каждый ставит пять камней, выбирает результат и подтверждает готовность. Если все готовы раньше, начинается общий отсчёт3 секунды.
- По истечении срока сервер завершает незаконченный ход без покупок и сохраняет первый камень. При полностью занятом поле оставшиеся новые камни превращаются в булыжники, новый самоцвет не создаётся. Проверка пути не обходится.
- Все начинают одну волну одновременно. Быстрее закончивший игрок ждёт остальных; следующий строительный ход открывается всем оставшимся вместе. Пока поле ждёт, менять его нельзя. Это исключает дополнительную стройку во время чужой текущей волны.
- Побеждает последний оставшийся сад. Сервер сначала рассчитывает все поля одного игрового тика и только затем определяет выбывание. Последние участники, погибшие в одном тике, получают ничью без назначенного победителя. Группа одновременного выбывания делит одно место.
- Если после50 волн осталось несколько игроков, соревнование автоматически продолжается в бесконечном режиме. Отдельного голосования нет. Камни, ресурсы, MVP и факт прохождения кампании сохраняются. Технический предел завершает матч без победителя.

## Что означает «одинаковые условия»

Профиль last-survivor-equal-v1 отделён от обычной и совместной игры. Карты и исходные ресурсы одинаковые. Базовые случайные броски камней привязаны к волне, номеру оплаченного повтора пятёрки и позиции1–5. Порядок кликов игроков, задержки сети и молитва другого игрока не сдвигают эту последовательность.

Итоговое качество рассчитывается по обычной таблице личного уровня хранителя. Опыт за успешную защиту может различаться; при разных уровнях одинаковый базовый бросок может дать разные качества. Собственная молитва законно меняет вероятность выбранного вида, сохраняя бросок качества. Она не меняет следующий камень. Случайный результат понижения качества выделен в отдельный бросок и также не зависит от молитвы на последнем камне.

Сервер хранит закрытый ключ матча и получает начальные состояния бросков через HMAC-SHA256. Ключ, seed, будущие случайные потоки и журнал не передаются клиенту. Базовое ядро использует32-битные состояния: до рейтингового запуска ещё нужен отдельный аудит предсказуемости и проверяемый протокол фиксации случайности. Текущий режим обычный, без рейтинга.

Состав, свойства, элитность, награды и штрафы врагов у всех совпадают по номеру волны и противника. Для равного соревнования обычная волна имеет10 врагов, после50 —30. Боссы используют отдельное число по правилам ядра. Адаптивное изменение числа по успехам отдельного сада здесь не переносится в следующий раунд; исходная адаптация одиночного/co-op режима сохранена в своих профилях. Это самостоятельное правило веб-соревнования, не заявление о точном воспроизведении Dota Race.

## Восстановление и итоги

Переподключение возвращает то же поле, место в лобби, пятёрку и подтверждённые команды. Во время обрыва идёт общий срок стройки; отдельной остановки соревнования нет. Падение процесса замораживает симуляцию до восстановления из долговечного состояния: пропущенное реальное время не догоняется. Полный PostgreSQL и эксплуатационная политика таких остановок ещё требуют проверки.

Выбывший игрок получает просмотр состояния соперников без права менять своё поле. Уход создателя после старта не завершает матч оставшимся игрокам. Все отключились на5 минут — соревнование помечается брошенным, без выдуманного победителя. Создатель может закрыть незапущенное лобби.

Один матч создаёт один общий итог и личный отчёт каждого участника. В отчёте есть место, исход, причина/время выбывания, состав башен, качества, MVP, урон, убийства, жизни и личная экономика. Повтор команды и повторная финализация не создают второй результат. Все записи server_casual; локальные сохранения не импортируются в общий рейтинг.

## Что проверено

Итоговая регрессия:287 клиентских и50 серверных автоматических проверок, всего337 без ошибок. Браузерные сценарии и осмотр скриншотов выполнялись отдельно.

- Лобби2–4, отдельные поля и отсутствие чужих башен/событий в персональном представлении.
- Одинаковые базовые выпадения при разном порядке действий, неудачной постановке, молитве и оплаченных повторах. Независимый бросок понижения качества.
- Общий строительный срок, автоматическое завершение, готовность и неотодвигаемый повторным нажатием отсчёт.
- Одинаковые варианты/награды/штрафы противников, ожидание быстрого сада, общий следующий раунд.
- Реальные одновременные пропуски противников с ничьёй, одинаковый результат при перестановке порядка игроков, группы одинаковых мест и один оставшийся победитель.
- Переход50→51, отдельный пропуск пятёрки, восстановление всех полей и выбывших слотов, техническая остановка без победы.
- Настоящие HTTP/WebSocket-соединения четырёх участников, переподключение того же слота, транзакционный откат всех полей после отказа записи, защита от команды прошлого хода и один общий/четыре личных результата.
- Четыре независимых браузерных профиля: приглашение, лобби, двадцать камней, одинаковая первая пятёрка, по одной собственной башне, общий бой, переподключение и показ победителя. Финал проверен сдачей трёх тестовых участников, а не стратегическим прохождением.
- Окна на320×568,390×844,844×390 и1440×1000 без горизонтального переполнения. Это не измерениеFPS настоящего телефона.

## Дальше по плану

- Сводная и сезонная статистика: разные режимы и размеры команды отдельно; личная экономика и общий кошелёк co-op не суммируются одинаково. История минералов, авторы ингредиентов и вклад поддержки пока неполные.
- Рейтинг и сезоны: учитывать только проверенные серверные матчи; сначала аудит случайности, правила отказов и одинаковых мест, полноценная база, нагрузка и эксплуатационное восстановление. До этого рейтинг выключен.
- Настоящий интернет-сервер и почта: размещение, домен/HTTPS, подтверждённый отправитель, резервные копии и восстановление, несколько процессов, мобильные задержки и лимиты комнат. Подготовленные файлы размещения не означают выполненный запуск.
- Оставшиеся34 уникальные анимированные формы противников и проверка графики на настоящих устройствах. Утверждённые иллюстрации и внешний вид острова не менялись.

Коммерческие функции и платежи на этом этапе не добавлялись.
