feat: Minecraft Clone MVP – prozedurale Welt, Blöcke, Abbauen/Setzen

- Weltgenerierung: FBM-Terrain, 3 Biome (Plains/Wald/Wüste), Höhlen, Wasser, Bäume
- Blöcke: Grass, Dirt, Stein, Sand, Holz, Blätter, Wasser (+Bedrock)
- Interaktion: DDA-Voxel-Raycast, Abbauen (LMB) & Setzen (RMB), Hotbar 1-6
- Spieler: First-Person, Gravitation, AABB-Kollision, Springen, Fly-Mode (F)
- Engine: Chunk-Streaming (16x16x64), Face-Culling, opaker+transparenter Pass
- Stack: Three.js + simplex-noise via CDN, prozedurale Texturen, kein Build-Step

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
minecraft-cloneandClaude committed 2026-06-20 23:55:12 +02:00
commit 1049253d54
15 files changed
+1436

No files matched your search

+66
View File
@@ -0,0 +1,66 @@
# 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.