Files
ai-qpid-pvz/TODO.md
T

29 KiB
Raw Blame History

Plants vs. Zombies (ai.qpid.pro) — Backlog & To-Do List

Текущий статус: v3.0 Released (Production Ready — 404/404 PASS)

  • Разведка окружения и настройка DNS (ai.qpid.pro -> 31.77.203.213)
  • Docker + Nginx + Certbot контейнеризация
  • SSL Let's Encrypt автоматизация и скрипт обновления
  • Базовый игровой движок на HTML5 Canvas (5x9 сетка, дорожки)
  • Газонокосилки (по одной на каждую линию)
  • Экономика солнца (падающее солнце + подсолнухи)
  • Базовые растения: Подсолнух, Горохострел, Ледяной горохострел, Стеноорех, Вишневая бомба, Лопата
  • Базовые зомби: Обычный, Зомби с конусом, Зомби с ведром, Зомби с флагом
  • Боевая система: регистрация урона, эффекты замедления, частицы взрывов
  • 4 волны с предупреждающими баннерами и экранами победы/поражения
  • Web Audio API синтезатор звуковых эффектов

🎯 Спринт v1.1: Мобильная адаптация, UX и Музыка (Released)

  • Исправление багов:
    • Зомби корректно продолжают движение после съедения растения (сброс флага isEating при гибели или отсутствии цели)
    • Peashooter стреляет только по живым целям (!z.toRemove)
  • Сенсорное управление (Touch Controls)
    • Тач-события touchstart, touchmove, touchend для смартфонов
    • Автоматический сбор солнц свайпом (проведение пальцем по экрану)
    • Увеличенные хитбоксы интерактивных элементов для мобильных пальцев
  • Графика и рендеринг (HiDPI / Retina)
    • Поддержка window.devicePixelRatio для четкости Canvas на смартфонах и 4K дисплеях
    • Адаптивное масштабирование #game-container через CSS aspect-ratio и max-width: 98vw
  • Фоновое музыкальное сопровождение
    • Синтез 8-битной полифонической темы «Grasswalk» на Web Audio API
    • Кнопка включения/выключения музыки btn-music на панели HUD
  • Локальные сохранения рекордов
    • Сохранение очков и лучшего рекорда в localStorage
    • Отображение рекорда на стартовом, победном и финальном экранах

🌻 Спринт v1.2: Тактический арсенал и Новые зомби (Released)

  • Новые растения
    • Картофельная мина (Potato Mine) — 25 ☀️, время взведения 14 сек, взрыв Spudow!
    • Повторитель (Repeater) — 200 ☀️, двойной залп горохом
    • Зубастик (Chomper) — 150 ☀️, моментальное заглатывание зомби и жевание
    • Халапеньо (Jalapeno) — 125 ☀️, выжигание всей горизонтальной полосы огнем
  • Новые зомби
    • Зомби с шестом (Pole Vaulter) — быстрый бег, перепрыгивание через 1-е растение с шестом
    • Зомби с газетой (Newspaper Zombie) — газета поглощает урон, ярость при уничтожении газеты
    • Зомби-футболист (Football Zombie) — тяжелый шлем, высокая скорость
  • Индикатор волны (HUD)
    • Шкала волны с визуальным индикатором прогресса

🌙 Спринт v1.3: Новые биомы (Ночь и Бассейн) (Released)

  • Ночной газон (Night Stage)
    • Отключение падения солнца с неба
    • Грибная экономика: Солнцегриб (Sun-shroom) и Дымогриб (Fume-shroom с пробивающими спорами)
    • Надгробия на поле и растение Могилоед (Grave Buster)
    • Ночной темный визуальный фон газона и подъем зомби из могил
  • Бассейн (Pool Stage)
    • 6 дорожек (две центральные дорожки с анимированной водой)
    • Растение Кувшинка (Lily Pad) для посадки наземных юнитов на воду
    • Водные зомби на кругах (Ducky Tube Zombies)
    • Плавающие очистители бассейна (Pool Cleaners)

🛒 Спринт v1.4: Кампания, Прогрессия и Магазин Дэйва (Released)

  • Карта уровней (1-1 ... 1-10)
    • Поэтапная кампания с автоматическим переходом на новый уровень
    • Автоматическая смена биома: День (1-5) -> Ночь (6-8) -> Бассейн (9-10)
  • Экономика монет и Магазин Безумного Дэйва
    • Выпадение серебряных (10), золотых (50) и алмазных (200) монет из поверженных зомби
    • Интерфейс магазина: покупка 6-го слота под семена (500 💰), садовых грабель (150 💰)
    • Механика грабель: автоматическое уничтожение первого зомби на газоне
  • Профили игроков
    • Сохранение монет, апгрейдов магазина, разблокированных уровней и рекорда в localStorage

🏆 Спринт v1.5: Режимы игры и Мини-игры (Released)

  • Бесконечный режим (Endless Survival)
    • Бесконечные волны с постоянно возрастающей интенсивностью и флагами
    • Отслеживание числа отбитых флагов и рекорда
  • Мини-игра: Боулинг орехами (Wall-nut Bowling)
    • Конвейерная подача орехов и вишен бесплатно
    • Механика рикошета катящихся орехов по диагоналям при ударе о зомби
    • Переключатель режимов прямо на стартовом экране («Приключение», «Выживание», «Боулинг», «Я, Зомби»)

🚀 Спринт v1.6: Исправление «Я, Зомби», Навбар без наложений, Меню, Профили/Гость и Автономное Test API (Released)

  • Исправление бага режима «Я, Зомби»:
    • Устранение мгновенной ложной победы: синхронная расстановка обороны газона без асинхронных задержек setTimeout
    • Размещение 5 целевых подсолнухов в колонке 0 и защитной линии растений (Горохострелы, Повторители, Стеноорехи, Мины)
    • Начисление +150 солнца за каждый съеденный подсолнух со звуковым эффектом
    • Корректное условие поражения: солнце < 50 и отсутствие живых зомби на газоне при уцелевших подсолнухах
    • Отключение автоматических волн и газонокосилок в режиме зомби
    • Проход зомби до левого края газона считается захватом мозгов и не вызывает проигрыш
  • Полная переработка интерфейса (Устранение наложений элементов):
    • Создание независимой верхней панели .top-nav-bar на Flexbox над игровым холстом
    • Исключение абсолютного позиционирования кнопок поверх игрового Canvas, шкалы волн и слотов семян
    • Равномерное размещение элементов: слева «🏠 Меню» и плашка профиля; справа кнопки скорости «⚡ 1x/2x», музыки «🎵 Вкл/Выкл» и звука «🔊 Вкл/Выкл»
  • Главное меню и перезапуск:
    • Кнопка «🏠 Меню» доступна в любой момент игры: ставит игру на паузу и открывает окно выбора режима, уровня и магазина
    • Кнопки «В МЕНЮ» на экранах поражения и победы для мгновенного перезапуска или смены сценария
  • Система авторизации и профилей (Логин/Пароль + Гость):
    • Реализована система PvZAuth в js/systems/auth.js
    • Модальное окно авторизации игрока: вход / быстрая регистрация по логину и паролю
    • Режим «Гость»: полноценная сессионная игра без сохранения прогресса на диск
    • Изоляция данных пользователя: сохраненные монеты, открытые уровни и покупки магазина привязаны к аккаунту
    • Индикатор текущего статуса игрока в верхнем тулбаре
  • Автономное тестирование игры (Test API & CLI Runner):
    • Встроенный движковый API window.PvZTestAPI в js/utils/test_api.js (симуляция тиков, спавн сущностей, проверка боя, мины, косилок, победы в «Я, Зомби» и авторизации)
    • Автономный CLI скрипт scripts/test_game.py с 46 автоматическими проверками HTTP/2, статики, синтаксиса и бизнес-логики

🛠️ Спринт v1.7: Локация «Садовая Мастерская» — Крафт, 3 Уровня прокачки растений и Пассивные перки (Released)

  • Новая игровая локация «Сад-Мастерская» (Garden Workshop & Lab):
    • Отдельный интерактивный экран/модальное окно Сада с верстаком прокачки и деревом перков
    • Переход в Сад одной кнопкой из верхнего меню и стартового окна («🧪 Сад-Мастерская»)
  • Система ремесленных материалов (Drop & Craft):
    • Сбор ресурсов в процессе боя во всех режимах игры:
      • 🧪 Био-гумус (Bio-Humus) — выпадает из поверженных базовых зомби
      • ⚙️ Зомби-детали (Scrap Metal) — выпадает из бронированных врагов (ведра, конусы, футболисты)
      • ☀️ Солнечная эссенция (Sun Essence) — накапливается за активный сбор солнечных капель
      • 💎 Алмазные кристаллы (Crystals) — редкий дроп из волн флагов и элиты
    • Визуальные летающие дропы материалов с физикой падения, анимацией и подсветкой
    • Сбор материалов кликом мыши или автосбором через перк магнетизма
  • Система 3 уровней прокачки каждого растения (Tier 1 ➔ Tier 2 ➔ Tier 3):
    • Индивидуальный прогресс каждого растения за монеты + материалы:
      • Горохострел:
        • Ур. 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 уровней
    • Визуальное отображение уровней: звездочки (★★ / ★★★) над карточками в колоде и световые ауры на газоне
  • Пассивные Перки Садовника (Глобальное дерево технологий):
    • 5 пассивных улучшений профиля:
      • 🧲 «Магнитный газон» — увеличенный радиус автосбора монет, солнц и лута (до полного экрана на ур. 3)
      • ☀️ «Стартовый капитал» — старт каждого боя с +50/+100/+150 ☀️
      • ⏳ «Ускоренный полив» — сокращение кулдауна семян на -10%/-20%/-30%
      • 🛡️ «Упорные корни» — запас здоровья всех посадок +20%/+35%/+50%
      • 🍀 «Золотая рука» — шанс дропа золотых монет и редких материалов повышен на +30%/+60%/+100%
    • Сохранение уровней растений, ресурсов и купленных перков в профиле игрока (PvZAuth)

🪴 Спринт v1.8: Дзен-Сад (Пассивный доход и улитка Стинки) и Альманах (Released)

  • Дзен-Сад (Zen Garden):
    • Выращивание растений в горшках (лейка, удобрения, граммофон)
    • Пассивный доход монет каждые несколько часов (начисление монет за время отсутствия)
    • Улитка Стинки (Stinky the Snail) пылесосит монеты при подкармливании шоколадом
    • Автосохранение состояния сада и таймеров полива
  • Альманах пригородных растений и зомби (Suburban Almanac):
    • Энциклопедия с описанием, характеристиками (урон, прочность, скорость) и лором всех персонажей
    • Секретный Зомби-Йети (дроп 4 алмазов при уничтожении)
    • Интерактивный предпросмотр анимаций и звуков в модальном окне

🎲 Спринт v1.9: «Садовый Рогалик» и Достижения (Released)

  • Режим «Садовый Рогалик» (Garden Roguelike):
    • Драфт семян и выбор 1 из 3 мощных реликвий после каждой волны (молнии, яд, взрывы, вампиризм)
    • Случайная генерация волн и комбинаций противников
    • Нарастающая сложность этажей и уникальные модификаторы поля
  • Система Достижений (30+ ачивок с наградами):
    • Зал трофеев в профиле игрока (achievements.js)
    • Награды монетами и алмазами за разблокировку испытаний
    • Всплывающие уведомления (toasts) при выполнении достижений во время боя

👑 Спринт v2.0: Туман, Крыша, Босс Зомбосс и Лидерборды (Released)

  • Биомы Туман и Крыша:
    • Биом Туман: ночной бассейн с густой пеленой, Плантерн (Plantern) и Вздуватель (Blover)
    • Биом Крыша: наклонный скат, Цветочный горшок (Flower Pot), Капустопульта (Cabbage-pult) и Арбузопульта (Melon-pult)
  • Дерево Мудрости (Tree of Wisdom):
    • Покупка древа и подкормка удобрениями за монеты
    • Разблокировка скрытых клавиатурных чит-кодов (mustache, future, dance, pinata)
    • Интерактивный экран роста древа с подсказками Безумного Дэйва
  • Финальный босс Доктор Зомбосс:
    • Шагающий боевой робот Zombot с фазами атаки (ледяные шары, огненные шары, фургоны, десант)
    • Режим Boss Rush с отдельной шкалой здоровья и эпической музыкой
  • Глобальные таблицы лидеров (Leaderboards):
    • Сохранение рекордов режимов Выживание, Боулинг и Рогалик
    • Топ игроков с фильтрацией по режимам

🔐 Спринт v2.5-v2.6: SQLite Auth, Server Sync, Bug Tracker Sync, Lifetime Stats (Released)

  • Серверная база данных SQLite и модульная архитектура:
    • Разработка scripts/db.py (таблицы users, profiles, leaderboards, bugs, WAL-режим)
    • Криптографическое хеширование паролей: PBKDF2-HMAC-SHA256 (100,000 итераций) со случайной солью
    • CLI утилита администрирования пользователей scripts/manage_users.py
  • Надежная синхронизация профилей и защита от потери данных:
    • Двусторонняя синхронизация через REST эндпоинты /api/auth/save, /api/auth/sync, /api/auth/profile
    • Бесшовный перенос накопленного гостевого прогресса при первой регистрации аккаунта
    • Гарантированное сохранение при Game Over и во всех мини-играх
    • Разделение и изоляция состояния подсистем (Мастерская, Дзен-сад, Древо)
  • Интегрированный Bug Tracker сообщества:
    • Модальное окно обратной связи в клиенте (feedback.js)
    • Санитизация HTML-тегов, валидация полей и хранение отчетов в SQLite
    • Публичный JSON API /api/bugs
  • Пожизненная статистика игрока (Lifetime Stats):
    • Подсчет уничтоженных зомби, посаженных растений, собранных монет, побед и поражений
    • Виджет статистики в профиле игрока

🛠️ Спринт v2.7: Конфигуратор & Панель Администратора (Visual Level Editor, Audit Logs, Session Manager) (Released)

  • Панель Администратора (SPA Dashboard):
    • Веб-интерфейс в каталоге game/configurator/ с Cyberpunk Botanical темой
    • Защищенная авторизация по мастер-паролю администратора (/api/admin/auth) с выдачей bearer-токенов
    • Информационный дашборд статистики: число игроков, активных сессий, баг-репортов, объем БД
  • Визуальный редактор 25 уровней кампании:
    • Таблица базы данных campaign_levels со всеми 25 уровнями в 5 мирах
    • Интерактивный редактор волн зомби, модификаторов окружения, наград и сообщений Безумного Дэйва
    • Эндпоинты /api/admin/campaign/level/save и /api/admin/campaign/level/reset для сброса к заводским настройкам
    • Клиентская подсистема campaign.js динамически запрашивает уровни с сервера
  • Менеджер активных сессий игроков:
    • Мониторинг сессий в реальном времени (/api/admin/sessions): токен, пользователь, IP, User-Agent, девайс, время активности
    • Принудительное завершение любых сессий администратором (/api/admin/session/terminate)
  • Журнал аудита авторизаций (login_logs):
    • Фиксация всех попыток входа с статусами (успех, неверный пароль, rate-limit, неверный формат)
    • Мульти-фильтры по имени пользователя, IP-адресу и лимиту выборки (/api/admin/logs)
  • Динамический конфигуратор баланса игры (config.js):
    • Таблица game_config и эндпоинты /api/config, /api/admin/config
    • Тонкая настройка множителей экономики, прочности и скорости зомби, кулдаунов растений
    • Встроенные баланс-пресеты: Classic 2009, Hardcore, Turbo, Casual, Custom
  • Модерация игроков и управление безопасностью:
    • Редактирование монет, уровней, сброс паролей игроков
    • Блокировка/разблокировка пользователей с указанием причины бана
    • Смена пароля администратора через панель (/api/admin/password/change)

🎰 Спринт v2.8: Казино Безумного Дэйва и Лаборатория Зомби (Released)

  • Казино и Банк Безумного Дэйва (casino.js):
    • Слот-машина с барабанами, анимацией вращения и звуковыми эффектами
    • 7 уникальных символов с весами и коэффициентами выплат (Подсолнух, Горох, Орех, Вишня, Алмаз, Семёрка, Мозги)
    • Джекпоты с начислением редких кристаллов
    • Банковские депозиты под сложный процент (5% в час, до 48 часов)
    • Система срочных займов до 2500 монет с фиксированной комиссией 10%
    • Автоматическое сохранение баланса депозитов, займов и статистики спинов в профиле
  • Лаборатория Мутаций Зомби (zombielab.js):
    • Полноценная 3-тир система эволюции зомби для режима «Я, Зомби»
    • 5 классов зомби: Обычный (Вампиризм), Конус (Шипованный шлем), Шест (Двойной прыжок), Ведро (Крио-защита), Футболист (Таран мин)
    • Крафт мутаций за монеты, шестеренки, био-гумус и кристаллы
    • Интеграция мутаций в боевую логику режима «Я, Зомби»

💾 Спринт v2.9: Автоматический бэкап базы данных и интеграция DOOM (Released)

  • Автоматический бэкап и ротация SQLite базы данных (backup_db.py):
    • Неблокирующее создание горячих снимков через online sqlite3.Connection.backup()
    • Формат имен файлов: backups/pvz_YYYYMMDD_HHMMSS.db
    • Автоматическая ротация (pruning) с сохранением последних 7 резервных копий
    • CLI интерфейс с параметрами --db, --dir, --keep и программное API
    • Добавление каталога backups/ и *.db в .gitignore
  • Классический DOOM Web Edition (game/doom/):
    • Встроенная пасхалка и отдельный 3D WebGL ретро-шутер
    • Оригинальный статус-бар DOOM: шкалы AMMO, HEALTH, ARMOR, Arms matrix (1-7), анимированное лицо Doomguy
    • CRT-сканлайны, динамические эффекты урона и адаптивный рендеринг

🧪 Спринт v3.0: Комплексный тест-пайплайн (404 теста) и подготовка к релизу (Released)

  • Масштабирование автономного тест-раннера (test_game.py):
    • Расширение тестового покрытия со 215 до 404 автоматических тестов
    • Проверка HTTP/2, SSL-сертификатов, gzip-сжатия и безопасности заголовков
    • Валидация PWA манифеста, Service Worker и локального кэширования
    • Полный синтаксический анализ и проверка целостности JavaScript/CSS
    • Юнит- и интеграционные тесты боевого движка, экономики, волн, крафта и дзен-сада
    • Комплексное тестирование всех эндпоинтов REST API админки, конфигуратора, сессий и аудита
    • Тестирование модуля бэкапа базы данных и механик казино/лаборатории зомби
  • Финальный прогон и верификация релиза:
    • Результат выполнения: 404/404 PASSED (0 FAILED, 100% Pass Rate)
    • Полная готовность проекта к промышленной эксплуатации (Production Ready)