Par Pierre Grardel Minecraft Experience est une experience en 3D WebGL avec Three.js reprenant le concept du jeux vidéo sandbox Minecraft
- Faire un petit
npm i
pour importer Gulp et ses plugins nécessaires pour la compilation - Complier a la racine avec
gulp build
ounpm run build
- Lancer un serveur en local pour éviter des erreurs cross origin
- Se rendre dans le dist pour lancer Minecraft Experience
- HTML
- CSS
- JS
- Minecraft font
- Three.js
- TweenJS
- OBJLoader
- FirstPerson (fortement modifié et adapté au projet)
- BloomBlendPass (Shader)
- On peut cuir un steak mais il faut avant mettre un charbon dans le four
- Il faut attendre quelques minutes pour la cuisson
- Lorsque ce steak est cuit on peut le manger
- On peut manger une pomme
- On peut prendre dans notre main tous les objets (par terre, au mur, dans les cadres, dans les coffres) et les reposer un peu où on veut
- On peut allumer/éteindre des torches
- Particules (customs) et sons aléatoires de feux pour les fours et les torches
- On peut changer la musique principale du jeu en changeant le disque du Juxebox
- Création du background avec une projection sphérique d'une image à la "Streetview"
- Déplacement de la camera avec ZQSD ou WASD ou les flèches
- Mouvement de la caméra par la souris
- Utilisation de FirstPerson pour le controle de la caméra
- FirstPerson modifié pour ajouter un système de collision
- Activation/desactivation du son avec M (état sauvegardé en localstorage)
- Utilisation du gestionnaire de son avec spatialisation de Three.js
- Cependant Three.js gère mal l'audio et de nombreux problèmes sonores peuvent arriver. Cela est prinipallement du à la volonté de Three d'optimisé la lecture du son par un buffer avec une mise en cache (cependant très instable) qui surcharge la mémoire alloué à cette page.
- Je n'ai malheuresement pas eu le temps de partir sur une solution alternative (autre bibliothèque avec spatialisation à recodé)
- Accès aux commandes en appuyant sur Échap
- Possibilité de dormir pour passer en mode nuit/jour
- Utilisation du raycasting pour récupérer les objets visés et lancer des interactions
- Globalement le projet à été coder en objet pour permetre facilemment l'ajout de nouveaux blocks, items et autres interactions mais aussi pour créer d'autres pièces avec un agencement différent
- Utilisation de Font custom Minecraft
- Ajout d'un shader bloom pour adoucir le rendu
- Je pense par la suite ajouter un loader pour charger les textures, sons, obj, etc.
- Mais aussi ajouter beaucoup d'autres interactions très fun
- Je m'excuse vraiment pour le rendu sonore suite aux nombreux bugs de Three.js