Skip to content

⚡ Curvatura Temporal y Motor de Aceleración de Ticks

📌 Aviso sobre el código fuente del repositorio: La documentación de esta Wiki refleja el estado actual del código fuente en el repositorio, que puede incluir confirmaciones recientes no publicadas o características en desarrollo antes de los lanzamientos públicos en CurseForge y Modrinth.


🔬 Funcionamiento de la Curvatura Temporal

El avance clave de True Sleep reside en desacoplar la velocidad física del motor del servidor (engine_tps) de la velocidad virtual aparente del tiempo (virtual_tps).

En lugar de forzar a la CPU a procesar 1.000 ticks reales por segundo (provocando severas caídas de rendimiento y desconexiones), True Sleep ejecuta el servidor a una tasa estable y configurable (por defecto: $50\text{ TPS}$) y avanza el reloj del mundo usando un Multiplicador de Paso (Stride) matemático.


📐 Ecuaciones Matemáticas y Razón de Paso

1. Fórmula de la Razón de Paso (Stride)

El servidor calcula cuántos ticks del mundo avanzar por cada tick físico del motor: $$\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)$$

  • Ejemplo con valores predeterminados:
    • $\text{engine_tps} = 50\text{ TPS}$
    • $\text{virtual_tps} = 1000\text{ TPS}$
    • $\text{Stride} = \frac{1000}{50} = 20\times\text{ multiplicador de paso}$
    • Resultado: ¡El servidor funciona a 50 ticks/s avanzando 20 ticks de mundo por tick físico, logrando una velocidad aparente de $1000\text{ TPS}$ con apenas 2.5 veces la carga habitual de CPU!

2. Desaceleración Suave de Llegada al Destino

Al aproximarse a la hora prevista de despertar ($\text{dist} < 200\text{ ticks}$), el motor desacelera gradualmente para evitar transiciones bruscas:

$$\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. Desaceleración Lineal de 15 Ticks al Despertar Prematuro

Si un jugador se despierta antes de tiempo (por rotura de cama, abandono voluntario o recibir daño), True Sleep inicia una transición suave de 15 ticks lineales en lugar de frenar en seco a 20 TPS:

$$\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. Escalado de la Velocidad de Ticks Aleatorios (randomTickSpeed)

El crecimiento de cultivos, la caída de hojas y la oxidación del cobre dependen de la GameRule vanilla randomTickSpeed. True Sleep escala dinámicamente este valor durante el sueño para que los cultivos progresen en sincronía 1 a 1 exacta:

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


5. Ajuste Monótono del Reloj Mundial

Al alcanzar la hora de despertar, True Sleep ajusta el reloj mundial monótonamente hacia adelante: $$\text{snappedTime} = \text{currentDay} + \text{wakeTime}$$ $$\text{if } \text{snappedTime} < \text{currentFull} \implies \text{snappedTime} += 24000L$$

Esto garantiza que el tiempo jamás retroceda, manteniendo la integridad de sensores de luz solar y datapacks temporales.

Official documentation & web portal for Dasik Igaijinn mods.