Keller-Dev
Docs
· Java & Hytale
Übersicht
Neuer Eintrag
Eintrag bearbeiten
Titel *
Kategorie *
Java Core
Java OOP
Java Advanced
Plugin-System
Event-System
UI-System
Sonstiges
Erklärung / Inhalt *
Eine while(true)-Schleife ohne Bremse läuft auf jedem Rechner unterschiedlich schnell. Um eine konstante Spielgeschwindigkeit zu garantieren, wird die verstrichene Zeit gemessen (System.nanoTime()) und in festen Zeitschritten abgearbeitet. Kernkonzepte: Fixed Timestep: Die Logik updatet in festen Abständen (z. B. 60 Updates/s). Multi-Threading: Der Loop läuft in einem eigenen Thread (Runnable), um die Benutzeroberfläche nicht zu blockieren. Threading-Safety: UI-Neuzeichnungen werden nicht direkt aus dem Loop aufgerufen, sondern über repaint() an den Event Dispatch Thread (EDT) übergeben.
Code-Beispiel (optional)
// Entnommen aus GameLoop.java @Override public void run() { long lastTime = System.nanoTime(); double accumulatedTime = 0; while (running) { long now = System.nanoTime(); double elapsed = now - lastTime; lastTime = now; accumulatedTime += elapsed; while (accumulatedTime >= NS_PER_UPDATE) { update(NS_PER_UPDATE / 1_000_000_000.0); // Delta-Time in Sekunden accumulatedTime -= NS_PER_UPDATE; } gamePanel.repaint(); // Abgabe an EDT sleepBriefly(); } }
Referenz-Datei / Projekt (optional)
Referenz-Klasse / Interface (optional)
Quellen-Link (optional)
Tags (durch Komma getrennt)
Änderungen speichern
Abbrechen