โจ Did you know?#
This game was GameJam Plus | Asia & Ocenia Region: SEMI FINALIST๐
Github: https://github.com/dandee77/space-ablaze.git
Itch.io: https://dandee77.itch.io/space-ablaze
๐ Project Overview#
Space Ablaze is a 2D top-down survival shooter game developed using C++ and the Raylib graphics library. The game throws the player into a hostile space environment swarming with alien ships. The objective is simple: survive as long as possible while taking down waves of enemies. With retro arcade aesthetics, responsive controls, and adrenaline-fueled action, Space Ablaze delivers a bite-sized but addictive gameplay experience.
๐ฎ Gameplay Features#
- Survival Mode: Endless waves of enemies with increasing difficulty.
- Simple Controls: Movement via
mouse cursor
, shooting withleft mouse button
orE keyboard button
to auto-shoot. - Powerups: Temporary boosts like shield, rapid fire, and health drops (Coming Soon).
- Explosions and Effects: Particle effects and screen shakes to enhance immersion.
๐ ๏ธ Tech Stack#
Component | Technology |
---|---|
Language | C++ |
Graphics Library | Raylib |
Assets | Game assets from itch.io |
Build Tool | CMake / g++ |
Platform | Desktop (Windows/Linux) |
๐ง Design Considerations#
- Entity Component System (ECS)-like structure: Lightweight object-based system to separate logic.
- Game loop efficiency: Fixed timestep updates and decoupled rendering.
- Asset Management: Texture caching and centralized loading to prevent redundant memory usage.
- Memory efficiency: Utilizes the RAII programming technique for fast and quick memory I/O.
- Optimization: Uses various data structures and the C++ STL for better perfomance.
๐ผ๏ธ Game Architecture Diagram#
- Game Window and Rendering Architecture

Rendering responsibilities are decoupled from the application logic and handled separately in game.cpp. This separation of concerns promotes a modular design, where the renderer is focused solely on drawing game objects, managing visual assets, and updating frames based on game state.
By abstracting rendering logic into game.cpp, the system achieves better maintainability and scalability. The Application class delegates rendering tasks to the renderer, allowing high-level logic (such as state management and timing) to remain isolated from low-level graphics operations.
- The Entity Class

To ensure cleaner and more efficient implementation, all enemy instances are managed within a single container using a hash map. This design leverages polymorphism and abstraction to provide a robust and scalable entity architecture.
All entity containers utilize std::shared_ptr
to ensure proper memory management. Additionally, textures and animations used by the entities are referenced rather than duplicated, minimizing memory overhead and improving performance.
๐ฆ Folder Structure#
SpaceAblaze/
โโโ src/
โ โโโ main.cpp
โ โโโ player.cpp/.h
โ โโโ enemy.cpp/.h
โ โโโ bullet.cpp/.h
โโโ assets/
โ โโโ sprites/
โ โโโ sounds/
โโโ build/
โโโ CMakeLists.txt
โโโ README.md
The SpaceAblaze project is organized to maintain clarity, modularity, and ease of scalability. At its core, the src/ directory contains the game’s source code, including the main entry point (main.cpp) and the implementation of key gameplay components such as the player, enemies, and bullets, each split into their respective .cpp and .h files to maintain separation of interface and implementation.
Game assets are stored under the assets/ directory, with subfolders for sprites/ and sounds/, allowing for clean management of visual and audio resources. The build/ directory serves as the target for compiled binaries and intermediate files, keeping the working directory clean and focused. Project configuration is handled through CMakeLists.txt, supporting portable and scalable builds across systems. Additionally, the root-level README.md provides documentation and guidance for understanding, building, and running the project.
๐ง Build & Run#
This project is organized for you to run the game from source without any hassle. Just paste this in your terminal:
build
โ ๏ธ If it is not working, then see the repository for more info SpaceAblaze-github
๐ Future Improvements#
- Add boss levels every N waves
- Soundtrack and dynamic background music
- Score saving and leaderboard
- Gamepad support
- Steam deployment
โจ Final Thoughts#
This project was built from scratch as a personal challenge to explore lower-level game dev with C++ and get hands-on with Raylib. Itโs a compact yet complete game that showcases core game development conceptsโgame loops, input handling, collision detection, resource management, and user feedback.