🌻 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)
- Слот-машина: 7 уникальных барабанных символов (🌻 Подсолнух x4, 🟢 Горох x8, 🌰 Орех x12, 🍒 Вишня x25, 💎 Алмаз x60 + кристаллы, 7️⃣ Семёрка x200 + 5 кристаллов, 🧠 Зомби-мозги).
- Банковские депозиты: надежное хранение монет с начислением 5% в час сложного процента (до 48 часов пассивного дохода).
- Срочные займы: кредитная линия Безумного Дэйва до 2500 монет с фиксированной 10% комиссией для быстрого старта.
🧪 Лаборатория Мутаций Зомби (zombielab.js)
Глубокая 3-уровневая система мутаций для режима «Я, Зомби» с расходом монет, био-гумуса, шестеренок и кристаллов:
- Обычный зомби: Базовый ходок ➔ Спринтер (+35% скорости) ➔ Зомби-Вампир (+45 HP за укус).
- Зомби с конусом: Дорожный конус ➔ Титановый конус (800 HP) ➔ Шипованный шлем (отражает 25% урона стрелкам).
- Зомби с шестом: Легкоатлет ➔ Двойной шест (перепрыгивает 2 растения подряд) ➔ Турбо-спринтер (+50% скорости после приземления).
- Зомби с ведром: Стальное ведро ➔ Тяжелый сплав (1800 HP) ➔ Крио-изоляция (2300 HP + иммунитет к заморозке).
- Зомби-футболист: Квотербек ➔ Тяжелый лайнмен (поглощение 20% урона) ➔ Безумный таран (2800 HP, сминает картофельную мину без взрыва).
🛠️ Панель Администратора и Конфигуратор (game/configurator/)
Полнофункциональный Cyberpunk Botanical веб-интерфейс администратора:
- Визуальный редактор 25 уровней кампании: редактирование волн зомби, наград, биомов, модификаторов и диалогов Безумного Дэйва с мгновенным сохранением в базу данных.
- Динамический баланс игры в реальном времени (
config.js): множители солнца, монет, здоровья и урона зомби/растений, готовые пресеты (Classic 2009, Hardcore, Turbo, Casual, Custom). - Управление игроками: просмотр, создание, редактирование монет, уровней и ресурсов, сброс паролей, блокировка/разблокировка с указанием причины.
- Менеджер активных сессий: онлайн-мониторинг токенов игроков, IP-адресов, браузеров/устройств и принудительный отзыв сессий.
- Журнал аудита входов (
login_logs): детализированная история авторизаций, статусы успехов и сработок rate-limit защиты. - Управление безопасностью: смена мастер-пароля администратора с PBKDF2-SHA256 хешированием.
💾 Автоматический бэкап и ротация базы данных (backup_db.py)
- Горячее неблокирующее копирование через online SQLite Backup API.
- Именование снимков по стандарту:
backups/pvz_YYYYMMDD_HHMMSS.db. - Автоматическая ротация (pruning) устаревших копий с сохранением последних 7 снимков.
🕹️ Классический DOOM Web Edition (game/doom/)
- Встроенная пасхалка и отдельный полноценный 3D WebGL ретро-шутер.
- Аутентичный HUD оригинального DOOM: шкалы AMMO, HEALTH, ARMOR, матрица оружия (1-7) и анимированное лицо Doomguy.
- CRT-сканлайны, динамические вспышки урона и олдскульная эстетика.
🪴 Пассивная прогрессия и кастомизация
- Сад-Мастерская: 3 уровня прокачки каждого растения и 5 пассивных перков садовника (магнетизм, стартовое солнце и др.).
- Дзен-Сад: полив ростков, сбор пассивного дохода и улитка Стинки под шоколадом.
- Пригородный Альманах: иллюстрированная энциклопедия всех растений и зомби, включая скрытого Зомби-Йети.
- Система достижений: 30+ уникальных трофеев и наград.
- Древо Мудрости: выращивание древа и активация клавиатурных чит-кодов (
mustache,future,dance,pinata). - Темы оформления: Классическая, Киберпанк, Ретро 8-bit, Зима.
📁 Структура проекта
/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. Запуск серверного бэкенда
python3 scripts/feedback_server.py
Сервер запустится на порту 8001, инициализирует базу данных data/pvz.db, применит миграции и дефолтные пресеты баланса.
2. Запуск резервного копирования базы данных
# Создание моментального online-бэкапа с сохранением последних 7 копий:
python3 scripts/backup_db.py
# Кастомный путь и количество сохраняемых снимков:
python3 scripts/backup_db.py --keep 14 --dir /home/kopri/agy/backups
3. Запуск комплексного тестового набора
python3 scripts/test_game.py
Запускает полный цикл верификации из 425 тестов, включая проверку HTTP/2, статики, движка Canvas, REST эндпоинтов, админ-панели и механик боя:
==================================================
TEST SUMMARY: 425/425 PASSED (0 FAILED)
==================================================
🛡️ Безопасность и администрирование
- Пароли: Хеширование через
PBKDF2-HMAC-SHA256(100,000 итераций) со случайной криптографической солью. - Защита от перебора: Встроенный Rate-Limiting по IP-адресам на эндпоинтах авторизации с логгированием инцидентов в
login_logs. - Сессии: Токены
secrets.token_hex(32)со сроком жизни, привязкой к устройству и возможностью принудительного отзыва администратором. - Вход в конфигуратор: Доступен по адресу
https://<domain>/configurator/по мастер-паролю администратора.
📜 Лицензия
Open Source. Создано в рамках проекта Qpid Web Gaming.