Skip to content

theburrowhub/capybara-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Shoot'em Up Game - Capybara Project

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.

โœจ Key Features

  • ๐Ÿ“ 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

๐Ÿ“š Documentation

Complete documentation is available in the docs/ folder:

Core Documentation

Game Content

Development

CI/CD & Releases

Quick Start

# 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 --help

Note: This project uses CMake as the primary build system for cross-platform compatibility (Linux, macOS, Windows). See docs/BUILD.md for detailed build instructions.

๐Ÿš€ Creating Releases

Multi-platform releases (Linux, macOS, Windows) are automated via GitHub Actions.

Quick Release

# 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

Release Commands

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

Key Features

  • ๐ŸŽต 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

Controls

In-Game

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)

Menu

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

Requirements

  • C compiler (GCC/Clang)
  • Raylib graphics library
  • Make build tool
  • pkg-config

macOS Installation

brew install raylib

Linux Installation

# Ubuntu/Debian
sudo apt install libraylib-dev

# Fedora
sudo dnf install raylib-devel

Demo & Testing Tools

Enemy Showcase

Interactive 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

Audio Analysis Tools

make run_audio_gui   # Audio analysis GUI
make run_audio_cli   # Audio analysis CLI

High Score System

Complete 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

Debug Features

The game includes several debug features for testing and development:

  • Invulnerability Mode: Set DEBUG_INVULNERABILITY to true in constants.h
  • Start at Any Phase: Set DEBUG_START_PHASE (1-17) in constants.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.

Project Structure

capybara-project/
โ”œโ”€โ”€ src/        # Source code (.c files)
โ”œโ”€โ”€ include/    # Headers (.h files)
โ”œโ”€โ”€ docs/       # Documentation
โ”œโ”€โ”€ assets/     # Sprites and graphics
โ””โ”€โ”€ build/      # Compilation artifacts and executable output

Contributing

The modular architecture makes it easy to extend:

License

[Add your license here]