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

2.4 KiB
Raw Blame History

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

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-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.