explaingit

panterathehacker/marble-runner

15TypeScriptAudience · developerComplexity · 4/5ActiveLicenseSetup · moderate

TLDR

Browser game that drops a Mixamo character into a Marble Gaussian splat world, with WASD movement, Rapier physics, and a Claude Code onboarding flow for custom worlds.

Mindmap

mindmap
  root((marble-runner))
    Inputs
      Marble splat file
      Avaturn or Mixamo avatar
      WASD and mouse
    Outputs
      Playable 3D scene
      Character animations
      Physics collisions
    Use Cases
      Walk through Marble worlds
      Show off custom splats
      Learn splat plus physics
    Tech Stack
      TypeScript
      Vite
      Three.js
      Spark
      Rapier3D

Things people build with this

USE CASE 1

Walk through a Gaussian splat world in third person from a browser

USE CASE 2

Drop your own Marble .spz world into the game with a Claude Code prompt

USE CASE 3

Swap in a custom Mixamo or Avaturn character with idle, walk, run, and jump

USE CASE 4

Study how Three.js plus Spark renders splats alongside Rapier3D physics

Tech stack

TypeScriptViteThree.jsRapier3D

Getting it running

Difficulty · moderate Time to first run · 30min

Custom worlds need a Marble .spz file plus a hand-scaffolded physics collider; the Claude Code prompt automates this.

MIT lets you use, modify, and share the code freely as long as you keep the copyright notice.

In plain English

Marble Runner is a small browser game that lets you walk around inside a Gaussian splat world in third-person. A Gaussian splat is a relatively new way of representing a 3D scene from photographs, popularized in 2023, that produces very photo-real results. World Labs is a company that runs Marble, a service for generating such worlds. This project takes a Marble world file and drops a controllable character into it so you can walk, run, and jump through the scene. The README points to a hosted version at marble-runner.vercel.app where you can play without installing anything. You pick one of five default worlds, choose a character, or make your own using the Avaturn avatar creator in about a minute. Movement is the standard WASD plus Shift to run and Space to jump, with mouse drag for the camera and Tab to open a debug panel. If you have generated your own world in Marble, the README suggests an unusual onboarding path: open Claude Code and paste a prompt that tells the AI assistant to clone the repo, install dependencies, start the dev server, and set up your splat file under a chosen name. The assistant creates a folder under public/worlds, copies the .spz splat file in, scaffolds a flat physics collider so the character has something to stand on, writes a meta.json, and restarts the server. The project is built with TypeScript and Vite. Rendering uses Three.js with Spark 2.0 from World Labs to handle the splat format. Physics uses Rapier3D with a kinematic character controller. Character models are standard Mixamo GLB files with idle, walk, run, and jump animations. The license is MIT, and the README notes Mixamo characters are free for commercial use.

Copy-paste prompts

Prompt 1
Set up marble-runner locally with Vite and play the hosted default world list at marble-runner.vercel.app
Prompt 2
Use the Claude Code onboarding prompt from marble-runner to import my own .spz splat under public/worlds
Prompt 3
Replace the default character in marble-runner with a Mixamo GLB and wire up idle, walk, run, and jump animations
Prompt 4
Explain how marble-runner uses Rapier3D's kinematic character controller against a flat scaffolded collider
Prompt 5
Show me how Spark 2.0 from World Labs is initialized in marble-runner to render the splat scene with Three.js
Open on GitHub → Explain another repo

Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.