# Обязательный план развития Gem TD Web

Редакция 7 ноября 2026. Этот документ и документы 20–23 уточняют документы 02–04. Это задания будущей разработки, а не перечень уже выпущенных функций.

## 1. Что принято пользователем

1. Кампания из **50 волн**, затем настоящий **бесконечный режим**.
2. Художественная цель — **50 различимых моделей противников**, по одной основной форме на волну. Маленькие и простые существа в начале; более крупные, сложные и внушительные позднее. Масштабирование допустимо как промежуточный этап.
3. Сначала онлайн-кооператив **1–4 игрока на одной карте и одном лабиринте**, с понятным увеличением сложности. Затем соревнование на отдельных одинаковых картах: **последний выживший побеждает**.
4. Подробные показатели золота, очков, качеств, созданных кристаллов и нанесённого урона: в бою, после матча, за всё время и в общем рейтинге. В дальнейшем — сезоны с разными условиями.
5. Профиль: электронная почта → числовой код в письме → имя и пароль. Позднее — покупки, связанные с аккаунтом.
6. Утверждённые иллюстрации сохраняются. Текущая визуальная работа касается света, материалов 3D-мира и цветов интерфейса; устройство не должно получать дополнительные тяжёлые эффекты.

Ранее согласованный режим с отправкой врагов соперникам остаётся отдельной дальнейшей задачей. Он не входит в первую версию соревнования на выживание.

## 2. Что реально готово сейчас

Подготовлена сборка 0.4.0 одиночного прототипа на 20 волн с картой 37×37, пятёрками, синтезом и мобильным интерфейсом. Есть 6 анимированных моделей. Граница точности и новые свойства — [документ 25](25_GROUNDED_RIM_AND_TWENTY_WAVES.md). Готовность локальной сборки и доступность её на основном адресе проверяются отдельно; полный Classic пока не завершён.

**Ещё нет:** полноценной кампании 50, бесконечности, серверных матчей, регистрации, глобальной статистики, сезонов и оплаты. Локальное браузерное сохранение не является защищённым серверным результатом. Новый план не должен менять эту маркировку до прохождения приёмки.

## 3. Что подтвердил аудит установленной GemTD2.0

Источник — Workshop3817795446, опубликован 29.10.2026; пакет SHA256 `c2aed66ec055edf7fdd3bceb02a0d941d207c01b82326074366f0642c623166e`. Читались файлы, игра Dota не запускалась. Подробные доказательства: [волны/co-op](../../reference_data/gemtd2-source/future-audit/waves-coop.md), [экономика/статистика](../../reference_data/gemtd2-source/future-audit/economy-stats.md). Смещения, исходные строки и хеши выдержек сохранены рядом. Сам VPK и чужие модели в веб-сборку не переносятся.

| Вопрос | Подтверждённое поведение | Следствие для нашего плана |
| --- | --- | --- |
| Сколько волн |50 исходных;51–100 повторяют их с резким усилением, без строительства; после 100 есть завершающая ветвь | Настоящая бесконечность — новое правило, отдельная версия баланса |
| Сложность 1/2/3/4 |HP×base:0.69/2.91/5.17/7.81; speed×base:0.69/1.01/1.19/1.42 | Не называть исходную таблицу линейной; хранить её отдельно от нового пропорционального режима |
| Врагов на волну |Счётчик стартует 10 и меняется сериями успехов/неудач; обычно 1 босс | Нельзя просто умножить 10 врагов на игроков |
| Общая карта |Общий замок, начальные 100 жизней, общее золото, общий пул сохранённого синтеза; своя пятёрка у каждого | Отдельно описать владение, разрешение союзнику и расход общих ресурсов |
| Начальные камни |32/16/8/0 при 1/2/3/4 | Конфигурация поля зависит от числа участников |
| Переподключение |Есть callbacks, но готовность после ухода и одна ветвь reconnect сомнительны | Веб-восстановление проектируем и проверяем самостоятельно |
| Перестановка |Swap за 300/225/175/150 золота по уровню способности; есть соседний обмен и круговой сдвиг | Это игровые расходы, а не доказанная цена за реальные деньги |
| Бесплатные переносы |Общая конечная квота с докупкой не найдена; старая версия возвращала золото за обмен с обычным камнем | Не обещать перенос этого правила без выбора целевой версии |
| Магазин |Есть покупки героев/способностей/эффектов/игрушек/курьеров/коробок через внешний API | Цены внешнего магазина и реальная платёжная интеграция локально не установлены |
| Мета-сила |Бонусы питомцев способны увеличивать урон; это не только косметика | Не переносить их незаметно в честный рейтинг |
| Рейтинг |Отправляются результаты co-op/race, но серверная MMR-формула неизвестна | Наша статистика и формула рейтинга должны быть собственными и версионируемыми |

Найдено расхождение версий: старое приложение использовало иные HP/speed, а wave2 имела speed600 вместо 700 в 2.0. Текущий прототип не перенастраивается молча в рамках цветового обновления. Сведение правил — отдельное заданиеA1.

## 4. Порядок выполнения и зависимости

| Этап | Результат | Зависимости | Когда принимается |
| --- | --- | --- | --- |
| A0 | Более выразительная карта/UI без новых графических проходов | Текущий прототип | Снимки ПК/телефона/ночи, неизменность утверждённой графики и бюджета |
| A1 | Версионированный ruleset2.0, реестр всех недостающих эффектов и 50 волн | Аудит исходников | Нет смешения старых и новых таблиц; неизвестное явно отмечено |
| A2 | Кампания 50 с полноценными противниками и итогом | A1, приоритетные эффекты Classic | Полный headless-прогон и ручные контрольные волны |
| A3 | Настоящая бесконечность, отдельные правила и рейтинг | A2 | Численная устойчивость, ограниченный spawn, воспроизводимость |
| A4 | Контракт серверных команд/событий, журнал статистики | A1; может идти до завершения арта | Сервер воспроизводит матч по seed и командам |
| A5 | Почтовый аккаунт и сессии, привязка гостя | A4 контракты идентификаторов | Проверка регистрации, восстановления, выхода, защиты повторов |
| A6 | Авторитетная серверная solo-комната и восстановление | A4,A5 | Разрыв связи не портит сохранение/результат |
| A7 | Co-op1–4, общая карта, готовность, права, баланс | A2,A6 | Четыре клиента, одновременные команды, уход/возврат |
| A8 | Last Survivor2–4 на отдельных картах | A7 транспорт/сервер; правила из 21 | Проверены выбывание, ничья и единый темп времени |
| A9 | Личная история, подробные итоги, глобальные таблицы | A4,A6; накапливать с первого сетевого матча | Повторная доставка результата не удваивает показатели |
| A10 | Сезоны/награды/архивы | A8,A9 | Граница сезона не меняет правила начатой партии |
| A11 | Магазин косметики и оплата | A5,A9, выбранная юрисдикция/провайдер | Тестовые платежи, повторы, возвраты, выдача ровно один раз |

Производство моделей идёт пакетами рядом сA2–A8;50 разных силуэтов — цель полного художественного выпуска, не повод блокировать проверку сервера временными моделями. Оплата не является зависимостью отладки игры.

## 5. Ещё недостающие элементы полного оригинала

| Область | Что сделать | Приоритет |
| --- | --- | --- |
| Бой |Точный реестр всех атак, аур, баффов, дебаффов, иммунитетов, уклонения, невидимости/обнаружения, отражения/регенерации; порядок вычислений и округления | До 50-волнной приёмки |
| Синтез |Реализовать способности всех составных башен; сейчас некоторые недоступны. Проверить сохранение владельца, MVP, вклад ингредиентов; сохранить пользовательское объединение сохранённых пар как явное веб-правило | До полного Classic |
| Плиты |Три различимых уровня, создание/замена/усиление, ограничения, влияние на путь и эффекты | До полного Classic |
| Экономика партии |XP/уровень строителя/вероятности качеств, общая и личная валюта, расходы способностей, награды, MVP до 10 и его перенос при синтезе | До баланса кампании |
| Волны |Летающие маршруты, элита, альтернативные варианты, боссы, урон замку по диапазонам, enrage и динамическое число врагов | До 50-волнной приёмки |
| Строитель-шар |Сохранить форму шара; способности и прокачка не требуют человека/гуманоида. Для рейтинга одинаковый набор способностей | После основных эффектов |
| Шаблоны лабиринта |Сохранение схемы/призрачный план; оригинал сохраняет occupancy, это не checkpoint боя | После надёжных сохранений |
| Обучение |Короткое обучение пятёрке, выбору, синтезу, перелётам и общей карте; подсказки для телефона | До открытого теста |
| Звук и доступность |Индивидуальная громкость, сигналы начала/опасности/синтеза, форма+иконка помимо цвета, reduced motion, читаемость мелких чисел | До открытого теста |
| Надёжность |Миграции сохранений, версии контента, реплеи, аварийный checkpoint, экспорт результата, жалобы/модерация имён, админ-аудит | До рейтинга |
| Эксплуатация |Метрики, резервные копии с реальным восстановлением, нагрузка, лимиты комнат, поддержка зависших матчей и спорных платежей | До публичного онлайна |
| Другие оригинальные системы |Задания/дневные условия, питомцы, герои, luckybox, кодовые награды — сначала аудит/продуктовое решение; не обязательны первой честной веб-версии | После ядра |

## 6. Инструкция агенту следующего этапа

ВзятьA1 как следующую игровую задачу. Сначала прочитать 20 и evidence, составить матрицу `source / implemented / missing / chosen deviation`. Не добавлять одновременно авторизацию, магазин и 50 волн в один патч. На каждую работу: входные файлы → контракт данных → реализация → воспроизводимые проверки → обновление статуса. Публиковать только реализованное; будущие кнопки не должны выдавать локальные значения за глобальный рейтинг.

Правила выполнения четырёх направлений находятся в [20 — волны](20_WAVES_AND_ENDLESS.md), [21 — сервер/режимы](21_ONLINE_MULTIPLAYER.md), [22 — статистика](22_STATS_RATINGS_SEASONS.md), [23 — профиль/покупки](23_PROFILE_AND_COMMERCE.md).

## 7. Решения до начала зависимой реализации

Предварительно принять предлагаемые ниже значения для прототипирования, затем подтвердить на тестах: строительство после 50 разрешено; пропорциональный co-op имеет HP×P без ускорения; ranked не продаёт силу; disconnect сохраняет сложность; ранговый Last Survivor играет в одинаковом темпе. Выбор страны/валюты/платёжного оператора потребуется только передA11. Эти вопросы не блокируют нынешнее улучшение цвета и подготовку архитектуры.
