Files

79 lines
2.9 KiB
Markdown
Raw Permalink 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.
🎮 **Live-Demo:** <https://nockal.com/minecraft-clone>
![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
- **Grafik**: dynamische Schatten (PCF Soft), baked Vertex-Ambient-Occlusion
(Smooth Lighting) und Post-Processing (Bloom + ACES Tone-Mapping / sRGB)
## Anpassen
Alle Einstellungen – Render-Distanz, Grafik-Effects (Schatten/Bloom/AO), Beleuchtung,
Spieler-Physik, Welt-Seed, Meereshöhe, Maus-Sensitivität u. a. – liegen zentral in
[`js/config.js`](js/config.js). Werte ändern, Seite neu laden, fertig.
## Steuerung
| Taste | Aktion |
|---|---|
| `WASD` | Laufen |
| `Maus` | Umsehen |
| `Leertaste` | Springen / im Wasser aufsteigen |
| `Shift` | Sprinten / im Flug nach unten |
| `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/config.js` | Zentrale Einstellungen (Grafik, Performance, Spieler, Welt) |
| `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.