Press start
You begin in Creator's Playground. Debug mode is the same game with the inspector switched on: every hitbox drawn, and time you can freeze, step and slow down.
- ←→ or AD move
- Space jump
- Shift run
- Esc pause
- F1 settings
- Gamepads work too, and phones get touch buttons. Tab leaves the game.
What's in the cartridge
Three hand-built levels, from a grassy playground to two volcanic stages, plus six small lab levels for studying one mechanic at a time.
- 3levels23 screens to cross
- 71coins & starsplaced by hand
- 38enemiessix kinds
- 56hazardssaws, axes, flames, spikes
- 6lab levelsone idea each
Who you'll meet
Spider
Patrols its ledge, turns at the edge. The jumping kind does not turn.
Bird
Flies a slow sine wave across the sky. Duck or time it.
Fish
Waits under the water, then leaps at exactly the wrong moment.
Circular saw
Rolls back and forth along its track. As dangerous as it looks.
Axe trap
Swings on a schedule. Learn the schedule.
Blue flame
Erupts from the gaps in the floor. Jump between bursts.
Learn C by taking it apart
Super Mango started as a way to learn C properly, by building something we actually wanted to play. So the code prefers being readable over being clever: simple loops, explicit ownership, and comments that explain why, not just what.
Nothing is hidden behind an engine. Open any file and you are one or two function calls away from raylib.
- Sandbox Schooleight small experiments, from your first frame to a reproducible replay
- Mechanics Museumsix tiny levels, each showing one mechanic in isolation
- Entity walkthroughfollow one collectible from TOML to screen, editor and tests
- Level editorbuild your own level with the same editor we use
int steps = game_inspector_steps(gs, frame_seconds);
for (int i = 0; i < steps; i++) {
/* Live steps are GAME_FIXED_STEP; a replayed experiment supplies its
* recorded step and 0 once the tape has ended. */
float step_dt = game_experiment_dt(gs, GAME_FIXED_STEP);
if (step_dt <= 0.0f) break;
cam_x = game_update_active(gs, step_dt, cam_x);
/* Completion, game over or a route stops the remaining steps. */
if (game_simulation_blocked(gs)) break;
}Every frame turns real time into a whole number of fixed 1/60 s steps. That is why a jump reaches the same height at 60 Hz and at 144 Hz, and why a recorded run replays exactly.
The manual
Every page was written next to the code it describes, and checked against it.
Start Here
Take it home
Native builds for each platform come with every tagged release. To get the level editor and the learning labs too, build from source with make builder.