// ============================================================ // CONFIG — alle einstellbaren Werte für den Minecraft Clone // ============================================================ // Hier kannst du Aussehen, Performance, Welt und Spieler- // verhalten anpassen. Strukturelle Engine-Konstanten // (Chunk-Größen, Block-IDs, Textur-Atlas) liegen in // constants.js und sollten NICHT geändert werden (sonst // drohen Mesh/Storage-Fehler). // // Nach jeder Änderung: Seite HARD-REFRESHEN (Ctrl+Shift+R), // damit der Browser die Module nicht aus dem Cache lädt. // ============================================================ import * as THREE from 'three'; // ──────────────────────────────────────────────────────────── // 🌍 WELT // ──────────────────────────────────────────────────────────── export const WORLD_SEED = 1337; // gleicher Seed = gleiche Welt. Beliebige ganze Zahl. export const SEA_LEVEL = 26; // Höhe der Wasseroberfläche (muss < CHUNK_HEIGHT=64 bleiben) // Spawn-Position (X/Z in Blöcken; Y wird automatisch auf den Boden gesetzt). export const SPAWN = { x: 8, z: 8 }; // ──────────────────────────────────────────────────────────── // ⚡ PERFORMANCE // ──────────────────────────────────────────────────────────── export const RENDER_DISTANCE = 6; // Chunk-Radius um den Spieler (höher = weiter sichtbar, mehr Last) export const MAX_OPS_PER_FRAME = 2; // Chunk-Generierung/Meshing pro Frame (höher = lädt schneller, ruckelt eher) export const MAX_PIXEL_RATIO = 2; // Cap der Gerät-Pixelratio (2 = scharf; 1 = schneller auf HiDPI-Screens) // ──────────────────────────────────────────────────────────── // 🎨 RENDERER & TONE-MAPPING // ──────────────────────────────────────────────────────────── export const ANTIALIAS = true; // MSAA direkt am Renderer (Kantenglättung ohne Composer) export const MSAA_SAMPLES = 4; // MSAA-Stufen im Post-Processing-Composer (WebGL2; 0 = aus) export const TONE_MAPPING = THREE.ACESFilmicToneMapping; // "Color Grading". Alternativen: THREE.Linear / Reinhard / Cineon export const TONE_MAPPING_EXPOSURE = 1.1; // globale Helligkeit (höher = heller). ACES dunkelt leicht ab. // ──────────────────────────────────────────────────────────── // 🌫️ HIMMEL & NEBEL // ──────────────────────────────────────────────────────────── export const SKY_COLOR = 0xaaccff; // Hintergrund- und Nebelfarbe export const FOG_NEAR = 64; // Block-Distanz, ab der Nebel einsetzt (≈ (RENDER_DISTANCE-2)*16) export const FOG_FAR = 96; // Block-Distanz, ab der Nebel ganz undurchsichtig ist (≈ RENDER_DISTANCE*16) // Hinweis: bei Änderung von RENDER_DISTANCE FOG_NEAR/FOG_FAR passend nachziehen. // ──────────────────────────────────────────────────────────── // 📷 KAMERA // ──────────────────────────────────────────────────────────── export const CAMERA_FOV = 72; // Sichtfeld in Grad (höher = weiterer Blickwinkel / Fisheye) export const CAMERA_NEAR = 0.1; export const CAMERA_FAR = 1000; // ──────────────────────────────────────────────────────────── // 💡 BELEUCHTUNG // ──────────────────────────────────────────────────────────── export const HEMISPHERE = { sky: 0xbfdfff, ground: 0x5a6b3a, intensity: 1.05 }; // weiche Aufhellung von oben/unten export const SUN = { color: 0xfff4d6, intensity: 1.2 }; // gerichtetes Hauptlicht // Sonnenrichtung (wird intern normalisiert). Bestimmt, aus welcher Seite Licht/Schatten kommen. export const SUN_DIRECTION = [0.55, 0.72, 0.42]; // ──────────────────────────────────────────────────────────── // 🌑 SCHATTEN // ──────────────────────────────────────────────────────────── export const SHADOWS_ENABLED = true; export const SHADOW_MAP_SIZE = 2048; // Schatten-Textur-Auflösung (höher = schärfer + mehr Last; 1024/2048 typisch) export const SHADOW_AREA = 44; // halbe Kantenlänge des Schatten-Frustums um den Spieler (Blöcke) export const SHADOW_BIAS = 0.0002; // gegen "Shadow Acne" (strichartige Selbstschatten) export const SHADOW_NORMAL_BIAS = 0.02; // gegen Acne auf Voxelflächen (in Normalenrichtung verschieben) // ──────────────────────────────────────────────────────────── // ✨ POST-PROCESSING (Bloom / Glanz) // ──────────────────────────────────────────────────────────── export const BLOOM_ENABLED = true; export const BLOOM = { strength: 0.4, radius: 0.5, threshold: 0.55 }; // strength = Glanz-Stärke (höher = stärkeres Leuchten) // radius = Ausbreitung des Glanzes // threshold = nur Pixel HELLER als dieser Wert glühen (niedriger = mehr glüht) // ──────────────────────────────────────────────────────────── // 🔲 AMBIENT OCCLUSION (Eck-Verdunkelung = "Smooth Lighting") // ──────────────────────────────────────────────────────────── // AO-Stufe pro Vertex: Index 0 = stärkste Verdeckung (dunkelste Ecke), // 3 = keine Verdeckung. Niedrigere Werte = dunklere Ecken/Kanten. export const AO_LEVEL = [0.2, 0.4, 0.5, 1.8]; // ──────────────────────────────────────────────────────────── // 🚶 SPIELER (Physik & Dimensionen) // ──────────────────────────────────────────────────────────── export const PLAYER = { HALF: 0.3, // halbe Spielerbreite (X/Z) — AABB-Kollisionskasten HEIGHT: 1.8, // Körperhöhe EYE: 1.62, // Augenposition über den Füßen GRAVITY: 26, // Fallbeschleunigung (Blöcke/s²) JUMP_VEL: 8.6, // Sprung-Startgeschwindigkeit WALK: 4.7, // Laufgeschwindigkeit (Blöcke/s) SPRINT: 7.2, // Sprintgeschwindigkeit (Shift) FLY_SPEED: 9.5, // Fluggeschwindigkeit (F-Modus) MAX_FALL: 50, // max. Fallgeschwindigkeit (Terminal-Speed) }; // ──────────────────────────────────────────────────────────── // 🖱️ STEUERUNG // ──────────────────────────────────────────────────────────── export const MOUSE_SENSITIVITY = 0.0022; // Maus-Look-Empfindlichkeit (höher = schnellere Drehung) // ──────────────────────────────────────────────────────────── // 🎯 GAMEPLAY // ──────────────────────────────────────────────────────────── export const REACH = 6; // Reichweite für Abbauen/Bauen (Blöcke)