Amazeme
Un labyrinthe 3D à la torche, avec un Minotaure qui t'entend venir
Un labyrinthe en vue subjective, éclairé à la torche, qui tient dans un seul fichier HTML sans aucune dépendance. Trente niveaux de 8×8 à 40×40, un défi du jour identique pour tous, et un mode Minotaure : un monstre animé erre dans les couloirs, entend les pas du joueur et charge dès qu'il l'aperçoit. Il faut alors l'attirer ailleurs avec une pierre ou faire sauter un mur à la bombe. À l'arrivée, la caméra s'élève et compare le trajet parcouru au chemin optimal.
Ce qui brille
- Moteur WebGL 1 écrit à la main : briques, pierres, mousse et dalles humides sont calculées dans le fragment shader, sans aucune texture ; torche qui vacille, clair de lune, brouillard, ciel étoilé, poussière dans le faisceau
- Minotaure animé par un shader de skinning écrit pour l'occasion, à partir d'un modèle Blender (maillage, poids, 24 images d'animation) converti en données compactes par un script Python
- IA du Minotaure : l'ouïe se propage le long des couloirs (parcours en largeur), la ligne de vue est testée par lancer de rayon sur la grille, et le monstre suit une machine à états errance, recherche, chasse, sonné, attaque
- Sons entièrement synthétisés en Web Audio : nappe grave, vent, pas, chocs, bourdon près de la sortie, fanfare et réverbération par convolution
- Caméra en continu : plongeon depuis le menu jusque dans le labyrinthe, puis vue de survol à l'arrivée qui trace votre trajet (bleu) face au chemin optimal (or)
Mode d'emploi
Cliquer « Jouer » : ZQSD ou flèches et souris sur ordinateur, deux pouces sur mobile ; C boussole, M survol, F fil d'Ariane ; en mode Minotaure, E pierre, B bombe, Maj sprint.
Fabriqué avec
- 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)