# 🌻 Plants vs. Zombies — Web Edition (v3.0) Полноценная браузерная реализация культовой игры **Plants vs. Zombies** на чистом HTML5 Canvas и Web Audio API (0 внешних JS-фреймворков и библиотек) с серверной частью на Python, базой данных SQLite, визуальным конфигуратором уровней, автоматическим бэкапом и тестовым покрытием **425/425 тестов (100% PASS)**. --- ## 🎮 Особенности и игровые механики ### 🌿 5 Биомов газона - ☀️ **День (Day)** — классический газон с падающим с неба солнцем (уровни 1-1 .. 1-5). - 🌙 **Ночь (Night)** — темнота, отсутствие небесного солнца, грибная экономика, могилы и растение Могилоед (уровни 2-1 .. 2-5). - 🏊 **Бассейн (Pool)** — 6 дорожек газона, две центральные линии с водой, кувшинки и очистители бассейна (уровни 3-1 .. 3-5). - 🌫️ **Туман (Fog)** — ночной бассейн с густым туманом, скрывающим правую половину поля, плантернами и воздуходувами (уровни 4-1 .. 4-5). - 🏠 **Крыша (Roof)** — наклонный черепичный скат, цветочные горшки, капусто- и арбузопульты (уровни 5-1 .. 5-5). ### ⚔️ Режимы игры - 🌿 **Кампания (Приключение):** 25 сюжетных уровней с прогрессией, наградами и кат-сценами с репликами Безумного Дэйва. - ⚔️ **Выживание (Survival):** бесконечные волны зомби с флагами и нарастающей интенсивностью. - 🎳 **Боулинг (Wall-nut Bowling):** конвейерная подача катящихся орехов и взрывных вишен с рикошетом по диагоналям. - 🧠 **Я, Зомби (I, Zombie):** игра за сторону зомби против оборонительных линий растений с добычей мозгов. - 🎲 **Садовый Рогалик (Garden Roguelike):** драфт случайных семян и реликвий после каждой волны (молнии, яд, вампиризм). - 👑 **Битва с Боссом & Boss Rush:** доктор Эдгар Зомбосс на гигантском шагающем боевом роботе Зомботе. ### 🎰 Казино и Банк Безумного Дэйва ([`casino.js`](file:///home/kopri/agy/game/js/systems/casino.js)) - **Слот-машина:** 7 уникальных барабанных символов (🌻 Подсолнух x4, 🟢 Горох x8, 🌰 Орех x12, 🍒 Вишня x25, 💎 Алмаз x60 + кристаллы, 7️⃣ Семёрка x200 + 5 кристаллов, 🧠 Зомби-мозги). - **Банковские депозиты:** надежное хранение монет с начислением **5% в час** сложного процента (до 48 часов пассивного дохода). - **Срочные займы:** кредитная линия Безумного Дэйва до 2500 монет с фиксированной 10% комиссией для быстрого старта. ### 🧪 Лаборатория Мутаций Зомби ([`zombielab.js`](file:///home/kopri/agy/game/js/systems/zombielab.js)) Глубокая 3-уровневая система мутаций для режима «Я, Зомби» с расходом монет, био-гумуса, шестеренок и кристаллов: - **Обычный зомби:** Базовый ходок ➔ Спринтер (+35% скорости) ➔ Зомби-Вампир (+45 HP за укус). - **Зомби с конусом:** Дорожный конус ➔ Титановый конус (800 HP) ➔ Шипованный шлем (отражает 25% урона стрелкам). - **Зомби с шестом:** Легкоатлет ➔ Двойной шест (перепрыгивает 2 растения подряд) ➔ Турбо-спринтер (+50% скорости после приземления). - **Зомби с ведром:** Стальное ведро ➔ Тяжелый сплав (1800 HP) ➔ Крио-изоляция (2300 HP + иммунитет к заморозке). - **Зомби-футболист:** Квотербек ➔ Тяжелый лайнмен (поглощение 20% урона) ➔ Безумный таран (2800 HP, сминает картофельную мину без взрыва). ### 🛠️ Панель Администратора и Конфигуратор ([`game/configurator/`](file:///home/kopri/agy/game/configurator/index.html)) Полнофункциональный Cyberpunk Botanical веб-интерфейс администратора: - **Визуальный редактор 25 уровней кампании:** редактирование волн зомби, наград, биомов, модификаторов и диалогов Безумного Дэйва с мгновенным сохранением в базу данных. - **Динамический баланс игры в реальном времени ([`config.js`](file:///home/kopri/agy/game/js/systems/config.js)):** множители солнца, монет, здоровья и урона зомби/растений, готовые пресеты (*Classic 2009*, *Hardcore*, *Turbo*, *Casual*, *Custom*). - **Управление игроками:** просмотр, создание, редактирование монет, уровней и ресурсов, сброс паролей, блокировка/разблокировка с указанием причины. - **Менеджер активных сессий:** онлайн-мониторинг токенов игроков, IP-адресов, браузеров/устройств и принудительный отзыв сессий. - **Журнал аудита входов (`login_logs`):** детализированная история авторизаций, статусы успехов и сработок rate-limit защиты. - **Управление безопасностью:** смена мастер-пароля администратора с PBKDF2-SHA256 хешированием. ### 💾 Автоматический бэкап и ротация базы данных ([`backup_db.py`](file:///home/kopri/agy/scripts/backup_db.py)) - Горячее неблокирующее копирование через online SQLite Backup API. - Именование снимков по стандарту: `backups/pvz_YYYYMMDD_HHMMSS.db`. - Автоматическая ротация (pruning) устаревших копий с сохранением последних 7 снимков. ### 🕹️ Классический DOOM Web Edition ([`game/doom/`](file:///home/kopri/agy/game/doom/index.html)) - Встроенная пасхалка и отдельный полноценный 3D WebGL ретро-шутер. - Аутентичный HUD оригинального DOOM: шкалы AMMO, HEALTH, ARMOR, матрица оружия (1-7) и анимированное лицо Doomguy. - CRT-сканлайны, динамические вспышки урона и олдскульная эстетика. ### 🪴 Пассивная прогрессия и кастомизация - **Сад-Мастерская:** 3 уровня прокачки каждого растения и 5 пассивных перков садовника (магнетизм, стартовое солнце и др.). - **Дзен-Сад:** полив ростков, сбор пассивного дохода и улитка Стинки под шоколадом. - **Пригородный Альманах:** иллюстрированная энциклопедия всех растений и зомби, включая скрытого Зомби-Йети. - **Система достижений:** 30+ уникальных трофеев и наград. - **Древо Мудрости:** выращивание древа и активация клавиатурных чит-кодов (`mustache`, `future`, `dance`, `pinata`). - **Темы оформления:** Классическая, Киберпанк, Ретро 8-bit, Зима. --- ## 📁 Структура проекта ```text /home/kopri/agy/ ├── data/ │ └── pvz.db # Основная база данных SQLite (WAL-режим) ├── backups/ # Каталог резервных копий базы данных (*.db) ├── game/ # Frontend игры (HTML5 Canvas / SPA / PWA) │ ├── index.html # Главный экран игры и модальные окна │ ├── manifest.json # PWA манифест │ ├── sw.js # Offline Service Worker кэш │ ├── configurator/ # Панель администратора и редактор уровней │ │ ├── index.html # UI панели конфигуратора │ │ ├── css/style.css # Стили Cyberpunk Botanical │ │ └── js/configurator.js # Клиентское SPA конфигуратора │ ├── doom/ # Классический DOOM Web Edition │ │ ├── index.html # 3D WebGL канвас и аутентичный HUD │ │ ├── css/style.css # Ретро CRT-стили │ │ └── js/ # Движок DOOM и рендерер │ ├── css/style.css # Стили основной игры │ └── js/ │ ├── main.js # Точка инициализации │ ├── game.js # Игровой цикл и рендерер (GameEngine) │ ├── entities/ # Сущности (Plant, Zombie, Projectile, LawnCleaner) │ ├── systems/ # Игровые подсистемы: │ │ ├── auth.js # Авторизация (PvZAuth), сессии и синхронизация │ │ ├── config.js # Динамический баланс и пресеты (PvZConfig) │ │ ├── campaign.js # Движок кампании (25 уровней) и диалоги Дэйва │ │ ├── casino.js # Казино и Банк Безумного Дэйва (слоты, вклады) │ │ ├── zombielab.js # Лаборатория мутаций зомби (3 тира) │ │ ├── combat.js # Физика снарядов, коллизии и урон │ │ ├── economy.js # Экономика солнца/монет и магазин │ │ ├── workshop.js # Сад-мастерская, крафт и перки │ │ ├── zengarden.js # Дзен-сад и улитка Стинки │ │ ├── boss.js # Доктор Зомбосс и робот Zombot │ │ ├── roguelike.js # Садовый Рогалик и драфт реликвий │ │ ├── tree.js # Древо Мудрости и чит-коды │ │ ├── achievements.js # 30+ игровых достижений │ │ ├── leaderboard.js # Глобальные таблицы лидеров │ │ └── feedback.js # Клиент отправки баг-репортов │ └── utils/ # Web Audio API, генератор звуков, Test API ├── scripts/ # Backend и серверные утилиты │ ├── feedback_server.py # HTTP REST API сервер (Auth, Config, Admin, Leaderboard) │ ├── db.py # Менеджер SQLite (схемы, миграции, PBKDF2) │ ├── backup_db.py # Автоматический бэкап и ротация SQLite базы │ ├── manage_users.py # CLI управление игроками │ └── test_game.py # Автономный тест-раннер (425 тестов) ├── nginx/ # Конфигурации Nginx с SSL и Reverse-Proxy └── docker-compose.yml # Docker-compose стек ``` --- ## 🚀 Быстрый старт ### Требования - Python 3.10+ - Современный веб-браузер с поддержкой HTML5 Canvas и Web Audio API - Nginx / Docker (для продакшн развертывания с SSL) ### 1. Запуск серверного бэкенда ```bash python3 scripts/feedback_server.py ``` Сервер запустится на порту `8001`, инициализирует базу данных `data/pvz.db`, применит миграции и дефолтные пресеты баланса. ### 2. Запуск резервного копирования базы данных ```bash # Создание моментального online-бэкапа с сохранением последних 7 копий: python3 scripts/backup_db.py # Кастомный путь и количество сохраняемых снимков: python3 scripts/backup_db.py --keep 14 --dir /home/kopri/agy/backups ``` ### 3. Запуск комплексного тестового набора ```bash python3 scripts/test_game.py ``` Запускает полный цикл верификации из **425 тестов**, включая проверку HTTP/2, статики, движка Canvas, REST эндпоинтов, админ-панели и механик боя: ```text ================================================== TEST SUMMARY: 425/425 PASSED (0 FAILED) ================================================== ``` --- ## 🛡️ Безопасность и администрирование - **Пароли:** Хеширование через `PBKDF2-HMAC-SHA256` (100,000 итераций) со случайной криптографической солью. - **Защита от перебора:** Встроенный Rate-Limiting по IP-адресам на эндпоинтах авторизации с логгированием инцидентов в `login_logs`. - **Сессии:** Токены `secrets.token_hex(32)` со сроком жизни, привязкой к устройству и возможностью принудительного отзыва администратором. - **Вход в конфигуратор:** Доступен по адресу `https:///configurator/` по мастер-паролю администратора. --- ## 📜 Лицензия Open Source. Создано в рамках проекта Qpid Web Gaming.