# 0.9.0 — одна карта для команды

Статус на 10 ноября 2026: совместная игра для 1–4 игроков реализована и проверена на локальном сервере. В опубликованной версии Sites по-прежнему доступна одиночная игра в браузере. Для входа в команду через интернет ещё нужно разместить игровой сервер и подключить настоящую отправку писем. Скриншоты ниже получены в локальной проверке.

## Что уже работает

- Создание команды, приглашение по ссылке, четыре места, имена и цвета игроков. Перед стартом все подтверждают готовность; создатель запускает матч. После старта состав фиксируется.
- Одно общее поле 37×37, один лабиринт, общий замок, жизни, золото, опыт хранителя и противники. У каждого игрока своя пятёрка, выбор и случайная последовательность камней.
- Повышение качества разрешено только внутри собственной новой пятёрки: два одинаковых камня дают +1, четыре дают +2. Камни союзника и сохранённые пары не используются для такого повышения.
- Сохранённые компоненты доступны для рецептов в любой активной фазе. При создании команды можно включить общее управление сохранёнными камнями. Без него чужие башни защищены от удаления, обмена и расходования в рецептах. Новые пятёрки всегда остаются личными.
- После выбора каждый отдельно нажимает «Готов». Когда готовы все, начинается общий отсчёт в три секунды. Снятие готовности или отключение готового игрока отменяет отсчёт. После волны автоматически начинается следующий строительный ход.
- На 50-й волне команда решает: завершить кампанию или единогласно продолжить бесконечный режим. Отказ от новой пятёрки в endless касается только камней самого игрока.

## Управление на телефоне

Первое короткое касание свободной клетки выделяет её. Второе касание той же клетки или кнопка «Поставить» создаёт камень. Жесты перемещения и масштаба не строят. Это управление работает и в одиночной игре. При выделении карта сохраняет положение: появление и исчезновение карточки камня не сдвигают место второго касания.

Кнопка «Подсветить» отправляет союзникам цветную отметку с именем автора на шесть секунд. Она не ставит камень, не резервирует клетку, не расходует золото и не меняет следующие выпадения. Ограничение — одна отметка в секунду от игрока. Отметки находятся у основания объектов и перекрываются кристаллами по глубине.

Кнопка команды рядом с подсказкой волны показывает готовность союзников. Внутри доступны участники, подключения, готовность, фактически снятое здоровье врагов и убийства. Общие ресурсы показаны один раз. Книга, избранное, несколько целей рецептов и предпросмотр синтеза сохранены. Открытая книга не останавливает сетевой бой.

## Сложность и соответствие оригиналу

Текущий профиль называется coop-proportional-v1. При старте фиксируется P — число игроков, от 1 до 4. Здоровье противников умножается на P ровно один раз. Число врагов, скорость и штраф за пропуск не умножаются. Уход игрока не уменьшает сложность начатой партии.

Это сознательное пропорциональное правило веб-версии по запросу пользователя. В найденном GemTD2.0 используются другие коэффициенты: HP 0.69/2.91/5.17/7.81 и скорость 0.69/1.01/1.19/1.42. Текущий профиль не объявляется точной копией этих коэффициентов.

Начальных булыжников 32/16/8/0 для 1/2/3/4 игроков. Веб-версия выбирает подмножество утверждённых одиночных позиций. Точные координаты многопользовательских булыжников оригинала ещё не сверены; уменьшение поля не выполняется.

## Отключения и восстановление

- Переподключение возвращает тот же слот, собственную пятёрку, башни, молитву, последовательность выпадений и подтверждённые команды. Заново платить или строить уже принятый камень не нужно.
- На стройке отключившийся игрок получает 90 секунд игрового времени. После этого сервер без покупок завершает его пятёрку и выбирает первый камень. При возвращении игрок снова управляет своим слотом. Автоматическая постановка ограничена по работе на один тик.
- Бой продолжается при потере связи; пауза и ускорение клиента отключены. При пяти минутах без подключений комната завершается как брошенная. Если кампания уже пройдена, этот результат сохраняется.
- Если создатель сдаётся, руководство передаётся оставшемуся участнику. Сдавшийся получает просмотр без права менять поле. В лобби можно выйти и вернуться; последовательность команд не обнуляется.
- После остановки процесса расчёт возобновляется из долговечного состояния. Пропущенное реальное время не догоняется. Это текущая политика восстановления обычной игры; рейтинговый режим пока выключен.

## Сервер и результаты

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

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

## Проверено

- Правила собственного выбора, повышения качества, разрешений синтеза и обмена; независимость выпадений; гонка за клетку; готовность, таймер и пропорциональные HP.
- Возврат слота, выход и повторный вход в лобби, защита от команды прошлого строительного хода, откат после ошибки базы, запись одного командного результата и четырёх личных отчётов.
- Четыре настоящих авторизованных WebSocket-соединения через HTTP-сервис.
- В отдельном сценарии четыре независимых браузерных профиля: приглашение, лобби, двадцать камней, четыре выбора, подсветка союзнику, переподключение и общий запуск волны.
- Физические касания в браузере на мобильном размере: выбор без строительства, второе касание, следующий камень после закрытия карточки, замена исходного булыжника. Окна проверены на 320×568, 390×844, 844×390 и 1440×1000 без горизонтального переполнения.
- Полный жизненный цикл 50 волн для четырёх участников и голосование за endless проверены с принудительным уроном. Это не доказательство проходимости или баланса при обычной игре.

## Следующие этапы

- Разместить сервер с HTTPS/WebSocket и полноценным PostgreSQL; подключить подтверждённого почтового отправителя. Проверить резервное восстановление, два процесса, задержки и нагрузку. Подготовленный Docker-контур ещё не проверен на настоящем размещении.
- Last Survivor: 2–4 отдельных одинаковых поля, общий отсчёт раундов, одинаковые условия выпадения, последнее выживание, корректная ничья и восстановление. Пока не реализован.
- Подробная общая и сезонная статистика, рейтинг, история сборок, авторы компонентов и вклад поддержки. Не принимать локальные сохранения как рейтинговые результаты.
- Довести набор до 50 разных анимированных противников. Сейчас есть 16 подготовленных форм; изменение размера и цвета не считается новой уникальной моделью.
- Проверить производительность на настоящих телефонах. Браузерная проверка на разных размерах экрана не является измерением мобильного FPS.

Уже утверждённые иллюстрации минералов, внешний вид острова и маршрут одиночной карты сохранены. Магазин и денежные платежи на этом этапе не добавлялись.
