A modern C++ implementation of the classic arcade game Galaga using the Cinder framework for graphics and gameplay.
This project recreates the core mechanics of Galaga with the following features:
- Player-controlled battleship that can move and shoot
- Enemy ships that move downward in formations
- Score tracking with persistent high score
- Multiple lives system
- Increasing difficulty through levels
- Arcade-style visuals and custom font
- CMake 3.12+
- C++11 compatible compiler
- Cinder graphics framework
- Visual Studio 2019+ (Windows) or Xcode (macOS)
- Clone the repository
- Install the arcade font from
resources/arcade_font.TTF - Build using CMake:
mkdir build
cd build
cmake ..- Open the generated project files in your IDE
- Build the galaga-game target
Launch the compiled galaga-game executable.
- Left/Right Arrow Keys - Move battleship
- Z - Fire bullet
- Close window to exit
The game is structured around these key components:
- Space - Main game container managing all entities
- GalagaApp - Cinder application wrapper handling rendering and input
- Battleship - Player-controlled ship
- Enemy - Enemy ships with movement patterns
- PlayerBullet - Projectile physics
The architecture uses modern C++ practices and is thoroughly unit tested using Catch2.
Run the unit tests by building and running the galaga-test target.
- High scores are persisted in resources/highscore.txt
- The game has no win condition - aim for the highest score possible
- Each level increases enemy count by 3x
- Each enemy destroyed awards 50 points