Skip to content

About

Браузерная 3D-гонка на Three.js с вооружёнными автомобилями, ракетами, пулемётом, нитро, AI-соперниками и системой рекордов.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

11 Commits

Folders and files

Repository files navigation

Язык / Language: Русский · English

🏎️ CYBER RACE: CAR WARS

Validate

CYBER RACE: CAR WARS — браузерная 3D-гонка на Three.js/WebGL, где обычная гонка объединена с автомобильным боем.

Игрок соревнуется с тремя AI-соперниками на трассе из 15 кругов, использует пулемёт, самонаводящиеся ракеты, нитро и защитный импульс, подбирает бонусы и старается одновременно выиграть гонку и пережить атаки соперников.

Как попробовать

Для тех, кто хочет совместить гонку с аркадным автомобильным боем: обгоняйте AI-соперников, подбирайте бонусы и защищайтесь от ракет.

  1. Скачайте проект ZIP и распакуйте всю папку.
  2. Откройте index.html в настольном браузере; рекомендуемый вариант с локальным сервером описан в разделе запуска.
  3. Начните гонку. Управление включает движение, оружие, нитро и возврат машины на трассу.

Нужны 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.

AI соперников

Соперники:

  • двигаются по трассе независимо;
  • меняют полосу;
  • избегают плотного сближения друг с другом;
  • используют нитро;
  • собирают бонусы;
  • стреляют ракетами и пулемётом;
  • получают щиты и другие эффекты;
  • используют динамическое 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.

Диагностика

Если игра не запускается:

  1. Откройте DevTools браузера через F12.
  2. Проверьте вкладку Console.
  3. Убедитесь, что браузер поддерживает WebGL.
  4. Проверьте доступ к CDN Three.js.
  5. Попробуйте запуск через локальный HTTP-сервер.
  6. Если графика стала нестабильной, переключите качество в режим Производительность.

Если оба 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-проверку.

Проверка и CI

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-уровнем.

Рекомендуемый runtime smoke test

  1. Открыть стартовое меню.
  2. Проверить переключение сложности и графики.
  3. Запустить гонку.
  4. Проверить управление WASD / стрелками.
  5. Проверить пулемёт и ракеты.
  6. Проверить нитро и защитный импульс.
  7. Проверить подбор бонусов.
  8. Проверить паузу и возврат в игру.
  9. Проверить полноэкранный режим.
  10. Проверить завершение гонки и сохранение рекордов.

Безопасность и bug reports

Политика ответственного сообщения об уязвимостях: SECURITY.md.

Для воспроизводимого бага используйте Bug report и укажите браузер, GPU/WebGL-среду, режим качества, приблизительный FPS, этап гонки и точные шаги. Не публикуйте личные данные из browser profile или другие секреты.


CYBER RACE: CAR WARS — экспериментальная браузерная боевая гонка с упором на скорость, оружие, AI-соперников и динамические визуальные эффекты.

Контакты для связи с разработчиком

About

Браузерная 3D-гонка на Three.js с вооружёнными автомобилями, ракетами, пулемётом, нитро, AI-соперниками и системой рекордов.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages