Полноценная игра "War Tanks II" - тактическая танковая игра с продвинутым ИИ, системой тумана войны и ретро-стилистикой.
- Управление: WASD/стрелки (движение), мышь (прицеливание), Пробел (стрельба)
- Физика: Реалистичная инерция движения, замедленный поворот корпуса и башни.
- Прицеливание: Динамический прицел-перекрестие. Чем быстрее крутится башня, тем больше разлет и ниже точность.
- 3 типа танков: Tiger MK-II, Phantom X, Crusher 88 (разные характеристики)
- 3 карты: Desert Strike, Frozen Front, Urban Siege
- Двухуровневая видимость: внутренний радиус (240px) и внешний (336px)
- Плавный переход между радиусами через сетку 16×16px
- Автоматическое восстановление тумана через 3 секунды
- Умная система: противник убирает туман только когда виден игроку
- Режим "атака": преследование и стрельба по игроку
- Режим "поиск": патрулирование и исследование последней известной позиции
- Реакция на потерю цели: переход в режим поиска с задержкой
- Адаптивное поведение: разные скорости поворота и движения
- Плавное следование за игроком с мертвой зоной
- Ограничения движения по границам карты
- Автоматическое масштабирование карты (187.5%)
- Поддержка перетаскивания фона для навигации
- Пиксельный шрифт: Press Start 2P
- Адаптивный дизайн с градиентами и эффектами
- Анимации: перезарядка, здоровье, движение танков
- Визуальные эффекты: тени, свечение, переходы
- Фоновая музыка: зацикленная тема
- Звуки интерфейса: наведение и выбор в меню
- Игровые звуки: выстрелы танков
- Автоматическое воспроизведение после первого взаимодействия
- Чистый HTML/CSS/JS без внешних зависимостей
- Canvas для тумана войны с оптимизированным рендерингом
- Система событий с обработкой клавиатуры и мыши
- Модульная структура кода с разделением логики
- Оптимизированный рендеринг тумана через Float32Array
- Эффективная система коллизий с проверкой расстояний
- Плавная анимация через requestAnimationFrame
- Умное обновление только измененных областей
- localStorage для настроек танков
- SessionStorage для временных данных
- Автоматическое восстановление настроек при загрузке
game_02/
├── index.html # Ввод имени игрока
├── menu.html # Главное меню
├── select.html # Выбор танка и карты
├── play.html # Игровой экран
├── app.js # Основная игровая логика (1749 строк)
├── menu.css # Стили интерфейса (780 строк)
├── audio/ # Звуковые файлы
│ ├── background-themes.mp3
│ ├── menu-hover.mp3
│ ├── menu-hover_2.mp3
│ ├── menu-select.mp3
│ └── tank-shot.wav
├── video/ # Видеофайлы (кат-сцены/брీఫинги)
│ ├── brifing_1_002.mp4
│ └── mission_complet_02.mp4
└── images/ # Игровые ресурсы
├── map-01.png # Карта Desert Strike
└── README.txt
- Клонируйте репозиторий
- Откройте директорию в терминале
- Запустите локальный сервер (например, через расширение "Live Server" или
npx serve .) - Откройте
index.htmlв браузере - Игра готова к запуску!
Important
Из-за использования ES6 модулей игра не будет работать при прямом открытии файла через file://. Обязательно используйте локальный веб-сервер.
Проект полностью готов для развертывания на GitHub Pages:
- Все ресурсы используют относительные пути
- Нет внешних зависимостей
- Оптимизирован для статического хостинга
- Tiger MK-II: Броня 5, Скорость 3, Урон 4, Дальность 2
- Phantom X: Броня 3, Скорость 5, Урон 3, Дальность 4
- Crusher 88: Броня 6, Скорость 2, Урон 5, Дальность 3
- Desert Strike: Открытая пустыня, минимальное укрытие
- Frozen Front: Ледяные переправы, среднее укрытие
- Urban Siege: Городские руины, плотное укрытие
- IDE: Cursor
- AI-помощник: GPT модели
- Платформа: GitHub Pages
- Языки: HTML5, CSS3, JavaScript ES6+
- API: Canvas 2D, Web Audio, LocalStorage
Теперь в War Tanks II можно сражаться с друзьями онлайн!
- Лобби: Список активных игр и создание своих комнат.
- Доступ: Вход по паролю или прямой ссылке.
- Real-time: Синхронизация на базе Supabase.
- PvP: Сражения 1 на 1 до первой победы.
- Динамический прицел: Перекрестие расширяется при вращении башни и сходится за 0.5с при остановке.
- Точность: Разлет прицела напрямую влияет на разброс снарядов.
- Реализм: Скорость движения уменьшена в 2.5 раза, скорость поворота — в 3 раза.
- Баланс: Настроено время перезарядки (в 2 раза медленнее).
- MK-Style HUD: Полоски здоровья и иконки игроков в верхних углах экрана.
- Синхронизация имен: В мультиплеере отображаются реальные имена обоих игроков.
- Удобство: Кнопка копирования ссылки на комнату для быстрого приглашения.
- Чистка: Автоматическое удаление комнат из списка после завершения игры или ухода хоста.
- Центрирование: HUD теперь выровнен по границам игрового поля (1024px).
- Чистка: Удален лишний текст "рра" из игрового экрана.
- HUD Перезарядки: Под полоской здоровья каждого игрока в HUD добавлена маленькая шкала перезарядки орудия.
- Улучшенная баллистика: Разброс в несведенном состоянии до 30 градусов (±15 градусов).🛡️
- Скорая башня: Скорость поворота башни увеличена до 45 град/с.⚡
- Унификация: Название игры исправлено на "WAR TANKS II" на всех экранах.
- Названия танков: Исправлены расхождения в названиях ("Phantom X", "Tiger MK-II", "Crusher 88").
- Рекорды: Реализован раздел "TOP COMMANDERS" с таблицей лидеров.
- Об авторах: Добавлен раздел "MISSION CONTROL" с информацией о разработчиках и технологиях.
- Навигация: Реализована бесшовная навигация между разделами меню с использованием хэшей URL.
- Beacon API: Использование
fetchсkeepaliveдля гарантированного закрытия комнаты при закрытии вкладки или браузера. - Умная очистка: Система различает переход в бой (комната сохраняется) и выход из игры (комната закрывается).
- Актуальность: Список игр в лобби теперь самоочищается от "мертвых" сессий.
- Удаление комнат: Добавлена кнопка "×" в лобби для ручного закрытия комнат.
- Безопасность: Для удаления запароленных комнат требуется ввести корректный пароль.
- Подтверждение: Для публичных комнат добавлено окно подтверждения действия.
- Разделение обзора: Каждый игрок теперь видит только свою область тумана. Вражеский танк не раскрывает туман для игрока.
- Скрытие данных: Если враг находится в тумане (вне зоны видимости), его полоска здоровья в HUD становится полупрозрачной, а значение заменяется на "???".
- Стелс-механика: Игроки могут скрываться за пределами радиуса видимости друг друга, используя туман войны для тактических маневров.
- Сохранение имени: Исправлена критическая ошибка, из-за которой имя игрока не сохранялось при входе в игру.
- Capture-фаза: Использован
addEventListenerс флагомcapture: trueдля гарантированного выполнения до перехвата событий вapp.js. - Надежность: Добавлен дополнительный обработчик на кнопку для двойной защиты.
- Отладка: Добавлено логирование в консоль для проверки сохранения имени.
- Throttling: Снижена частота отправки обновлений с 60 FPS до 10 раз/сек (каждые 100мс).
- Delta Compression: Отправка только изменившихся полей вместо полного состояния танка.
- Приоритизация: Критичные события (выстрелы) отправляются немедленно, позиция - по таймеру.
- Интерполяция: Плавное движение вражеского танка между редкими сетевыми обновлениями.
- Результат: Снижение трафика Realtime Messages в 12-20 раз (с ~1200 до ~60-100 сообщений/сек).
- Детерминированные ID: Заменена случайная генерация ID танков на детерминированную систему (хост=
player1, гость=player2). - Стабильные роли: Гарантировано, что роли игроков не меняются местами при старте игры.
- Правильная синхронизация: Исправлена обработка сетевых сообщений - каждый клиент теперь корректно идентифицирует противника.
- Правильные цвета: Исправлена логика назначения цветов - каждый игрок видит себя зеленым танком, а противника коричневым (независимо от роли хост/гость).
- Правильный HUD: Исправлена логика отображения HUD - каждый игрок видит себя слева (P1), а противника справа (P2), независимо от роли.
- Совместимость: Добавлена поддержка детерминированных ID для синглплеера (игрок=
player1, AI=ai_enemy). - Результат: Устранена критическая ошибка, при которой игроки менялись местами, цвета танков и HUD не соответствовали управлению, и второй игрок превращался в AI.
- WebRTC P2P: Внедрена система прямого соединения между игроками (Browser-to-Browser).
- Безлимитный геймплей: Игровые сообщения (позиция, выстрелы) передаются напрямую, минуя сервер и лимиты Supabase.
- Минимальная задержка: Пинг 10-50мс (в зависимости от удаленности игроков) против 100-300мс через сервер.
- Гибридная система: Supabase используется только для "сигнализации" (установки соединения) и списка комнат.
- Fallback: Автоматический переход на Supabase Broadcast, если P2P соединение не удалось установить (например, из-за корпоративных firewall).
- Настройка: В меню игры теперь можно выбрать предпочтительный режим сети.
- Создайте проект на Supabase.
- Выполните SQL-запрос для создания таблиц:
-- Таблица комнат
create table rooms (
id uuid default gen_random_uuid() primary key,
created_at timestamp with time zone default timezone('utc'::text, now()) not null,
name text not null,
password text,
has_password boolean default false,
status text default 'active',
host_name text,
player2_name text
);
-- Таблица сигнализации для WebRTC
create table signaling (
id uuid default gen_random_uuid() primary key,
created_at timestamp with time zone default timezone('utc'::text, now()) not null,
room_id uuid references rooms(id) on delete cascade,
type text not null,
data jsonb not null
);
-- Индексы и триггеры очистки (см. migration_webrtc.sql)
-- Включение Realtime
alter publication supabase_realtime add table rooms;
alter publication supabase_realtime add table signaling;- Включите Broadcast и Presence в настройках Realtime.
- Укажите свои
SUPABASE_URLиSUPABASE_KEYв файлеjs/supabase-config.js.
Проект полностью готов для деплоя на Vercel как статический сайт.
✅ Версия 1.0 - ЗАВЕРШЕНА
-
Полноценная однопользовательская игра
-
Все основные системы реализованы
-
Готова к развертыванию
-
Онлайн сервер для управления игровыми сессиями
Проект полностью готов к использованию и развертыванию!