Three.js game · Portrait mobile
TAP JUMP ROAD:
A THREE.JS 3D ROAD CROSSING GAME
Tap Jump Road is a free Three.js 3D browser game. Tap to hop across busy roads, swipe to dodge cars and ride logs over rivers. WebGL, no download.
· Game overview · Hosted by Indie Forge Studio
Phones: tap to hop forward, swipe left / right / down to sidestep or step back · Desktop: ↑ W or Space hop, ← → or A / D side, ↓ or S back · P pause · M mute
What Is Tap Jump Road?
Tap Jump Road is a free portrait 3D road crossing game for phones and desktop. Tap to hop your blocky chick forward across an endless world of grassy lanes, busy roads and rivers. Dodge cars and trucks, ride drifting logs over the water, weave between trees and grab gold coins. Your best score is saved on your device.
It is a Three.js game that runs as a 3D browser game on WebGL, developed by Shane Brumback and hosted by Indie Forge Studio, where you can play it at indieforgestudio.com/games/tap-jump-road/. It is free with no download or sign-up.
How to Play Tap Jump Road
- Hop forward: tap anywhere, or press ↑, W or Space.
- Sidestep and step back: swipe left, right or down, or use the arrow keys or A, D and S.
- Dodge traffic: cars and trucks get faster the farther you go. Getting hit squashes you.
- Ride the logs: rivers can only be crossed on drifting logs. Miss a log and you splash; ride one off the edge and you are swept away.
- Keep moving and grab coins: every new lane is a point and each gold coin is worth 5 more, but wait too long and the run ends.
Controls: Phones: tap to hop, swipe to sidestep or step back · Desktop: ↑ / W / Space hop, ← → side, ↓ back · P pause · M mute
How Tap Jump Road Is Built with Three.js
Tap Jump Road is plain JavaScript with no build step. It loads Three.js r160 as an ES module from a local copy of three.module.min.js and draws everything with a single THREE.WebGLRenderer. All the 3D models are built in code from Three.js primitives, so there are no 3D model files to download. Here is what the game code actually does:
- The world is an endless stack of lanes. Each lane is a
THREE.GroupofBoxGeometrystrips for grass, road or water, generated ahead of you and removed once it falls behind. - Trees, cars, trucks, logs and the chick are all built from boxes. Gold coins are thin
CylinderGeometrydiscs with an emissive glow. - A
HemisphereLightand a shadow-castingDirectionalLightlight the scene, withTHREE.Fogfading the far lanes into the sky. - Falling in a river throws a burst of small
SphereGeometrydroplets for the splash effect. - Sound effects are made on the fly with the Web Audio API (
AudioContextoscillators) instead of audio files, and your best score and mute setting are stored inlocalStorage.
Code from Tap Jump Road
These short snippets are copied straight from the game's source code.
Tap to hop, swipe to sidestep
A short tap hops forward, a sideways swipe sidesteps and a downward swipe steps back. Pointer events handle touch and mouse with the same code.
// input: tap = forward, swipe = direction
const fr = $('frame'); let p0 = null;
fr.addEventListener('pointerdown', (e) => { p0 = { x: e.clientX, y: e.clientY }; });
window.addEventListener('pointerup', (e) => {
if (!p0 || core.mode !== 'play') { p0 = null; return; }
const dx = e.clientX - p0.x, dy = e.clientY - p0.y; p0 = null;
if (Math.abs(dx) > 28 && Math.abs(dx) > Math.abs(dy)) tryHop(0, dx > 0 ? 1 : -1);
else if (dy > 36) tryHop(-1, 0);
else tryHop(1, 0);
});
From games/tap-jump-road/game.js, lines 105–114
Renderer setup (shared core.js)
The shared arcade core creates one WebGLRenderer, caps the pixel ratio for phones, and uses a ResizeObserver to keep the canvas and camera aspect matched to the portrait frame.
export function setupRenderer(THREE, canvas, camera, dprCap = 1.75) {
const renderer = new THREE.WebGLRenderer({ canvas, antialias: true, powerPreference: 'high-performance' });
renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, dprCap));
renderer.outputColorSpace = THREE.SRGBColorSpace;
const frame = document.getElementById('frame');
const resize = () => { const w = frame.clientWidth, h = frame.clientHeight; renderer.setSize(w, h, false); camera.aspect = w / h; camera.updateProjectionMatrix(); };
new ResizeObserver(resize).observe(frame); resize();
return renderer;
}
From games/tap-jump-road/core.js, lines 67–75
Built for Mobile and Portrait Play
Tap Jump Road is designed for phones held upright. The game runs in a 9:16 portrait frame, and on desktop it plays in a centered portrait frame. Input uses pointer events, so the same code handles taps, swipes and mouse clicks, with keyboard controls on desktop.
To keep it smooth on phones, the renderer caps the device pixel ratio, and the game pauses itself when you switch tabs or apps. Phones that support it give a short vibration as feedback.
Play Tap Jump Road
Free, in your browser, no download. Hosted by Indie Forge Studio.
More games: Browse all 3D games
Frequently Asked Questions
How do I play Tap Jump Road?
Tap to hop forward one lane. Swipe left or right to sidestep and swipe down to step back. Dodge cars, ride logs across rivers and go as far as you can.
How do I cross the rivers?
Hop onto a drifting log. You ride along with it, so hop forward again before it carries you off the edge. Falling in the water ends the run.
Is Tap Jump Road free and does it work on phones?
Yes. It is free, needs no download and is built portrait-first for phones. On desktop it plays in a centered portrait frame.
How is the score counted?
You score one point for every new lane you reach, and every gold coin adds 5 points. Your best score is saved in your browser with localStorage.
Can I turn the sound off?
Yes. Tap the speaker button or press M to mute. Your choice is remembered.
Is Tap Jump Road built with Three.js?
Yes. Tap Jump Road is a Three.js 3D browser game rendered with WebGL, so it runs in any modern web browser on desktop or mobile with no download or install.
Where can I play Tap Jump Road?
Tap Jump Road is developed by Shane Brumback and hosted by Indie Forge Studio. Play it free at indieforgestudio.com/games/tap-jump-road/.
Can I learn to make a game like this?
Yes. Browse the free Three.js tutorials.








