Язык / Language: Русский · English
CYBER RACE: CAR WARS — браузерная 3D-гонка на Three.js/WebGL, где обычная гонка объединена с автомобильным боем.
Игрок соревнуется с тремя AI-соперниками на трассе из 15 кругов, использует пулемёт, самонаводящиеся ракеты, нитро и защитный импульс, подбирает бонусы и старается одновременно выиграть гонку и пережить атаки соперников.
Для тех, кто хочет совместить гонку с аркадным автомобильным боем: обгоняйте AI-соперников, подбирайте бонусы и защищайтесь от ракет.
- Скачайте проект ZIP и распакуйте всю папку.
- Откройте
index.htmlв настольном браузере; рекомендуемый вариант с локальным сервером описан в разделе запуска. - Начните гонку. Управление включает движение, оружие, нитро и возврат машины на трассу.
Нужны WebGL, JavaScript, клавиатура, мышь и интернет для загрузки Three.js с CDN. Python требуется только для приведённого варианта локального сервера. Если игра тормозит, выберите режим графики «Производительность».
Для разработчиков: архитектура, проверки и CI.
- 3D-графика на Three.js и WebGL.
- Гонка на 15 кругов.
- Игрок + 3 AI-соперника.
- Пулемёт.
- Самонаводящиеся ракеты с захватом цели.
- Нитро-ускорение.
- Защитный импульс, перехватывающий вражеские снаряды и замедляющий соперников.
- Дрифт и очки за занос.
- Боевые столкновения и система повреждений.
- Уничтожение и восстановление машин.
- Регенерация здоровья.
- Энергетический щит.
- ЭМИ-эффект.
- Бонусы на трассе:
- ракеты;
- патроны;
- нитро;
- ускорение;
- ЭМИ;
- здоровье;
- щит.
- Мини-карта.
- Индикатор позиции в гонке.
- Предупреждение о ракете.
- Индикатор захвата цели.
- Определение неправильного направления движения.
- Комбо за уничтожение соперников.
- Рекорды лучшего круга, общего времени и очков.
- Три уровня сложности.
- Автоматический и ручной режим качества графики.
- Автоматическое снижение качества при низком FPS.
- Полноэкранный режим.
- Звук через Web Audio API.
- Пауза при потере фокуса или переключении вкладки.
- Восстановление после потери WebGL-контекста.
| Действие | Управление |
|---|---|
| Управление машиной | WASD / стрелки |
| Пулемёт | ЛКМ |
| Ракета | ПКМ |
| Ручник / дрифт | Shift |
| Нитро | Space |
| Защитный импульс | Q |
| Рестарт | R |
| Полный экран | F |
| Вернуть машину на трассу | T |
| Включить / выключить звук | M |
| Пауза / меню | Esc |
Основной entrypoint — index.html, а JavaScript runtime разделён по src/.
Можно открыть проект напрямую в современном браузере, однако для наиболее предсказуемой работы рекомендуется запуск через локальный HTTP-сервер:
python -m http.server 8000После этого откройте:
http://localhost:8000
git clone https://github.com/zeter1/CYBER-RACE.git
cd CYBER-RACE
python -m http.server 8000- современный настольный браузер;
- WebGL;
- JavaScript;
- клавиатура и мышь;
- интернет-соединение для загрузки Three.js с CDN.
Используется Three.js 0.160.0. Игра сначала пытается загрузить библиотеку с jsDelivr, а при ошибке — с unpkg.
В главном меню и меню паузы доступны:
- Сложность
- Новичок
- Обычная
- Хардкор
- Графика
- Автоматически
- Высокая
- Производительность
- Звук
- Тряска камеры
Настройки сохраняются в localStorage.
В браузере сохраняются:
- лучший круг;
- максимальное количество очков;
- лучшее полное время гонки на 15 кругов.
Данные хранятся в localStorage и привязаны к браузеру / origin.
Соперники:
- двигаются по трассе независимо;
- меняют полосу;
- избегают плотного сближения друг с другом;
- используют нитро;
- собирают бонусы;
- стреляют ракетами и пулемётом;
- получают щиты и другие эффекты;
- используют динамическое rubber-banding, чтобы гонка оставалась конкурентной;
- меняют точность, урон, скорость и частоту атак в зависимости от выбранной сложности.
Игра имеет два режима качества:
- повышенный pixel ratio;
- тени;
- больше частиц.
- уменьшенный pixel ratio;
- отключённые тени;
- уменьшенное количество частиц;
- отключённый
backdrop-filterдля части HUD.
В режиме Автоматически игра отслеживает FPS и переключает качество в зависимости от производительности.
Deep Gameplay Decomposition разделяет browser runtime по реальным subsystem contracts:
index.html
├── src/core/
│ └── seeded-rng.js
├── src/game/
│ ├── config.js
│ ├── race-state.js
│ ├── track-environment.js
│ └── runtime.js
├── src/ai/
│ ├── difficulty.js
│ └── opponent-brain.js
├── src/weapons/
│ ├── geometry.js
│ └── ballistics.js
├── src/audio/audio-system.js
├── src/ui/
│ ├── elements.js
│ ├── hud-model.js
│ └── minimap.js
├── tests/
│ ├── contracts.mjs
│ ├── scenarios.mjs
│ └── fixtures/cyber-replay.json
├── scripts/validate-structure.mjs
└── docs/ARCHITECTURE.md
Pure gameplay math имеет Node-compatible contract tests. В 2.2 opponent frame/attack и homing projectile работают как dependency-injected simulation contracts, а seeded replay fixtures проверяют целые последовательности кадров. src/game/runtime.js остаётся orchestration/rendering boundary. Подробности: docs/ARCHITECTURE.md.
Если игра не запускается:
- Откройте DevTools браузера через
F12. - Проверьте вкладку Console.
- Убедитесь, что браузер поддерживает WebGL.
- Проверьте доступ к CDN Three.js.
- Попробуйте запуск через локальный HTTP-сервер.
- Если графика стала нестабильной, переключите качество в режим Производительность.
Если оба CDN Three.js недоступны, игра показывает сообщение об ошибке прямо в стартовом меню.
- Текущая версия ориентирована прежде всего на ПК с клавиатурой и мышью.
- Three.js загружается через внешние CDN, поэтому полностью автономный офлайн-запуск требует локальной копии библиотеки.
- Rendering object lifecycle, input, effects и damage side effects остаются в
src/game/runtime.js; opponent frame/attack и homing kinematics уже работают через чистые dependency-injected simulation contracts. - Полного browser end-to-end набора пока нет; интерактивный gameplay требует отдельной runtime-проверки.
- CI проверяет структуру HTML, синтаксис встроенного JavaScript и статическую раздачу проекта, но не заменяет реальную WebGL/gameplay-проверку.
Workflow .github/workflows/validate.yml запускается на изменениях index.html, src/**, scripts/** и workflow. Он проверяет:
- синтаксис всех JavaScript-файлов;
- архитектурную структуру и порядок подключения модулей;
- contract tests для track lookup, AI, collision/ballistics, HUD и lap state transitions;
- deterministic replay scenarios для opponent frame/attack и homing rocket;
- отсутствие возврата вынесенной simulation logic в runtime;
- headless Chrome/WebGL boot через локальный HTTP-сервер до маркера
data-cyber-boot="ready"; - diff hygiene через
git diff --check.
Проверка не заявляет, что полный WebGL/gameplay протестирован: GPU performance, Web Audio и интерактивное управление остаются отдельным runtime-уровнем.
- Открыть стартовое меню.
- Проверить переключение сложности и графики.
- Запустить гонку.
- Проверить управление WASD / стрелками.
- Проверить пулемёт и ракеты.
- Проверить нитро и защитный импульс.
- Проверить подбор бонусов.
- Проверить паузу и возврат в игру.
- Проверить полноэкранный режим.
- Проверить завершение гонки и сохранение рекордов.
Политика ответственного сообщения об уязвимостях: SECURITY.md.
Для воспроизводимого бага используйте Bug report и укажите браузер, GPU/WebGL-среду, режим качества, приблизительный FPS, этап гонки и точные шаги. Не публикуйте личные данные из browser profile или другие секреты.
CYBER RACE: CAR WARS — экспериментальная браузерная боевая гонка с упором на скорость, оружие, AI-соперников и динамические визуальные эффекты.
- zeter11@gmail.com
- https://t.me/zeter1
- https://www.linkedin.com/in/zeter/
- https://www.facebook.com/zeter1
- https://vk.ru/zeter1
- https://www.instagram.com/zeter1992/
- https://tenchat.ru/zeter
- https://x.com/zeter1
- https://www.threads.com/@zeter1992
- https://ok.ru/zeter1
- https://t.me/zeterchat — Telegram-группа: обо мне, проекты и чат