o
odinpkg.dev
packages / app / good-riddance

good-riddance

f29d357app

Rythm Game Made With Raylib and Portmidi

No license · updated 2 months ago

Orpheus & Eurydice Rhythm Game

A rhythm game where two players must hit notes in sync with a musical track. The game supports both MIDI controllers (keyboards/pads) and standard QWERTY keyboards.

Core Features

  • Seamlessly switch between MIDI hardware and Keyboard mapping.

  • Uses #load for embedding assets (textures, sounds, JSON) directly into the binary.

  • Real-time MIDI event parsing and timestamp synchronization.

  • Language: Odin

  • Graphics: Raylib (via vendor:raylib)

  • Audio: Raylib Audio (Vorbis/OGG support)

  • Input: PortMIDI (via vendor:portmidi)


Project Structure

  • Shared Memory: The shared global struct manages resources, MIDI streams, and screen scaling.
  • State Machine: Uses a union (ProgramState) to transition between:
    • MainMenu
    • IntroCutscene
    • Gameplay
    • GameWin / GameLose
  • Note System: Logic is driven by eurydice.json and orpheus.json which contain MIDI timestamps and note values.

Build & Run

  1. Ensure you have the Odin Compiler installed. (At least version 2026-04)
  2. Run the following command:
odin run . 
  1. You can add -subsystem:windows argument to hide the terminal.