// Konstanten const GAME_WIDTH = 800; const GAME_HEIGHT = 400; const GRAVITY = 0.6; const JUMP_POWER = -12; const HIGH_JUMP_POWER = -16; const GROUND_Y = 350; const BASE_SPEED = 5.0; const CHUNK_SIZE = 60; const TARGET_FPS = 60; const MS_PER_TICK = 1000 / TARGET_FPS; // RNG Klasse class PseudoRNG { constructor(seed) { this.state = BigInt(seed); } nextFloat() { const a = 1664525n; const c = 1013904223n; const m = 4294967296n; this.state = (this.state * a + c) % m; return Number(this.state) / Number(m); } nextRange(min, max) { return min + (this.nextFloat() * (max - min)); } pick(array) { if (!array || array.length === 0) return null; const idx = Math.floor(this.nextRange(0, array.length)); return array[idx]; } }