Three.js game · Portrait mobile
SNAKE GLIDE 3D:
A THREE.JS 3D SNAKE GAME
Snake Glide 3D is a free Three.js 3D browser game. Tap left or right to turn, eat glowing orbs, grow long and chain combos for points. Built with WebGL.
· Game overview · Hosted by Indie Forge Studio
Phones: tap the left / right side to turn · Desktop: ← → or A / D · P pause · M mute
What Is Snake Glide 3D?
Snake Glide 3D is a free portrait 3D snake game for phones and desktop. Your snake glides forward on its own, and you tap the left or right side of the screen to turn. Eat glowing orbs to grow, chain them quickly for a multiplier and grab the gold gem before it fades. Hit a wall or your own tail and the run ends. 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. It is free with no download or sign-up.
How to Play Snake Glide 3D
- Turn: tap the left half of the screen to turn left and the right half to turn right, relative to where the snake is heading. On a keyboard use the arrow keys or A and D.
- Eat orbs: each pink orb is worth points and makes the snake one segment longer.
- Chain: eat the next orb within 3 seconds to raise your chain multiplier, up to x5.
- Grab the gold: every 5th orb drops a gold gem worth 5 times the points; it blinks and vanishes after a few seconds.
- Stay clear: the snake speeds up as it grows. Hitting a wall or your own body ends the run.
Controls: Phones: tap the left / right side to turn · Desktop: ← → or A / D · P pause · M mute
How Snake Glide 3D Is Built with Three.js
Snake Glide 3D 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 checkered board is a
BoxGeometrywith aCanvasTextureon its top face only, and the walls are thin box meshes around the edge. - Body segments share one
SphereGeometryfrom a reused pool. Each frame they are placed between their previous and current grid cells, so the snake glides smoothly instead of jumping from square to square. - The head is a larger sphere with sphere eyes. Orbs are flat-shaded
IcosahedronGeometrymeshes and the gold gem is anOctahedronGeometry. - Turn taps go into a short queue of up to two moves, so quick double taps are not lost between grid steps.
- 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 Snake Glide 3D
These short snippets are copied straight from the game's source code.
Tap left or right to turn
A tap on the left half turns left and the right half turns right. Turns go into a queue of up to two moves.
function turn(d) { if (S.queue.length < 2) S.queue.push(d); core.beep(620, 0.03, 'triangle', 0.03); }
function onAction(ev) {
if (!ev) return; const r = $('frame').getBoundingClientRect();
turn(ev.clientX < r.left + r.width / 2 ? -1 : 1);
}
From games/snake-glide/game.js, lines 40–44
One grid step
Each step applies the next queued turn, checks the walls and the snake's own body, then moves the head and grows or drops the tail.
function stepSnake() {
if (S.queue.length) S.dir = (S.dir + S.queue.shift() + 4) % 4;
const [dx, dz] = DIRS[S.dir]; const h = S.body[0]; const nx = h[0] + dx, nz = h[1] + dz;
S.prev = S.body.map((b) => b.slice());
const tailFree = S.grow === 0;
const hitsSelf = S.body.some((b, i) => b[0] === nx && b[1] === nz && !(tailFree && i === S.body.length - 1));
if (nx < 0 || nz < 0 || nx >= W || nz >= H || hitsSelf) { die(); return; }
S.body.unshift([nx, nz]); S.prev.unshift([h[0], h[1]]);
if (S.grow > 0) { S.grow--; } else { S.body.pop(); S.prev.pop(); }
if (S.orb && nx === S.orb[0] && nz === S.orb[1]) eat(false);
From games/snake-glide/game.js, lines 61–70
Built for Mobile and Portrait Play
Snake Glide 3D 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 touch and mouse, 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 Snake Glide 3D
Free, in your browser, no download. Hosted by Indie Forge Studio.
More games: Browse all 3D games
Frequently Asked Questions
How do I play Snake Glide 3D?
The snake moves forward by itself. Tap the left or right side of the screen to turn 90 degrees that way, or use the arrow keys or A and D on a keyboard. Eat orbs to grow and score.
How does the chain multiplier work?
Every orb you eat within 3 seconds of the last one raises your chain, multiplying the points, up to x5. Gold gems are worth five times a normal orb.
Is Snake Glide 3D 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.
Is my best score saved?
Yes. Your best score is saved in your browser with localStorage, so it is still there next time you play on the same device.
Can I turn the sound off?
Yes. Tap the speaker button or press M to mute. Your choice is remembered.
Is Snake Glide 3D built with Three.js?
Yes. Snake Glide 3D 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.
Who hosts Snake Glide 3D?
Snake Glide 3D is developed by Shane Brumback and hosted by Indie Forge Studio. You can play it free on its game page.
Can I learn to make a game like this?
Yes. Browse the free Three.js tutorials.








