A faithful, browser-native recreation of Geometry Dash. Pure vanilla JavaScript +
Canvas2D — zero dependencies, no build step. Open index.html (or
npm start → http://localhost:8000) and play.
Every core constant comes from community decompilations of the actual game
(camila314/gdp PlayerObject and GD physics documentation), integrated at
240 Hz fixed substeps (like GD 2.2) so the feel is identical at any
refresh rate. 1 block = 30 units; native values are per-frame at 60 FPS:
| Constant | Value |
|---|---|
| Gravity | 0.958199 u/f² |
| Cube jump velocity | 11.180032 u/f → apex ≈ 2.17 blocks in ≈ 0.39 s |
| Fall-speed clamp | ±15 u/f |
| Speeds 0.5×/1×/2×/3×/4× | 251.16 / 311.58 / 387.42 / 468 / 576 u/s |
| Ship clamps | +8.0 / −6.4 u/f (mini: +9.4118 / −7.5294), hold 1.0 g up / release 0.8 g down |
| Ball gravity | 0.6× |
| Robot gravity | 0.9×, sustained-thrust jump |
| Wave | exact 45° (mini 2:1), no gravity |
| Mini jump multiplier | 0.8 |
| Slope launch | 1.4× |
| Player hitbox | 30×30 solids / 9×9 inner for hazards; spikes 9.6×10.4; saws 80 % circles |
Landing forgiveness (⅓-block clip), side-hit death, click buffering, hold auto-rejump, orb one-shot-per-click — all reproduced.
- All 7 gamemodes: cube, ship, ball, UFO, wave, robot, spider — each × mini × flipped gravity
- Portals: gamemode ×7, gravity (blue/yellow), size (mini/normal), speed ×5, dual, mirror
- Orbs: yellow, pink, red, blue, green, black, green/magenta dash orbs
- Pads: yellow, pink, red, blue · Slopes with launch physics · saws, spike variants, monsters
- 3 built-in levels: Stereo Overdrive (Easy ★2), Neon Circuit (Harder ★6), Hyper Eruption (Insane ★9) with per-section color scripting and 3 secret coins each
- Practice mode with checkpoints (Z place / X remove), separate practice progress
- Icon kit: 6 cube designs × GD color palette (primary + secondary)
- Level editor: full object palette, grid placement, undo, playtest, localStorage save, JSON export/import — custom levels appear in level select
- Procedural music: WebAudio EDM loops per level + synthesized SFX (no audio files)
- GD UI: level cards with difficulty faces/best-% bars/coins, progress bar with best marker, attempt counter, pause menu, New Best toasts, Level Complete stats, death explosions, fireworks
- Persistence via localStorage: progress, coins, settings, icons, custom levels
| Input | Action |
|---|---|
| Click / tap / Space / ↑ / W | jump · hold to fly/thrust |
| Esc / P | pause |
| Z / X | practice checkpoints |
| R | restart attempt |
| H | toggle hitbox viewer |
npm test # physics invariants + level solvability
node tests/physics.test.js # 44 checks of decompiled-constant behavior
node tests/solve.test.js # a beam-search bot completes every level with real physics
node tests/smoke.js # Playwright UI smoke test (needs playwright-core + chromium)Every built-in level is machine-verified completable: the solver plays it to 100 % using the actual engine.
A love letter to RobTop Games' Geometry Dash. Not affiliated; no original assets used — everything is drawn and synthesized procedurally.
