All games
3D Race

arcade

3D Race

Roll a marble through a physics-driven obstacle course

Roll a physics-driven marble through an endless obstacle course assembled from repeating track blocks. Distance raises the score and combo, while moving barriers cost one of three lives. Gems and temporary shield, speed, and slow-time pickups create short tactical windows before the course recycles ahead.

Play now
Published
Jul 1, 2026

How to play

Controls

  • Use WASD or the arrow keys to roll.
  • Press Space while grounded to jump.
  • On screens below 900 px, use the on-screen direction and jump buttons.

Game features

  • Rapier-based marble physics
  • Endlessly recycled obstacle track
  • Gems, combo scoring, and timed power-ups

Current limitations

  • Coins and the best score are stored in this browser. Run state and active power-ups are not restored after leaving.
  • Desktop layouts require a keyboard; on-screen controls appear only below 900 px.

Gameplay screenshot

A marble rolling toward an animated obstacle with score, lives, combo, and gem counters visible.
A marble rolling toward an animated obstacle with score, lives, combo, and gem counters visible.

Version history

  1. Version 0.1.0

    Initial release

    • Rapier-based marble physics
    • Endlessly recycled obstacle track
    • Gems, combo scoring, and timed power-ups

Jul 2, 2026

A React Three Fiber + Rapier marble runner — kinematic obstacles, grounded jumps, and an infinite level that never allocates

Four things that separate a marble runner that feels good from one that feels off — kinematic bodies driven by setNextKinematicTranslation (not setTranslation), a ray-cast grounded jump that can't be spammed mid-air, an "infinite" level that recycles blocks in place instead of growing an array, and per-frame camera lerp with reused scratch vectors. Straight from the /gamecenter 3D Race source.

Jul 6, 2026

Rapier boots async, your engine boots sync — here's the seam

Rapier's wasm loader returns a Promise, but a three.js render loop starts on `new`. If you naively `await RAPIER.init()` in the constructor, you get a black screen while wasm downloads. If you fire off `.then(...)` and forget about it, your first ticks crash on `world.step` because the world doesn't exist yet. Tank Battle threads this needle with a `physReady` flag, a purely-cosmetic pre-physics render loop, and a check-and-wait "deploy" gate.

Jul 6, 2026

Three ways Rapier tells you two things touched, and when to use which

Rapier surfaces contact detection through three interfaces on top of the same underlying check — the raw event queue, R3F's `onCollisionEnter` prop, and sensor colliders with `onIntersectionEnter`. Same feature, three ergonomics, different tradeoffs. This post walks through each shape with real call sites from Tank Battle and 3D Race, and where each one belongs.

Keep playing

Frequently asked questions

Can I play 3D Race online for free?
Yes. 3D Race is free to play in a modern browser, with no download or installation required.
What kind of interactive game is 3D Race?
3D Race is a arcade interactive browser game. Roll a physics-driven marble through an endless obstacle course assembled from repeating track blocks. Distance raises the score and combo, while moving barriers cost one of three lives. Gems and temporary shield, speed, and slow-time pickups create short tactical windows before the course recycles ahead.
How do I play 3D Race?
Use WASD or the arrow keys to roll.; Press Space while grounded to jump.; On screens below 900 px, use the on-screen direction and jump buttons.

Credits

  • authorMetaWorldOS

Published and maintained by MetaWorldOS. We show release dates, current limitations, credits, and update history so this page reflects the game that is actually playable today.