Skip to content

⚡ Zeitraffer-Engine & Tick-Beschleunigung

📌 Hinweis zum Quellcode des Repositorys: Die Dokumentation in diesem Wiki spiegelt den aktuellen Quellcode-Zustand im Repository wider, der neuere, unveröffentlichte Commits oder Entwicklungsfunktionen vor den öffentlichen Release-Builds auf CurseForge und Modrinth enthalten kann.


🔬 Funktionsweise des Zeitraffers (Time Warp)

Der entscheidende Durchbruch von True Sleep liegt in der Entkopplung der physischen Server-Geschwindigkeit (engine_tps) von der scheinbaren virtuellen Zeitgeschwindigkeit (virtual_tps).

Anstatt die CPU zu zwingen, 1.000 echte Spiel-Ticks pro Sekunde abzuarbeiten (was extreme Server-Lags und Timeouts zur Folge hätte), läuft der Server unter True Sleep mit einer stabilen, konfigurierbaren Rate (Standard: $50\text{ TPS}$) und schiebt die Spielzeit mit einem mathematischen Schrittweiten-Multiplikator (Stride) voran.


📐 Mathematische Formeln & Schrittweiten-Verhältnis

1. Berechnungsformel für die Schrittweite

Der Server berechnet, wie viele Weltzeit-Ticks pro physischem Server-Tick vorgerückt werden: $$\text{Physical Target} = \min(\text{engine_tps}, \text{targetRate})$$ $$\text{Stride} = \max\left(1, \text{round}\left(\frac{\text{targetRate}}{\text{Physical Target}}\right)\right)$$

  • Beispiel mit Standardeinstellungen:
    • $\text{engine_tps} = 50\text{ TPS}$
    • $\text{virtual_tps} = 1000\text{ TPS}$
    • $\text{Stride} = \frac{1000}{50} = 20\times\text{ Schrittweite}$
    • Ergebnis: Der Server läuft mit 50 Ticks/s und rückt pro Takt 20 Welt-Ticks vor. So wird eine scheinbare Geschwindigkeit von $1000\text{ TPS}$ mit lediglich 2,5-facher normaler CPU-Last erreicht!

2. Sanftes Abbremsen vor dem Aufwachen

Kurz vor Erreichen der Zielaufwachzeit ($\text{dist} < 200\text{ Ticks}$) bremst der Zeitraffer gleichmäßig ab, um ruckartige Übergänge zu verhindern:

$$\text{progress} = \max\left(0.0, \min\left(1.0, \frac{\text{dist} - 20}{180}\right)\right)$$ $$\text{targetRate} = 20.0 + (\text{virtual_tps} - 20.0) \times \text{progress}$$


3. 15-Tick-lineares Auslaufen bei vorzeitigem Aufwachen

Wird das Schlafen vorzeitig unterbrochen (Bett zerstört, Spieler steht auf oder erleidet Schaden), bremst True Sleep in einem sanften 15-Tick-Übergang ab, statt abrupt auf 20 TPS zurückzufallen:

$$\text{progress} = \frac{\text{decelerateTicks}}{15.0}$$ $$\text{currentRate} = 20.0 + (\text{lastWarpRate} - 20.0) \times \text{progress}$$ $$\text{stride} = \max(1, \text{round}(1 + (\text{lastWarpStride} - 1) \times \text{progress}))$$


4. Skalierung der Zufalls-Tick-Geschwindigkeit (randomTickSpeed)

Pflanzenwachstum, Laubzerfall und Kupferoxidation basieren auf der nativen GameRule randomTickSpeed. True Sleep skaliert diese Regel während des Schlafs proportional, damit Farmen exakt 1:1 synchron mitwachsen:

$$\text{newRandomSpeed} = \min(500, \text{originalRandomTickSpeed} \times \text{stride})$$


5. Monotone Uhrzeitausrichtung

Nach Erreichen der Aufwachzeit rastet die Weltzeit streng monoton nach vorne ein: $$\text{snappedTime} = \text{currentDay} + \text{wakeTime}$$ $$\text{if } \text{snappedTime} < \text{currentFull} \implies \text{snappedTime} += 24000L$$

Dadurch dreht sich die Weltzeit niemals rückwärts, wodurch Tageslichtsensoren und zeitgesteuerte Datenpakete stabil bleiben.

Official documentation & web portal for Dasik Igaijinn mods.