WHEEL UP!
A drum & bass rhythm game in Rust: play the drums on a PlayStation controller, and turn any MP3 into a level.
- Rôle :
- Lead développeur
- Période :
- Depuis oct. 2026 · en cours

En bref pour les recruteurs
A complete game in Rust (Bevy) with its own real-time audio engine: every sound synthesized in code, controller input on a dedicated thread judged within ±25 ms, MP3 import with tempo and drum-hit detection. 11 crates, 290 tests, CI on Linux, Windows and macOS, automated cross-platform releases.
WHEEL UP! turns a controller into a drum kit: the D-pad and face buttons become eight pads (kick, snare, ghost, rim, tom, hi-hats), and L1/R1 play rolls. Clicking both sticks triggers a “WHEEL UP!”: the tune rewinds like a DJ's and plays again for double points. The game ships twelve original tunes, from ragga to neuro, fully synthesized by its own engine, and a campaign, the Pirate Radio Tour, that goes from a bedroom studio to a festival's main stage. You can also drop any jungle track on the window: the game finds the tempo, hears the drums and builds a level where every note lands on a real hit. Guided tutorial, section practice at 50–150% speed, no-fail mode, latency calibration, in English and French.
Fonctionnalités
- Controller turned into an 8-pad drum kit, plus rolls on L1/R1
- Import MP3, WAV, FLAC, OGG or M4A and get a playable level
- 12 original tunes fully synthesized in code
- Pirate Radio Tour campaign with sets, encores and challenges
- 5 difficulty levels, from Beginner to “Junglist”
- Looped section practice at 50 to 150% speed
- Audio and video latency calibration per output
- Autoplay bot that plays the song for you
- Interface in English and French
Contexte
The idea: make drum & bass playable like an instrument, on a mainstream controller, with timing tight enough to sound musical. Two constraints shaped the whole project: no third-party sounds (so no licensing dependency) and releases for Windows, macOS, Linux and Steam Deck.
Architecture
Cargo workspace of 11 crates with separate responsibilities: - wu-time: shared monotonic clock, 960 ticks per beat, tempo maps, swing - wu-dsp: oscillators, filters, envelopes, reverb, dub delay - wu-instruments: drum synthesis, breaks, kits, patches - wu-audio: sequencer, voices, sound card / offline / silent outputs - wu-input: controllers on their own thread, layouts, statistics - wu-chart: per-difficulty chart generation and playability validator - wu-game: calibration, judge, scoring, replays - wu-import: analysis of imported audio files - wu-content, wu-studio: songs, settings, licences On top: the Bevy app (rendering, UI) and a headless CLI to render a song to WAV, inspect charts, replay a run or measure loudness.
Décisions techniques
The audio engine runs on a real-time thread fed by lock-free ring buffers, with no allocation in the callback. Inputs are timestamped on the same monotonic clock as the audio: a hit is judged when it was played, not on the frame that caught it. Every sound is synthesized in code. Every shipped file is listed with its licence, and a test fails on any undeclared file. Charts are generated automatically under playability rules (thumb spacing, chords, density) and validated in the tests. Platform services sit behind traits, to keep a console port possible.
Difficultés
Latency: over Bluetooth or on a TV, sound arrives too late to play live. The game calibrates audio and video delay separately for each output, and offers a “Classic” mode for those setups. MP3 import: estimating tempo and downbeat across the whole track, telling a kick from a bassline (one logistic model per drum) and measuring each drum's micro-timing to keep the groove. Accessibility without diluting the genre: every difficulty, from beginner to hardest, keeps every kick and every snare; difficulty only adds the rest of the kit.
Résultats
Downloadable releases for Windows, macOS and Linux, built automatically on every tag. Twelve original tunes mixed and mastered to −16 LUFS by the game's own engine, a full campaign, a tutorial and a practice mode.
Questions fréquentes
- Why Rust?
- The game needs glitch-free real-time audio and input timing accurate to the millisecond. Rust gives that control without a garbage collector, with memory safety on top.
- Why not on PlayStation?
- Publishing on PlayStation requires being a licensed Sony partner. The game targets PC, Mac, Linux and Steam Deck, with the DualSense as its main controller.
- How did you use AI on this project?
- I drove a coding agent (Claude) from a detailed spec. I wrote the brief, made the technical calls (recorded in a decisions file), reviewed, tested and playtested the game.
