# Minecraft Clone Ein browserbasierter Voxel-Sandbox-Clone mit **Three.js** und prozeduraler Weltgenerierung. Ohne Build-Step – läuft direkt im Browser über CDN-Module. ## Starten Einfach `index.html` über einen lokalen Webserver öffnen (ES-Module brauchen `http://`, kein `file://`): ```bash cd minecraft-clone python3 -m http.server 8080 # Browser: http://localhost:8080 ``` > Das Projekt liegt unter `…/stacks/web/html/minecraft-clone` und wird i. d. R. schon > vom Web-Stack ausgeliefert. ## Features - **Weltgenerierung** - FBM-Terrain (fraktaler Noise) - **Biome**: Plains, Wald, Wüste (über Temperatur-/Feuchtigkeit-Noise) - **Höhlen** über 3D-Noise - **Wasser** auf Meereshöhe - **Bäume** (Stamm + Blattkrone), chunk-übergreifend - **Blöcke**: Grass, Dirt, Stein, Sand, Holz, Blätter, Wasser, Bedrock - **Abbauen** (Linke Maustaste) und **Setzen** (Rechte Maustaste) per DDA-Voxel-Raycast - **Streaming**: Chunks werden um den Spieler dynamisch geladen/entfernt - First-Person-Steuerung mit Gravitation, Kollision, Springen, **Fly-Modus** & Schwimmen ## Steuerung | Taste | Aktion | |---|---| | `WASD` | Laufen | | `Maus` | Umsehen | | `Leertaste` | Springen / im Wasser aufsteigen | | `Shift` | im Fly nach unten | | `Strg` | Sprinten | | `Linke Maustaste` | Block abbauen | | `Rechte Maustaste` | Block setzen | | `1`–`6` | Block in der Hotbar wählen | | `F` | Flug-Modus ein/aus | | `Esc` | Maus freigeben / Pause | ## Architektur | Datei | Verantwortlichkeit | |---|---| | `index.html` / `style.css` | Markup, UI (Overlay, Hotbar, Crosshair, HUD), Importmap | | `js/constants.js` | Block-/Biome-/Atlas-Konstanten, Tile-Mapping | | `js/rng.js` | Seeded PRNG (mulberry32) + Hashes | | `js/noise.js` | Noise-Funktionen (Terrain, Biome, Höhlen) + FBM | | `js/textures.js` | Prozeduraler 16×16-Texturatlas | | `js/worldgen.js` | Terrain, Biome, Höhlen, Wasser, Bäume | | `js/mesher.js` | Face-Culling-Meshing → opake + transparente Geometrie | | `js/world.js` | Chunk-Storage, Block-Zugriff, Streaming, Mesh-Verwaltung | | `js/player.js` | Bewegung, Gravitation, AABB-Kollision, Fly/Schwimmen | | `js/raycast.js` | DDA-Voxel-Raycast (Amanatides & Woo) | | `js/input.js` | Tastatur-/Maus-Input + Pointer-Lock | | `js/main.js` | Scene/Renderer/Licht, Game-Loop, Interaktion, HUD | ## bewusst weggelassen (Out of Scope) Crafting, Gegner/NPCs, Erze.