Files
minecraft-clone/README.md
T
2026-06-21 00:50:45 +02:00

69 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Minecraft Clone
Ein browserbasierter Voxel-Sandbox-Clone mit **Three.js** und prozeduraler Weltgenerierung.
Ohne Build-Step – läuft direkt im Browser über CDN-Module.
![Screenshot](screenshot.png)
## 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.