2.4 KiB
2.4 KiB
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://):
cd minecraft-clone
python3 -m http.server 8080
# Browser: http://localhost:8080
Das Projekt liegt unter
…/stacks/web/html/minecraft-cloneund 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.
