Glide Runner is a fast, 2D precision platformer built in C with raylib. It features tight, grid-aligned movement and a built‑in level editor.
- Fast, 2D precision platformer about flow and timing.
- Glide through tight spaces and thread around laser traps.
- Solid blocks shape each arena; route‑finding matters.
- Reach the glowing exit to clear each level; instant restarts.
- Built‑in level editor to design, save, and play your own challenges.
- A C toolchain:
clangorgcc, andmake - Platform SDK bits that raylib needs (e.g., Xcode Command Line Tools on macOS; X11 dev packages on Linux)
raylib is vendored as a Git submodule under raylib and is built automatically by the Makefile.
After cloning this repo, initialize submodules once:
git submodule update --init --recursive
- Build:
make(first run builds vendored raylib for desktop) - Run:
make start(runs./main) - Clean:
make clean - Format sources:
make format
The build outputs a binary named main (ignored by Git).
This project can build to WebAssembly using Emscripten. The Makefile uses the vendored raylib and will build it for the web target automatically.
Prerequisites:
- Emscripten SDK installed and activated (
emccon your PATH)
Build and serve:
- Build:
make web(builds raylib forPLATFORM_WEBand outputsweb/index.html+.wasm/.js) - Serve: from repo root
python3 -m http.serverthen openhttp://localhost:8000/web/ - Alternatively:
emrun web/index.html
Notes:
- The web build defines
PLATFORM_WEBand packagesassets/,levels/, andconfig/for read-only access at runtime. - Building for web overwrites the raylib static library in
raylib/src. Runningmakeagain will rebuild the desktop library automatically. - You can override
RAYLIB_INC/RAYLIB_WEB_LIB_DIRto point at a different raylib build if desired; defaults point toraylib/src.
- Gameplay: Move = A/D or Left/Right; Jump = Space/W/Up; Back = Esc.
- Menu: Navigate = W/S or Up/Down; Select = Enter/Space; Back = Esc; Mouse can click items.
- Editor: Move cursor = Mouse or Arrow keys; Place/use tool = Space or Left click; Tools = 1–5, Tab cycles; Save/Back = Esc; Test play = Enter/Space.
- Open via “Edit existing level” or “Create new level” from the main menu
- Move cursor: Mouse or Arrow keys
- Place/use tool: Space or Left Click
- Switch tools: Tab cycles, or press 1–5 directly
- 1: Player spawn
- 2: Add block
- 3: Remove block
- 4: Level exit
- 5: Laser trap
- Test play: Enter (saves, then launches a test run)
- Exit editor: Esc (saves and returns to menu)
Levels are stored under levels/ as .lvl files. “Create new level” will pick the next available index automatically.
- Link/include errors for raylib: ensure the headers and libs are installed and the
MakefileCFLAGS/LIBSpaths match your system. On Linux distros that install system-wide, you can often remove the explicit-I/-Land just keep-lraylib, or switch topkg-configflags. - Audio issues on first run: the game initializes the audio device; make sure your environment permits audio output.
- Source:
*.c,*.h - Assets:
assets/ - Levels:
levels/*.lvl - Configurable inputs:
config/input.cfg(optional; falls back to sensible defaults)
Enjoy hacking and making levels!