Amazeme
A torchlit 3D maze, with a Minotaur that hears you coming
A first-person maze lit by a torch, packed into a single HTML file with no dependencies. There are thirty levels from 8×8 to 40×40, a daily challenge that is the same for everyone, and a Minotaur mode: an animated monster roams the corridors, hears the player's footsteps and charges as soon as it spots them, so you have to lure it away with a stone or blast through a wall with a bomb. At the finish, the camera rises and compares your route with the optimal path.
What shines
- Hand-written WebGL 1 engine: bricks, stones, moss and wet flagstones are all computed in the fragment shader, without a single texture; flickering torch, moonlight, fog, starry sky, dust in the beam
- Minotaur animated by a skinning shader written for the occasion, from a Blender model (mesh, weights, 24 animation frames) converted into compact data by a Python script
- Minotaur AI: hearing spreads along the corridors (breadth-first search), line of sight is tested by ray casting on the grid, and the monster follows a state machine of wandering, searching, chasing, stunned and attacking
- Fully synthesized Web Audio sound: low drone, wind, footsteps, impacts, a hum near the exit, a fanfare and convolution reverb
- Continuous camera: a dive from the menu down into the maze, then an overhead view at the finish that traces your route (blue) against the optimal path (gold)
How to use it
Click "Play": ZQSD or arrow keys and mouse on a computer, two thumbs on mobile; C compass, M overview, F Ariadne's thread; in Minotaur mode, E stone, B bomb, Shift sprint.
Made with
- HTML/CSS/JavaScript sans framework (fichier unique)
- WebGL 1 + GLSL écrits à la main
- Web Audio API (dont ConvolverNode)
- Canvas 2D (minicarte)
- Pointer Lock API
- localStorage
- Python + Blender (bpy) pour exporter le modèle 3D
- Google Fonts (Cinzel)