A modern, retro-inspired 2D space shooter game with parallax backgrounds, enemy formations, and arcade-style action.
Built with C++, OpenGL, and cross-platform libraries.
- Move:
W,A,S,Dor Arrow Keys - Shoot:
Spacebar - Pause/Quit:
ESC - Restart (after game over):
R - Skip Level Transition:
Spacebar - Mouse: Click on menu buttons to start the game
- Destroy all enemy formations in each level.
- Survive enemy attacks and avoid enemy bullets.
- Progress through increasingly difficult levels.
- Earn points for each enemy destroyed and bonus for completing levels.
- The game ends when you lose all your lives or complete all levels.
- Download and extract the
space_shooter_windows.zipfile. - Run
space_shooter.exe. - Do not move or delete the
resourcesfolder or the DLL files (libassimp-5.dll,soft_oal.dll) from the extracted directory.
- CMake (>= 3.10)
- A C++17 compiler
- OpenGL development libraries
- GLFW
- Assimp
- OpenAL-Soft
- stb_image (included)
- glm (header-only, included or installable)
sudo apt update
sudo apt install build-essential cmake libglfw3-dev libassimp-dev libopenal-dev libglm-dev- Use MSYS2 or Visual Studio with vcpkg/conan for dependencies.
- Or, use the provided cross-compilation instructions below from Linux.
git clone <this-repo-url>
cd invaders
mkdir build
cd build
cmake ..
make
./space_shooter- Install MinGW-w64:
sudo apt install mingw-w64
- Download Windows libraries:
- GLFW, OpenAL-Soft, and Assimp precompiled for Windows (see
win-libs/in this repo for structure).
- GLFW, OpenAL-Soft, and Assimp precompiled for Windows (see
- Configure and build:
The resulting
cmake -S . -B build-win -D CMAKE_TOOLCHAIN_FILE=toolchain-mingw.cmake cmake --build build-winspace_shooter.exeand required DLLs will be inbuild-win/.
- Zip the following for Windows release:
space_shooter.exelibassimp-5.dllsoft_oal.dllresources/folder
- Art & Audio: See
resources/for asset licenses and attributions. - Libraries: GLFW, Assimp, OpenAL-Soft, stb_image, GLM
This project is open source. See LICENSE for details.
Enjoy the game!
For issues or contributions, open an issue or pull request on GitHub.