A cartoon arcade kart racer with AAA-grade visuals, power-ups and procedural audio — built on Three.js and playable right in the browser with keyboard or touch. Inspired by the genre's legends: Mario Kart, Sonic & All-Stars Racing and Crash Nitro Kart.
https://fecolinhares.github.io/super-kart-3djs/ — or run it locally (see Running).
A fast, juicy cartoon kart racer in the spirit of the genre's legends — Mario Kart, Sonic & All-Stars Racing and Crash Nitro Kart: drift around banked curves, smash item boxes and use the power-up you get — mushroom boost, homing shell, banana trap, invincibility star or the dreaded lightning bolt — with 6 named characters (Turbo, Comet, Bolt, Daisy, King, Pip), turbo pads, a live minimap and AI rivals with rubber-band, to fight your way from 6th to 1st across 3 laps. 100% procedural — zero external assets, MIT, built on Three.js.
Every visual layer targets a AAA bar: toon-shaded materials with rim lighting, saturated palette, post-processing (bloom + color grade + vignette), particles, squash & stretch, camera shake, procedural sky, animated clouds and crowd. All audio — engine loops, SFX and the music playlist — is synthesized in real time with the Web Audio API (zero asset files).
Beat 5 AI rivals over 3 laps. Drive through item boxes, then use what you get. Drift through corners to charge a mini-boost.
| Action | Keyboard | Touch (mobile) |
|---|---|---|
| Steer | ← / → or A / D |
◀ / ▶ buttons |
| Accelerate | ↑ / W |
Auto-accelerate |
| Brake / reverse | ↓ / S |
— |
| Drift | Shift + steer |
⟳ button while steering |
| Use item | Space |
🎁 ITEM button |
| Pause | P or Esc |
— |
| Restart | R |
— |
Input isolation: on desktop only keyboard works (no touch buttons); on mobile only the touch buttons control the kart. The modes never mix.
- 6 karts with distinct colors, toon materials, animated driver, squash & stretch and drifting with mini-boost (Mario Kart style)
- Full item arsenal: 🍄 Mushroom (speed boost), 🐢 Green Shell (straight shot), 🐢 Red Shell (homing), 🍌 Banana (trap), ⭐ Star (invincible), ⚡ Lightning (shrink rivals)
- 5 AI rivals with progress-anchored navigation (never drives backwards — verified by a deterministic sim harness), AI-vs-AI rubber-banding, personal racing lanes and smart item usage
- 2 tracks (menu switch or
?track=2): SUNNY MEADOW — rolling hills, guard-rails, sponsor boards, field landmarks (pond, hilltop grove, windmill); NEON CITY — night circuit with a 48-tower skyline, lit windows, neon pink/cyan kerbs, concrete sidewalks and glowing street signs - Banked, elevated cartoon track with procedural toon materials, animated clouds, water, palm trees, mountains and crowd
- Post-processing — bloom, saturation/contrast grade and vignette
- Procedural audio — engine pitch, drift, pickups, explosions and a dynamic lo-fi racing playlist (Web Audio, zero files)
- Responsive — desktop keyboard and mobile touch layouts
?demomode — cinematic autopilot camera used for screenshots/QA
npm install
npm run dev # http://localhost:3457Production build:
npm run build # outputs to dist/
npm run preview # serve the production build
npm cirequires a package-lock.json (committed).
- ARCHITECTURE.md — module contracts, file layout, quality gates
- DESIGN.md — visual direction & AAA quality bar
- GDD.md — game design document (vision, mechanics, track, items, balance)
- ART-BIBLE.md — visual identity: palette, materials, motion, HUD rules
- ITEMS-REFERENCE.md — power-up reference
- QA-TEST-PLAN.md — automated test matrix + regression notes
- RELEASE-NOTES.md — v0.1.0 release notes
See CONTRIBUTING.md and our Code of Conduct. Found a security issue? Read SECURITY.md.
MIT © 2026 Feco Linhares
Deterministic headless sims (no browser/WebGL) in scripts/:
node scripts/ai-backwards-test.mjs <seeds> <track 1|2> # AI backwards-driving stress + detection (0 events = pass)
node scripts/lane-probe.mjs <track> <lookahead> [variant] # lane adherence / wall-bounce A/B
node scripts/procession-probe.mjs # standings-change counter (AI-vs-AI rubber band)
node scripts/sk3d-qa.cjs # headless Chromium smoke (?test, boot + page errors)
