Files
ai-qpid-pvz/TODO.md
T

293 lines
29 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)