A side-scrolling shoot'em up game built with Raylib in C, featuring JSON-based data-driven level design, dynamic difficulty scaling, weapon heat management, and music-synchronized enemy waves.
- ๐ JSON-Based Levels: Create new levels without recompiling - just edit JSON files!
- ๐ต Music-Reactive Gameplay: Enemy waves synchronized with bass analysis
- ๐ฎ Multiple Weapon Modes: Single, Double, Spread, Rapid, Dual, and Charge modes
- ๐ฅ 10 Unique Enemy Types: Each with distinct behaviors and movement patterns
- ๐ฏ Boss Battles: Epic encounters with special escape mechanics
- ๐ 4 Powerup Types: Shield, Spread Shot, Extra Life, and Double Score
- ๐น Gamepad Support: Full controller support with configurable bindings
- ๐ High Score System: Persistent SQLite database for scores and settings
- ๐ ๏ธ Debug Tools: Interactive testing arenas and showcases
Complete documentation is available in the docs/ folder:
- Build Instructions - How to compile and run the game
- Gameplay Guide - Controls, mechanics, and strategies
- Architecture Overview - Project structure and design
- API Reference - Module interfaces and functions
- Level System - Multiple levels with unique wave plans and music
- Enemies and Sprites - All 10 enemy types and sprite designs
- Weapons and Damage - Comprehensive weapon systems, damage mechanics, and projectile types
- Powerup System - 4 powerup types with drop mechanics
- Flight Plan - Level 1 wave system and phase progression
- Debug Features - Testing tools and debug modes
- TODO List - Planned features and improvements
- Complete CI/CD Guide - Version management, releases, and automation
# Clone the repository
git clone <repository-url>
cd capybara-project
# Build the game (using CMake - recommended)
./build.sh
# Run the game
./build/shootemup
# Or use the traditional Makefile
make && make run
# For advanced debugging (invulnerability, phase selection, etc.)
./run_debug_game.sh --helpNote: This project uses CMake as the primary build system for cross-platform compatibility (Linux, macOS, Windows). See docs/BUILD.md for detailed build instructions.
Multi-platform releases (Linux, macOS, Windows) are automated via GitHub Actions.
# 1. Install commitizen
make cz-install
# 2. Make commits (conventional format)
make cz-commit
# 3. Create release
make cz-alpha # Alpha: v1.0.0-alpha.0
# or
make cz-beta # Beta: v1.0.0-beta.0
# or
make cz-release # Stable: v1.0.0
# 4. Push to trigger CI/CD
git push origin main
git push --tags
# โ Builds for Linux, macOS, Windows (~15 min)
# โ Check: https://github.com/YOUR_USERNAME/capybara-project/releases| Command | Purpose | Example |
|---|---|---|
make cz-alpha |
Create alpha release | v1.0.0-alpha.0 |
make cz-beta |
Create beta release | v1.0.0-beta.0 |
make cz-rc |
Create release candidate | v1.0.0-rc.0 |
make cz-release |
Create stable release | v1.0.0 |
Complete guide: docs/CI_CD_COMPLETE_GUIDE.md
- ๐ต Multiple Levels: 2 levels with unique music tracks and wave plans (extensible)
- ๐ฎ Dynamic Gameplay: Speed increases every 20 seconds
- ๐ซ Heat Management: Weapon overheats with continuous fire
- ๐พ 10 Enemy Types: Each with unique behaviors and attack patterns
- ๐ Wave System: Synchronized with music bass events for dynamic difficulty
- โญ Powerup System: 4 types (energy, shield, hull, weapon) with smart drop mechanics
- ๐ Score System: Points for destroying enemies
- ๐ Debug Mode: Invulnerability, phase selection, and hitbox visualization
| Action | Keys |
|---|---|
| Move | WASD / Arrow Keys |
| Shoot | Left Click (hold for continuous fire) |
| Pause & Exit Menu | ESC |
| Debug | H (show hitboxes) |
| Restart | R (when game over) |
| Action | Keys |
|---|---|
| Navigate | UP/DOWN or W/S |
| Select | ENTER or SPACE |
| Adjust | LEFT/RIGHT or A/D |
| Back | ESC or BACKSPACE |
| Quick Fullscreen | F11 or ALT+ENTER |
- C compiler (GCC/Clang)
- Raylib graphics library
- Make build tool
- pkg-config
brew install raylib# Ubuntu/Debian
sudo apt install libraylib-dev
# Fedora
sudo dnf install raylib-develInteractive showcase for testing enemy behavior:
make showcase- Click any enemy to test it in a combat arena
- Invincible player ship for safe testing
- Enemies use their standard attack patterns
- Continuous spawning for behavior observation
- See Enemy Test Arena Documentation
make run_audio_gui # Audio analysis GUI
make run_audio_cli # Audio analysis CLIComplete high score system with personalization!
Features:
- Automatically populated with 40 legendary game developers on first run
- Name input dialog when you achieve a high score - personalize your entry!
- Navigate difficulties with LEFT/RIGHT arrows to see all leaderboards
- 10 scores per difficulty level (EASY, NORMAL, HARD, INSANE)
- Based on gaming industry legends (Miyamoto, Kojima, Carmack, etc.)
- Optional reset tool:
make force_populate_highscores - See High Scores Documentation | Name Input Dialog
The game includes several debug features for testing and development:
- Invulnerability Mode: Set
DEBUG_INVULNERABILITYtotrueinconstants.h - Start at Any Phase: Set
DEBUG_START_PHASE(1-17) inconstants.h - Pause & Exit Menu: Press ESC during gameplay to pause and access the exit menu
- Hitbox Visualization: Press H to show collision boxes
See Debug Features Documentation for detailed usage.
capybara-project/
โโโ src/ # Source code (.c files)
โโโ include/ # Headers (.h files)
โโโ docs/ # Documentation
โโโ assets/ # Sprites and graphics
โโโ build/ # Compilation artifacts and executable output
The modular architecture makes it easy to extend:
- See Architecture Overview for design details
- Check API Reference for module interfaces
- Review TODO List for planned features
[Add your license here]