Astray
A 3D maze game built with Three.js and Box2D physics. Roll a steel ball through ...
Astray
📖 How to Play
Hold I to read the instructions. Steer the ball with the arrow keys, or H J K L if you prefer Vim. The ball has real momentum — tap rather than hold. Reach the exit to advance; the maze grows every time.
📚 Complete Game Guide
Astray
Astray is a 3D maze game by Tyler Whittle. You are a steel ball in a procedurally generated maze, and the only way out is through it. Every time you reach the exit, the maze regenerates two cells larger in each direction and a new level begins — so it starts trivially and does not stop getting harder.
The renderer is Three.js (an older bundled build) and the physics is Box2DWeb, the JavaScript port of Box2D. The ball has real momentum: it rolls, it keeps rolling, and friction is the only thing that stops it.
How to Play
- Hold I to read the on-screen instructions.
- Steer the ball with the arrow keys.
- Vim users: H J K L work too.
- Reach the glowing exit tile at the far corner of the maze.
- The level counter increments and the maze grows. Keep going.
Controls
- ← → ↑ ↓ — apply force toward that direction
- H J K L — Vim-style movement (same as the arrow keys)
- I — hold to show the instructions overlay
- Mouse — unused; the game is keyboard-driven
Tips
- Because momentum carries, tap-and-release steering works far better than holding a direction. Over-committing sends you into a wall and you have to roll back out.
- The camera follows the ball with a slight lag and eases its zoom, so a wide swing across the maze is more efficient than careful edge-hugging.
Save Data
Nothing is saved. Every load generates a fresh maze.
Open Source & License
Astray was created by Tyler Whittle (wwwtyro) and is released under The Unlicense — it is in the public domain.
- Original game source: https://github.com/wwwtyro/Astray
- Original live build: http://wwwtyro.github.io/Astray/
This integration self-hosts that build so it runs entirely in your browser. The only change was rewriting three texture paths from root-absolute to document-relative so the art loads when the game is embedded at a sub-path.
🎮 Controls
Share This Game
🎮 Related Games
Tower Defense
An isometric 3D tower defence built with Three.js and a physically-based material pipeline. Place and upgrade three turret types along a terrain path, and stop each wave before it reaches your base.
Jungle Trail
A first-person walk through a procedurally generated jungle trail into overgrown stone ruins and a waterfall. Built in Three.js with zero external art assets — every texture, mesh, and sound is generated in code. No objectives, no score: just explore.
Zoko
Sokoban in three dimensions. Push every crate onto its platform, in as few steps as you can manage.
Trigger Rally
A fast-paced arcade rally racer built with Three.js and WebGL. Drift around hairpin corners and blast through checkpoints in a rally car that wants to leave the road.
💬 Comments
Coming soon! Sign in to leave a comment.