{"id":50770491,"url":"https://github.com/nicolachoquet06250/minecraft-webxr","last_synced_at":"2026-06-11T18:01:07.964Z","repository":{"id":362316656,"uuid":"1257950511","full_name":"nicolachoquet06250/minecraft-webxr","owner":"nicolachoquet06250","description":"Un clone de Minecraft open-source développé avec Babylon.js et Rust (WebAssembly), conçu pour fonctionner dans le navigateur avec un support expérimental pour la Réalité Virtuelle (WebXR) et les contrôles mobiles.","archived":false,"fork":false,"pushed_at":"2026-06-10T18:03:54.000Z","size":7668,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-10T20:04:06.458Z","etag":null,"topics":["chatgpt","codex","github-copilot","junie","meta-quest","meta-quest-3","minecraft","rust","typescript","vitejs","vr","xr"],"latest_commit_sha":null,"homepage":"https://minecraft-xr.nicovers06.fr","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nicolachoquet06250.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-03T06:30:58.000Z","updated_at":"2026-06-10T15:29:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"0b999543-10de-4524-904a-e38f3b580ab4","html_url":"https://github.com/nicolachoquet06250/minecraft-webxr","commit_stats":null,"previous_names":["nicolachoquet06250/minecraft-webxr"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/nicolachoquet06250/minecraft-webxr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicolachoquet06250%2Fminecraft-webxr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicolachoquet06250%2Fminecraft-webxr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicolachoquet06250%2Fminecraft-webxr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicolachoquet06250%2Fminecraft-webxr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nicolachoquet06250","download_url":"https://codeload.github.com/nicolachoquet06250/minecraft-webxr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicolachoquet06250%2Fminecraft-webxr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34211067,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chatgpt","codex","github-copilot","junie","meta-quest","meta-quest-3","minecraft","rust","typescript","vitejs","vr","xr"],"created_at":"2026-06-11T18:01:07.144Z","updated_at":"2026-06-11T18:01:07.956Z","avatar_url":"https://github.com/nicolachoquet06250.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Minecraft WebXR\n\nUn clone de Minecraft open-source développé avec **Babylon.js** et **Rust (WebAssembly)**, conçu pour fonctionner dans le navigateur avec un support expérimental pour la Réalité Virtuelle (WebXR) et les contrôles mobiles.\n\n![screenshot](.github/screenshots/screenshot.png)\n\n| Environnement | Lien                                       |\n|---------------|--------------------------------------------|\n| Staging       | https://staging.minecraft-xr.nicovers06.fr |\n| Production    | https://minecraft-xr.nicovers06.fr         |\n\n| Documentation Technique                                          | Guide de jeu                                                                |\n|------------------------------------------------------------------|-----------------------------------------------------------------------------|\n| https://nicolachoquet06250.github.io/minecraft-webxr/README.html | https://nicolachoquet06250.github.io/minecraft-webxr/game-guide/README.html |\n\n## 🚀 Fonctionnalités\n\n-   **Moteur de Voxel Performant** : Utilisation de Rust via WebAssembly pour la génération de chunks et le bruit (noise) afin de garantir des performances optimales.\n-   **Rendu 3D avec Babylon.js** : Un moteur de rendu puissant pour gérer les meshes de chunks, l'éclairage, les interfaces Babylon GUI et les effets visuels.\n-   **Génération Procédurale** : Mondes générés dynamiquement à l'aide d'un algorithme de bruit, avec chargement progressif des chunks autour du joueur.\n-   **Support Multi-plateforme** :\n    -   **Clavier/Souris** : Contrôles classiques (ZQSD + Souris), verrouillage du pointeur et interactions au clic.\n    -   **Mobile** : Commandes tactiles adaptées avec joysticks virtuels, boutons d'action et interface de craft.\n    -   **WebXR** : Support de la réalité virtuelle pour une immersion totale avec contrôleurs VR.\n-   **Physique \u0026 Interaction** : Système de physique pour le joueur, collision avec les blocs, auto-jump, placement de blocs et mécanique de destruction progressive.\n-   **Système d'Inventaire** : Barre d'inventaire, sélection de slot, objets lâchés (dropped items) et ramassage automatique.\n-   **Système de Craft** : Interface de craft en surimpression avec grille 3x3, inventaire, résultat de recette et drag \u0026 drop.\n-   **Blocs \u0026 Items** : Définitions modulaires des blocs, items, textures procédurales 16x16, minerais, blocs naturels, arbres, plantes, blocs décoratifs et laines.\n-   **Eau** : Blocs d'eau non pleins en hauteur avec shader dédié, effet de légères vagues et effet de plouf lorsque le joueur entre dans l'eau.\n-   **Plantes 3D** : Chargement de modèles 3D pour certaines plantes comme les poppies.\n-   **PWA** : Support Progressive Web App avec service worker, mise à jour automatique et fonctionnement hors ligne lorsque l'application est prête.\n\n## 🛠️ Stack Technique\n\n-   **Frontend** : TypeScript, Vite.js\n-   **Moteur 3D** : Babylon.js, Babylon.js GUI, Babylon.js Loaders\n-   **Core (Calculs)** : Rust (compilé en WASM via `wasm-pack`)\n-   **Serveur Multi-joueur** : Rust (serveur autoritaire WebSocket)\n-   **Mathématiques \u0026 Bruit** : `noise` crate (Rust)\n-   **PWA** : `vite-plugin-pwa`\n-   **Tests \u0026 Outillage** : TypeScript, Playwright, Cargo tests\n\n## 📦 Installation \u0026 Développement\n\n### Prérequis\n\n-   [Node.js](https://nodejs.org/) (v24+)\n-   [Rust \u0026 Cargo](https://rustup.rs/)\n-   [`wasm-pack`](https://rustwasm.github.io/wasm-pack/installer/)\n\n### Étapes d'installation\n\n1.  **Cloner le dépôt** :\n    ```bash\n    git clone https://github.com/nicolachoquet06250/minecraft-webxr.git\n    cd minecraft-webxr\n    ```\n\n2.  **Installer les dépendances Node.js** :\n    ```bash\n    npm install\n    ```\n\n3.  **Lancer le serveur de développement** :\n    ```bash\n    npm run dev\n    ```\n    *Cette commande compilera automatiquement le code Rust en WebAssembly et lancera le serveur Vite.*\n\n### Commandes disponibles\n\n-   `npm run dev` : Compile le WASM et lance le serveur de dev.\n-   `npm run build` : Compile le WASM, le TypeScript et génère le build de production dans `dist/`.\n-   `npm run build:wasm` : Compile uniquement la partie Rust/WASM.\n-   `npm run dev:server` : Lance le serveur Rust multi-joueur (`server/`).\n-   `npm run check:server` : Vérifie la compilation du serveur Rust.\n-   `npm run build:server` : Build le serveur Rust en release.\n-   `npm run preview` : Prévisualise le build de production localement.\n\n## 🕹️ Contrôles\n\n| 💻 Desktop                                                                                            | 📱 Mobile                                                                                                    | 🥽 VR (WebXR)                                                                                                                           |\n| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |\n| **Déplacement** : `Z` `Q` `S` `D` / `W` `A` `S` `D` ou touches fléchées.                               | **Déplacement** : Joystick virtuel à gauche de l'écran.                                                      | **Activation** : Cliquer sur l'icône VR en bas à droite ou lancer le jeu directement en mode VR depuis le menu compatible.               |\n| **Sauter** : `Espace`.                                                                                 | **Regarder** : Joystick virtuel à droite de l'écran.                                                         | **Déplacement** : Joystick / touchpad du contrôleur gauche.                                                                              |\n| **Regarder** : Souris (cliquer pour verrouiller le pointeur).                                          | **Sauter** : Bouton dédié à droite.                                                                          | **Orientation** : Suivi naturel du casque WebXR.                                                                                         |\n| **Détruire un bloc** : Clic gauche maintenu.                                                           | **Détruire un bloc** : Bouton dédié à droite avec l'icône pioche.                                            | **Sauter** : Bouton `A` du contrôleur droit.                                                                                             |\n| **Placer un bloc** : Clic droit.                                                                       | **Placer un bloc** : Bouton dédié à gauche.                                                                  | **Détruire un bloc** : Trigger droit avec le rayon du contrôleur droit.                                                                  |\n| **Craft** : `E` pour ouvrir/fermer l'interface de craft, `Échap` pour fermer.                          | **Craft** : Bouton `Craft` en haut à droite.                                                                 | **Placer un bloc** : Trigger gauche avec le rayon du contrôleur gauche.                                                                  |\n| **Craft - Drag \u0026 Drop** : Clic gauche pour déplacer 1 item, clic droit pour déplacer le stack complet. | **Craft - Drag \u0026 Drop** : Interactions tactiles sur l'inventaire, la grille de craft et le slot de résultat. | **Inventaire VR** : Barre d'inventaire dédiée au mode VR, attachée au corps du joueur et sélectionnable avec les rayons des contrôleurs. |\n|                                                                                                        |                                                                                                              | **Pointeur central** : Masqué en mode VR.                                                                                                |\n\n## 📂 Structure du projet\n\n-   `src/` : Code source TypeScript (Babylon.js, événements, contrôles).\n-   `src/blocks/` : Définitions modulaires des blocs et de leurs textures procédurales.\n-   `src/items/` : Définitions des items, outils et icônes d'inventaire.\n-   `src/crafts/` : Recettes de craft et patterns associés.\n-   `wasm/` : Code source Rust (génération de chunks, logique bas niveau).\n-   `server/` : Serveur Rust autoritaire (état map en mémoire, lobbies et WebSocket).\n-   `public/` : Assets statiques.\n\n## 📚 Anexes\n\nLogiciel de modélisation des models 3D voxels: [voxigen](https://voxigen.io/fr/modeler)\n\n## 📄 Licence\n\nCe projet est sous licence [MIT](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicolachoquet06250%2Fminecraft-webxr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnicolachoquet06250%2Fminecraft-webxr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicolachoquet06250%2Fminecraft-webxr/lists"}