Daemon Starship is a 2D space shooter where the player defends against waves of enemies — asteroids, beetles, and wasps — in an infinite wrapping space. The game features a wave progression system across 5 levels of increasing difficulty, persistent high-score tracking, and a dual-radius collision detection system.
Built as a course project at SMU Guildhall, the game runs on a custom Daemon Engine providing DirectX 11 rendering, FMOD 3D audio, multithreaded job processing, and a developer console for runtime debugging.
- Wave-based combat — 5 levels with progressive enemy counts (beetles, wasps, asteroids)
- Fixed-size entity pools — Zero dynamic allocation during gameplay for consistent frame times
- Dual-radius collision — Conservative physics radius for gameplay, liberal cosmetic radius for visuals
- Persistent scoreboard — Top 100 high scores saved to disk
- FMOD audio — Background music and spatial sound effects
- Visual Studio 2022 (or 2019) with C++ desktop development workload
- Windows 10/11 (x64)
- DirectX 11 compatible GPU
- Daemon Engine cloned as a sibling directory
# Clone both repos side by side
git clone https://github.com/dadavidtseng/Engine.git
git clone https://github.com/dadavidtseng/DaemonStarship.git
# Directory layout should be:
# ├── Engine/
# └── DaemonStarship/- Open
DaemonStarship.slnin Visual Studio - Set configuration to
Debug | x64 - Build the solution (the Engine project is referenced automatically)
- The executable is deployed to
Run/via post-build event
| Action | Keyboard | Controller |
|---|---|---|
| Move | W / A / S / D | Left Stick |
| Shoot | Spacebar | A Button |
| Pause / Menu | ESC | Start |
- Attract Mode — Title screen, press to start
- Name Input — Enter your name for the scoreboard
- Gameplay — Survive 5 waves of increasing difficulty
- High Scores — View the top 100 leaderboard
Launch Run/DaemonStarship_Debug_x64.exe from the Run/ directory (working directory must be Run/ for asset loading).
DaemonStarship/
├── Code/Game/ # Game source (15 .cpp + 15 .hpp)
│ ├── Main_Windows.cpp # WinMain entry point
│ ├── App.cpp/hpp # Application lifecycle
│ ├── Game.cpp/hpp # Core game logic, wave system
│ ├── Entity.cpp/hpp # Base entity class
│ ├── PlayerShip.cpp/hpp # Player character (10 HP)
│ ├── Bullet.cpp/hpp # Projectiles (max 100)
│ ├── Asteroid.cpp/hpp # Environmental hazards (max 30)
│ ├── Beetle.cpp/hpp # Basic enemy AI (max 20)
│ ├── Wasp.cpp/hpp # Advanced enemy (max 20)
│ ├── Debris.cpp/hpp # Particle effects (max 200,000)
│ ├── UIHandler.cpp/hpp # UI management
│ ├── ScoreBoardHandler.cpp/hpp # Score persistence
│ └── LevelData.cpp/hpp # Wave configuration
├── Run/ # Runtime directory
│ ├── Data/Audio/ # BGM and sound effects (MP3)
│ ├── Data/Config/ # JSON engine configuration
│ ├── Data/Fonts/ # Bitmap fonts (PNG)
│ ├── Data/Score/ # Scoreboard persistence
│ └── Data/Shaders/ # HLSL shaders
├── Docs/ # Documentation
└── DaemonStarship.sln # Visual Studio solution
Copyright 2025 Yu-Wei Tseng
Licensed under the Apache License, Version 2.0.
Yu-Wei Tseng
- Portfolio: dadavidtseng.info
- GitHub: @dadavidtseng
- LinkedIn: dadavidtseng
- Email: dadavidtseng@gmail.com