# Plants vs. Zombies (ai.qpid.pro) — Backlog & To-Do List ## Текущий статус: v3.0 Released (Production Ready — 425/425 PASS) - [x] Разведка окружения и настройка DNS (`ai.qpid.pro` -> `31.77.203.213`) - [x] Docker + Nginx + Certbot контейнеризация - [x] SSL Let's Encrypt автоматизация и скрипт обновления - [x] Базовый игровой движок на HTML5 Canvas (5x9 сетка, дорожки) - [x] Газонокосилки (по одной на каждую линию) - [x] Экономика солнца (падающее солнце + подсолнухи) - [x] Базовые растения: Подсолнух, Горохострел, Ледяной горохострел, Стеноорех, Вишневая бомба, Лопата - [x] Базовые зомби: Обычный, Зомби с конусом, Зомби с ведром, Зомби с флагом - [x] Боевая система: регистрация урона, эффекты замедления, частицы взрывов - [x] 4 волны с предупреждающими баннерами и экранами победы/поражения - [x] Web Audio API синтезатор звуковых эффектов --- ## 🎯 Спринт v1.1: Мобильная адаптация, UX и Музыка (Released) - [x] **Исправление багов**: - [x] Зомби корректно продолжают движение после съедения растения (сброс флага `isEating` при гибели или отсутствии цели) - [x] Peashooter стреляет только по живым целям (`!z.toRemove`) - [x] **Сенсорное управление (Touch Controls)** - [x] Тач-события `touchstart`, `touchmove`, `touchend` для смартфонов - [x] Автоматический сбор солнц свайпом (проведение пальцем по экрану) - [x] Увеличенные хитбоксы интерактивных элементов для мобильных пальцев - [x] **Графика и рендеринг (HiDPI / Retina)** - [x] Поддержка `window.devicePixelRatio` для четкости Canvas на смартфонах и 4K дисплеях - [x] Адаптивное масштабирование `#game-container` через CSS `aspect-ratio` и `max-width: 98vw` - [x] **Фоновое музыкальное сопровождение** - [x] Синтез 8-битной полифонической темы *«Grasswalk»* на Web Audio API - [x] Кнопка включения/выключения музыки `btn-music` на панели HUD - [x] **Локальные сохранения рекордов** - [x] Сохранение очков и лучшего рекорда в `localStorage` - [x] Отображение рекорда на стартовом, победном и финальном экранах --- ## 🌻 Спринт v1.2: Тактический арсенал и Новые зомби (Released) - [x] **Новые растения** - [x] Картофельная мина (Potato Mine) — 25 ☀️, время взведения 14 сек, взрыв Spudow! - [x] Повторитель (Repeater) — 200 ☀️, двойной залп горохом - [x] Зубастик (Chomper) — 150 ☀️, моментальное заглатывание зомби и жевание - [x] Халапеньо (Jalapeno) — 125 ☀️, выжигание всей горизонтальной полосы огнем - [x] **Новые зомби** - [x] Зомби с шестом (Pole Vaulter) — быстрый бег, перепрыгивание через 1-е растение с шестом - [x] Зомби с газетой (Newspaper Zombie) — газета поглощает урон, ярость при уничтожении газеты - [x] Зомби-футболист (Football Zombie) — тяжелый шлем, высокая скорость - [x] **Индикатор волны (HUD)** - [x] Шкала волны с визуальным индикатором прогресса --- ## 🌙 Спринт v1.3: Новые биомы (Ночь и Бассейн) (Released) - [x] **Ночной газон (Night Stage)** - [x] Отключение падения солнца с неба - [x] Грибная экономика: Солнцегриб (Sun-shroom) и Дымогриб (Fume-shroom с пробивающими спорами) - [x] Надгробия на поле и растение Могилоед (Grave Buster) - [x] Ночной темный визуальный фон газона и подъем зомби из могил - [x] **Бассейн (Pool Stage)** - [x] 6 дорожек (две центральные дорожки с анимированной водой) - [x] Растение Кувшинка (Lily Pad) для посадки наземных юнитов на воду - [x] Водные зомби на кругах (Ducky Tube Zombies) - [x] Плавающие очистители бассейна (Pool Cleaners) --- ## 🛒 Спринт v1.4: Кампания, Прогрессия и Магазин Дэйва (Released) - [x] **Карта уровней (1-1 ... 1-10)** - [x] Поэтапная кампания с автоматическим переходом на новый уровень - [x] Автоматическая смена биома: День (1-5) -> Ночь (6-8) -> Бассейн (9-10) - [x] **Экономика монет и Магазин Безумного Дэйва** - [x] Выпадение серебряных (10), золотых (50) и алмазных (200) монет из поверженных зомби - [x] Интерфейс магазина: покупка 6-го слота под семена (500 💰), садовых грабель (150 💰) - [x] Механика грабель: автоматическое уничтожение первого зомби на газоне - [x] **Профили игроков** - [x] Сохранение монет, апгрейдов магазина, разблокированных уровней и рекорда в `localStorage` --- ## 🏆 Спринт v1.5: Режимы игры и Мини-игры (Released) - [x] **Бесконечный режим (Endless Survival)** - [x] Бесконечные волны с постоянно возрастающей интенсивностью и флагами - [x] Отслеживание числа отбитых флагов и рекорда - [x] **Мини-игра: Боулинг орехами (Wall-nut Bowling)** - [x] Конвейерная подача орехов и вишен бесплатно - [x] Механика рикошета катящихся орехов по диагоналям при ударе о зомби - [x] Переключатель режимов прямо на стартовом экране («Приключение», «Выживание», «Боулинг», «Я, Зомби») --- ## 🚀 Спринт v1.6: Исправление «Я, Зомби», Навбар без наложений, Меню, Профили/Гость и Автономное Test API (Released) - [x] **Исправление бага режима «Я, Зомби»**: - [x] Устранение мгновенной ложной победы: синхронная расстановка обороны газона без асинхронных задержек `setTimeout` - [x] Размещение 5 целевых подсолнухов в колонке 0 и защитной линии растений (Горохострелы, Повторители, Стеноорехи, Мины) - [x] Начисление +150 солнца за каждый съеденный подсолнух со звуковым эффектом - [x] Корректное условие поражения: солнце < 50 и отсутствие живых зомби на газоне при уцелевших подсолнухах - [x] Отключение автоматических волн и газонокосилок в режиме зомби - [x] Проход зомби до левого края газона считается захватом мозгов и не вызывает проигрыш - [x] **Полная переработка интерфейса (Устранение наложений элементов)**: - [x] Создание независимой верхней панели `.top-nav-bar` на Flexbox над игровым холстом - [x] Исключение абсолютного позиционирования кнопок поверх игрового Canvas, шкалы волн и слотов семян - [x] Равномерное размещение элементов: слева «🏠 Меню» и плашка профиля; справа кнопки скорости «⚡ 1x/2x», музыки «🎵 Вкл/Выкл» и звука «🔊 Вкл/Выкл» - [x] **Главное меню и перезапуск**: - [x] Кнопка «🏠 Меню» доступна в любой момент игры: ставит игру на паузу и открывает окно выбора режима, уровня и магазина - [x] Кнопки «В МЕНЮ» на экранах поражения и победы для мгновенного перезапуска или смены сценария - [x] **Система авторизации и профилей (Логин/Пароль + Гость)**: - [x] Реализована система `PvZAuth` в `js/systems/auth.js` - [x] Модальное окно авторизации игрока: вход / быстрая регистрация по логину и паролю - [x] Режим «Гость»: полноценная сессионная игра без сохранения прогресса на диск - [x] Изоляция данных пользователя: сохраненные монеты, открытые уровни и покупки магазина привязаны к аккаунту - [x] Индикатор текущего статуса игрока в верхнем тулбаре - [x] **Автономное тестирование игры (Test API & CLI Runner)**: - [x] Встроенный движковый API `window.PvZTestAPI` в `js/utils/test_api.js` (симуляция тиков, спавн сущностей, проверка боя, мины, косилок, победы в «Я, Зомби» и авторизации) - [x] Автономный CLI скрипт `scripts/test_game.py` с 46 автоматическими проверками HTTP/2, статики, синтаксиса и бизнес-логики --- ## 🛠️ Спринт v1.7: Локация «Садовая Мастерская» — Крафт, 3 Уровня прокачки растений и Пассивные перки (Released) - [x] **Новая игровая локация «Сад-Мастерская» (Garden Workshop & Lab)**: - [x] Отдельный интерактивный экран/модальное окно Сада с верстаком прокачки и деревом перков - [x] Переход в Сад одной кнопкой из верхнего меню и стартового окна («🧪 Сад-Мастерская») - [x] **Система ремесленных материалов (Drop & Craft)**: - [x] Сбор ресурсов в процессе боя во всех режимах игры: - 🧪 **Био-гумус (Bio-Humus)** — выпадает из поверженных базовых зомби - ⚙️ **Зомби-детали (Scrap Metal)** — выпадает из бронированных врагов (ведра, конусы, футболисты) - ☀️ **Солнечная эссенция (Sun Essence)** — накапливается за активный сбор солнечных капель - 💎 **Алмазные кристаллы (Crystals)** — редкий дроп из волн флагов и элиты - [x] Визуальные летающие дропы материалов с физикой падения, анимацией и подсветкой - [x] Сбор материалов кликом мыши или автосбором через перк магнетизма - [x] **Система 3 уровней прокачки каждого растения (Tier 1 ➔ Tier 2 ➔ Tier 3)**: - [x] Индивидуальный прогресс каждого растения за монеты + материалы: - **Горохострел**: - *Ур. 1*: Базовый горох (урон 20) - *Ур. 2 («Скорострел»)*: Урон 25, скорость атаки +20%, шанс крита 15% (x2 урон) - *Ур. 3 («Плазменный стрелок»)*: Плазменный шар пробивает первого зомби насквозь и ранит идущего сзади - **Подсолнух**: - *Ур. 1*: Базовое солнце (25 ☀️) - *Ур. 2 («Крупный подсолнух»)*: Дает 35 ☀️, ускоренное появление - *Ур. 3 («Благодатный свет»)*: Каждая генерация солнца лечит +30 HP соседним растениям - **Стеноорех**: - *Ур. 1*: 400 HP - *Ур. 2 («Каменный монолит»)*: 700 HP + поглощение 15% урона - *Ур. 3 («Шипованный бастион»)*: 1000 HP + возврат 30% урона атакующим зомби при каждом укусе - **Картофельная мина**: - *Ур. 1*: Взведение 15 сек, взрыв в 1 клетке - *Ур. 2*: Быстрое взведение всего за 6 сек - *Ур. 3 («Атомный Spudow»)*: Взрыв по площади 3x3 клетки + лавовая зона - **Повторитель, Ледяной горох, Зубастик** — расширенные деревья прокачки до 3 уровней - [x] Визуальное отображение уровней: звездочки (★★ / ★★★) над карточками в колоде и световые ауры на газоне - [x] **Пассивные Перки Садовника (Глобальное дерево технологий)**: - [x] 5 пассивных улучшений профиля: - 🧲 *«Магнитный газон»* — увеличенный радиус автосбора монет, солнц и лута (до полного экрана на ур. 3) - ☀️ *«Стартовый капитал»* — старт каждого боя с +50/+100/+150 ☀️ - ⏳ *«Ускоренный полив»* — сокращение кулдауна семян на -10%/-20%/-30% - 🛡️ *«Упорные корни»* — запас здоровья всех посадок +20%/+35%/+50% - 🍀 *«Золотая рука»* — шанс дропа золотых монет и редких материалов повышен на +30%/+60%/+100% - [x] Сохранение уровней растений, ресурсов и купленных перков в профиле игрока (`PvZAuth`) --- ## 🪴 Спринт v1.8: Дзен-Сад (Пассивный доход и улитка Стинки) и Альманах (Released) - [x] **Дзен-Сад (Zen Garden)**: - [x] Выращивание растений в горшках (лейка, удобрения, граммофон) - [x] Пассивный доход монет каждые несколько часов (начисление монет за время отсутствия) - [x] Улитка Стинки (Stinky the Snail) пылесосит монеты при подкармливании шоколадом - [x] Автосохранение состояния сада и таймеров полива - [x] **Альманах пригородных растений и зомби (Suburban Almanac)**: - [x] Энциклопедия с описанием, характеристиками (урон, прочность, скорость) и лором всех персонажей - [x] Секретный Зомби-Йети (дроп 4 алмазов при уничтожении) - [x] Интерактивный предпросмотр анимаций и звуков в модальном окне --- ## 🎲 Спринт v1.9: «Садовый Рогалик» и Достижения (Released) - [x] **Режим «Садовый Рогалик» (Garden Roguelike)**: - [x] Драфт семян и выбор 1 из 3 мощных реликвий после каждой волны (молнии, яд, взрывы, вампиризм) - [x] Случайная генерация волн и комбинаций противников - [x] Нарастающая сложность этажей и уникальные модификаторы поля - [x] **Система Достижений (30+ ачивок с наградами)**: - [x] Зал трофеев в профиле игрока (`achievements.js`) - [x] Награды монетами и алмазами за разблокировку испытаний - [x] Всплывающие уведомления (toasts) при выполнении достижений во время боя --- ## 👑 Спринт v2.0: Туман, Крыша, Босс Зомбосс и Лидерборды (Released) - [x] **Биомы Туман и Крыша**: - [x] Биом Туман: ночной бассейн с густой пеленой, Плантерн (Plantern) и Вздуватель (Blover) - [x] Биом Крыша: наклонный скат, Цветочный горшок (Flower Pot), Капустопульта (Cabbage-pult) и Арбузопульта (Melon-pult) - [x] **Дерево Мудрости (Tree of Wisdom)**: - [x] Покупка древа и подкормка удобрениями за монеты - [x] Разблокировка скрытых клавиатурных чит-кодов (`mustache`, `future`, `dance`, `pinata`) - [x] Интерактивный экран роста древа с подсказками Безумного Дэйва - [x] **Финальный босс Доктор Зомбосс**: - [x] Шагающий боевой робот Zombot с фазами атаки (ледяные шары, огненные шары, фургоны, десант) - [x] Режим Boss Rush с отдельной шкалой здоровья и эпической музыкой - [x] **Глобальные таблицы лидеров (Leaderboards)**: - [x] Сохранение рекордов режимов Выживание, Боулинг и Рогалик - [x] Топ игроков с фильтрацией по режимам --- ## 🔐 Спринт v2.5-v2.6: SQLite Auth, Server Sync, Bug Tracker Sync, Lifetime Stats (Released) - [x] **Серверная база данных SQLite и модульная архитектура**: - [x] Разработка [`scripts/db.py`](file:///home/kopri/agy/scripts/db.py) (таблицы `users`, `profiles`, `leaderboards`, `bugs`, WAL-режим) - [x] Криптографическое хеширование паролей: `PBKDF2-HMAC-SHA256` (100,000 итераций) со случайной солью - [x] CLI утилита администрирования пользователей [`scripts/manage_users.py`](file:///home/kopri/agy/scripts/manage_users.py) - [x] **Надежная синхронизация профилей и защита от потери данных**: - [x] Двусторонняя синхронизация через REST эндпоинты `/api/auth/save`, `/api/auth/sync`, `/api/auth/profile` - [x] Бесшовный перенос накопленного гостевого прогресса при первой регистрации аккаунта - [x] Гарантированное сохранение при Game Over и во всех мини-играх - [x] Разделение и изоляция состояния подсистем (Мастерская, Дзен-сад, Древо) - [x] **Интегрированный Bug Tracker сообщества**: - [x] Модальное окно обратной связи в клиенте (`feedback.js`) - [x] Санитизация HTML-тегов, валидация полей и хранение отчетов в SQLite - [x] Публичный JSON API `/api/bugs` - [x] **Пожизненная статистика игрока (Lifetime Stats)**: - [x] Подсчет уничтоженных зомби, посаженных растений, собранных монет, побед и поражений - [x] Виджет статистики в профиле игрока --- ## 🛠️ Спринт v2.7: Конфигуратор & Панель Администратора (Visual Level Editor, Audit Logs, Session Manager) (Released) - [x] **Панель Администратора (SPA Dashboard)**: - [x] Веб-интерфейс в каталоге [`game/configurator/`](file:///home/kopri/agy/game/configurator/index.html) с Cyberpunk Botanical темой - [x] Защищенная авторизация по мастер-паролю администратора (`/api/admin/auth`) с выдачей bearer-токенов - [x] Информационный дашборд статистики: число игроков, активных сессий, баг-репортов, объем БД - [x] **Визуальный редактор 25 уровней кампании**: - [x] Таблица базы данных [`campaign_levels`](file:///home/kopri/agy/scripts/db.py#L544-L559) со всеми 25 уровнями в 5 мирах - [x] Интерактивный редактор волн зомби, модификаторов окружения, наград и сообщений Безумного Дэйва - [x] Эндпоинты `/api/admin/campaign/level/save` и `/api/admin/campaign/level/reset` для сброса к заводским настройкам - [x] Клиентская подсистема [`campaign.js`](file:///home/kopri/agy/game/js/systems/campaign.js) динамически запрашивает уровни с сервера - [x] **Менеджер активных сессий игроков**: - [x] Мониторинг сессий в реальном времени (`/api/admin/sessions`): токен, пользователь, IP, User-Agent, девайс, время активности - [x] Принудительное завершение любых сессий администратором (`/api/admin/session/terminate`) - [x] **Журнал аудита авторизаций (`login_logs`)**: - [x] Фиксация всех попыток входа с статусами (успех, неверный пароль, rate-limit, неверный формат) - [x] Мульти-фильтры по имени пользователя, IP-адресу и лимиту выборки (`/api/admin/logs`) - [x] **Динамический конфигуратор баланса игры ([`config.js`](file:///home/kopri/agy/game/js/systems/config.js))**: - [x] Таблица `game_config` и эндпоинты `/api/config`, `/api/admin/config` - [x] Тонкая настройка множителей экономики, прочности и скорости зомби, кулдаунов растений - [x] Встроенные баланс-пресеты: *Classic 2009*, *Hardcore*, *Turbo*, *Casual*, *Custom* - [x] **Модерация игроков и управление безопасностью**: - [x] Редактирование монет, уровней, сброс паролей игроков - [x] Блокировка/разблокировка пользователей с указанием причины бана - [x] Смена пароля администратора через панель (`/api/admin/password/change`) --- ## 🎰 Спринт v2.8: Казино Безумного Дэйва и Лаборатория Зомби (Released) - [x] **Казино и Банк Безумного Дэйва ([`casino.js`](file:///home/kopri/agy/game/js/systems/casino.js))**: - [x] Слот-машина с барабанами, анимацией вращения и звуковыми эффектами - [x] 7 уникальных символов с весами и коэффициентами выплат (Подсолнух, Горох, Орех, Вишня, Алмаз, Семёрка, Мозги) - [x] Джекпоты с начислением редких кристаллов - [x] Банковские депозиты под сложный процент (5% в час, до 48 часов) - [x] Система срочных займов до 2500 монет с фиксированной комиссией 10% - [x] Автоматическое сохранение баланса депозитов, займов и статистики спинов в профиле - [x] **Лаборатория Мутаций Зомби ([`zombielab.js`](file:///home/kopri/agy/game/js/systems/zombielab.js))**: - [x] Полноценная 3-тир система эволюции зомби для режима «Я, Зомби» - [x] 5 классов зомби: Обычный (Вампиризм), Конус (Шипованный шлем), Шест (Двойной прыжок), Ведро (Крио-защита), Футболист (Таран мин) - [x] Крафт мутаций за монеты, шестеренки, био-гумус и кристаллы - [x] Интеграция мутаций в боевую логику режима «Я, Зомби» --- ## 💾 Спринт v2.9: Автоматический бэкап базы данных и интеграция DOOM (Released) - [x] **Автоматический бэкап и ротация SQLite базы данных ([`backup_db.py`](file:///home/kopri/agy/scripts/backup_db.py))**: - [x] Неблокирующее создание горячих снимков через online `sqlite3.Connection.backup()` - [x] Формат имен файлов: `backups/pvz_YYYYMMDD_HHMMSS.db` - [x] Автоматическая ротация (pruning) с сохранением последних 7 резервных копий - [x] CLI интерфейс с параметрами `--db`, `--dir`, `--keep` и программное API - [x] Добавление каталога `backups/` и `*.db` в [`.gitignore`](file:///home/kopri/agy/.gitignore) - [x] **Классический DOOM Web Edition ([`game/doom/`](file:///home/kopri/agy/game/doom/index.html))**: - [x] Встроенная пасхалка и отдельный 3D WebGL ретро-шутер - [x] Оригинальный статус-бар DOOM: шкалы AMMO, HEALTH, ARMOR, Arms matrix (1-7), анимированное лицо Doomguy - [x] CRT-сканлайны, динамические эффекты урона и адаптивный рендеринг --- ## 🧪 Спринт v3.0: Комплексный тест-пайплайн (425 тестов) и подготовка к релизу (Released) - [x] **Масштабирование автономного тест-раннера ([`test_game.py`](file:///home/kopri/agy/scripts/test_game.py))**: - [x] Расширение тестового покрытия со 215 до 425 автоматических тестов - [x] Проверка HTTP/2, SSL-сертификатов, gzip-сжатия и безопасности заголовков - [x] Валидация PWA манифеста, Service Worker и локального кэширования - [x] Полный синтаксический анализ и проверка целостности JavaScript/CSS - [x] Юнит- и интеграционные тесты боевого движка, экономики, волн, крафта и дзен-сада - [x] Комплексное тестирование всех эндпоинтов REST API админки, конфигуратора, сессий и аудита - [x] Тестирование модуля бэкапа базы данных и механик казино/лаборатории зомби - [x] **Финальный прогон и верификация релиза**: - [x] Результат выполнения: **425/425 PASSED (0 FAILED, 100% Pass Rate)** - [x] Полная готовность проекта к промышленной эксплуатации (Production Ready)