Skip to content

07Rinat07/space-dodger-deluxe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Space Dodger Deluxe

Небольшая аркадная игра на C++ с использованием raylib и CMake.

Управляйте космическим кораблём, уклоняйтесь от астероидов, собирайте бонусы и побеждайте собственный рекорд. Игра использует внешние текстуры, sprite-sheet анимации, звуковые эффекты и OGG-музыку из папки assets/. Если ассеты не загрузятся, часть визуала и звука имеет процедурный fallback, чтобы игра не падала при запуске.

Управление

  • WASD или стрелки — управление кораблём.
  • Уклоняйтесь от падающих астероидов.
  • Пролетайте рядом с угрозами, чтобы получать near miss-очки и разгонять множитель.
  • Собирайте жёлтые бонусы, чтобы получить дополнительные очки.
  • Собирайте синие щиты, чтобы пережить один удар.
  • Собирайте зелёные и фиолетовые бонусы, чтобы временно ускорить стрельбу или получить веерный выстрел.
  • P — пауза.
  • Space или Ctrl во время игры — стрелять.
  • Enter, Space или R — начать игру или перезапустить после Game Over.
  • S в главном меню — настройки.
  • L в главном меню — таблица рекордов.
  • C в настройках — очистить таблицу рекордов и лучший счёт.
  • После окончания игры введите имя и нажмите Enter, чтобы сохранить результат.
  • Esc — вернуться в меню или выйти из игры.

Структура проекта

space-dodger-deluxe/
├── .github/workflows/            # Проверка сборки и тестов в GitHub Actions
├── assets/                       # Будущие текстуры, звуки и скриншоты
├── docs/                         # Архитектура и заметки по проекту
├── include/                      # Заголовочные файлы
├── platform/                     # Заметки по Android/iOS-обвязке
├── src/                          # Исходники C++
├── tests/                        # Простые unit-тесты логики
├── CMakeLists.txt                # Конфигурация CMake
├── LICENSE
└── README.md

Требования

  • Компилятор C++ с поддержкой C++17
  • CMake 3.20+
  • Git
  • raylib, установленный в системе, или интернет при первом запуске CMake, чтобы CMake автоматически загрузил raylib

Рекомендуемые пакеты для Linux

Если в репозитории вашего дистрибутива есть raylib:

sudo apt update
sudo apt install cmake build-essential git libraylib-dev

Если libraylib-dev недоступен, установите только базовые инструменты. CMake скачает raylib сам:

sudo apt update
sudo apt install cmake build-essential git

Для сборки raylib на Linux могут понадобиться системные библиотеки OpenGL/X11:

sudo apt install libasound2-dev libx11-dev libxrandr-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev libxcursor-dev libxinerama-dev

Сборка и запуск

Сборка

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release

Запуск игры

# Linux / macOS
./build/space_dodger

# Windows, Visual Studio
./build/Release/space_dodger.exe

# Windows, MinGW
./build/space_dodger.exe

Тесты

cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build --config Debug --target unit_tests
ctest --test-dir build --output-on-failure

Unit-тесты проверяют математические функции, JSON-сохранение рекорда/настроек/таблицы рекордов с именами, волны, а также headless-логику игровых объектов: игрока, астероидов, пуль, бонусов и частиц. Они не открывают окно и не требуют запуска графического режима.

Стабильность

В проекте уже есть несколько защит от типичных проблем:

  • выход из меню выполняется через флаг завершения игрового цикла, без отрисовки после закрытия окна;
  • рекорд, сложность и переключатели звука/музыки сохраняются в JSON-файл space_dodger_save.json;
  • повреждённый или отрицательный рекорд считается нулём;
  • таблица рекордов хранит лучшие результаты и ограничивается верхними позициями;
  • имена игроков очищаются перед сохранением, чтобы JSON оставался предсказуемым;
  • тесты игровой логики запускаются локально и в GitHub Actions.

Возможности игры

  • Игровой цикл с рендерингом и обновлением объектов.
  • Движение корабля с нормализацией диагонали.
  • Процедурная генерация астероидов и звёздного поля.
  • Бонусы: очки и щит.
  • Оружие и пули.
  • Система риска и награды: near miss, плавающие очки и множитель комбо.
  • Временные оружейные усиления: rapid fire и spread shot.
  • Количество жизней зависит от сложности: Easy прощает больше ошибок, Hard оставляет один шанс.
  • Несколько типов астероидов: обычные, быстрые и тяжёлые.
  • Босс на каждой третьей волне.
  • Баннеры волн и полоска здоровья босса.
  • Волны врагов с ростом скорости и частоты появления.
  • Разные типы боссов: Cruiser, Striker и Carrier.
  • Фазы боссов с усилением атак при снижении здоровья.
  • Вражеские снаряды босса с прямыми, волновыми, дрейфующими и дуговыми траекториями.
  • Набор отдельных внешних спрайтов в assets/textures/sprites/.
  • Sprite-sheet анимации корабля, боссов и взрывов.
  • Внешние звуки assets/sounds/*.wav.
  • Несколько скачанных CC0 музыкальных loop-файлов в OGG для меню, игры, босса и Game Over.
  • Переключение музыки по состоянию игры.
  • Меню настроек со сложностью, звуками, музыкой и очисткой рекордов.
  • Ввод имени игрока после Game Over.
  • Экран таблицы рекордов из главного меню.
  • Сохранение рекорда, таблицы рекордов с именами и настроек в JSON.
  • Статусы игры: меню, настройки, игра, пауза, Game Over.

Web-сборка

Для web-версии нужен Emscripten. После активации окружения Emscripten:

emcmake cmake -S . -B build-web -DCMAKE_BUILD_TYPE=Release
cmake --build build-web --parallel

Результат будет собран как HTML-приложение.

Мобильные платформы

В platform/android добавлен стартовый Gradle/NDK-проект с NativeActivity. В platform/ios добавлен CMake/Xcode target и скрипт build_ios.sh. Для реальной сборки нужны соответствующие SDK/NDK/Xcode и raylib, собранный для целевой платформы. Проверить наличие инструментов можно командой:

./scripts/check_mobile_env.sh

Android SDK/NDK можно держать локально в .android-sdk/, Gradle/CMake — в .dev-tools/; эти каталоги игнорируются Git. Debug APK собирается командой из scripts/check_mobile_env.sh, но запуск на реальном телефоне требует подключенного устройства или эмулятора. iOS-проверка требует macOS с Xcode, потому что xcodebuild недоступен на Linux.

Лицензии ассетов

Музыка взята из набора 5 Chiptunes (Action) от SubspaceAudio / Juhani Junkala на OpenGameArt. Лицензия: CC0. Подробности сохранены в assets/music/ATTRIBUTION.md.

План развития

Проект находится в активной разработке. В следующих версиях можно улучшить:

  1. Проверить Android APK на реальном устройстве или эмуляторе.
  2. Проверить iOS-проект на macOS с Xcode и устройством или симулятором.
  3. Заменить процедурно собранные sprite-sheet анимации на финальный авторский набор кадров.

Лицензия

MIT License.

About

В разработке.Аркадная игра на C++ (с использованием raylib и CMake). Все кто желает присоединяйтесь к разработке!

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors