JamJam

Every song is a level. Load a track, and JamJam charts it in seconds, then you run, dash and fight to the beat.

Coming soon onSteam Made withGodot Made by handNo AI used

How a song becomes a level.

A C++ engine inside the game listens to your track and writes the chart in seconds.

Beatmap generator
Tempo124 BPM
Onsets found0
Notes charted0
Holds0
WaveformOnset strengthVocal energyChartIllustration with a sample signal
  1. 01DecodeMP3 and OGG files are decoded natively in C++, so even long tracks load in moments.
  2. 02DetectThe engine finds onsets, the instants a new sound starts, and locks them to the tempo.
  3. 03Follow the voiceEnergy in the vocal range decides which onsets become notes, so the chart sings along.
  4. 04ShapeShort hits become taps, sustained notes and shreds become holds, and difficulty sets the density.

Built to feel good.

Every system was tuned with playtesters, build after build.

Arcade modesQuick runs with score chasing and unlockables.
Hub worldWalk around between songs and pick fights with NPCs.
Characters to unlockA roster that grows as you play.
Beatmap editorFine-tune any chart by hand, or build your own.
Combo trailsAfterimages that level up the longer your streak lasts.
Boss fightsSet pieces that keep the beat while they attack.
Melodic hit soundsEvery hit plays a note that fits the song.
Built-in jukeboxA music player with a spinning wheel to browse your library.
Co-op on one keyboardTwo players, one lane each, WASD and the arrow keys.

More games I've made.

From university projects to prototypes, each one taught me something new about game feel.

RPG

Nyx

A top-down RPG with multiple endings, where your choices decide how the story closes.

Platformer, made in Godot

LET ME OUT

A platformer built around a repel ability: aim away from where you want to fly.

Play it on itch.io

Thanks for playing along.

JamJam is on its way to Steam. Until then, you can play my older games on itch.io and read the code on GitHub.