Skip to content

⚡ Mesin Time Warp & Akselerasi Tick

📌 Pemberitahuan Sumber Repositori: Dokumentasi dalam Wiki ini mencerminkan kondisi kode sumber terkini dalam repositori, yang mungkin mencakup komit terbaru yang belum dirilis atau fitur dalam pengembangan sebelum rilis publik di CurseForge dan Modrinth.


🔬 Cara Kerja Mesin Time Warp

Terobosan utama True Sleep adalah memisahkan Kecepatan Mesin Server Fisik (engine_tps) dari Kecepatan Waktu Virtual Semu (virtual_tps).

Alih-alih memaksa CPU menjalankan 1.000 tick nyata per detik (yang dapat mengakibatkan lag parah dan terputusnya koneksi), True Sleep menjalankan mesin server pada kecepatan stabil yang dapat disesuaikan (default: $50\text{ TPS}$) dan memajukan waktu dunia menggunakan Pengali Langkah (Stride Multiplier) matematis.


📐 Persamaan Matematika & Rasio Langkah (Stride)

1. Formula Rasio Langkah (Stride Ratio)

Server menghitung berapa banyak tick dunia yang dimajukan per tick mesin fisik: $$\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)$$

  • Contoh dengan Nilai Bawaan:
    • $\text{engine_tps} = 50\text{ TPS}$
    • $\text{virtual_tps} = 1000\text{ TPS}$
    • $\text{Stride} = \frac{1000}{50} = 20\times\text{ langkah}$
    • Hasil: Server berjalan pada 50 tick/detik, memajukan 20 tick dunia per tick fisik, menghasilkan kecepatan semu $1000\text{ TPS}$ hanya dengan 2.5 kali beban CPU normal!

2. Perlambatan Halus Menjelang Pagi

Saat mendekati waktu bangun yang dituju ($\text{dist} < 200\text{ tick}$), mesin warp melambat secara mulus untuk mencegah transisi yang tersentak:

$$\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. Fase Penghentian Bertahap 15-Tick

Jika pemain bangun lebih awal (tempat tidur hancur, pemain beranjak bangun, atau terkena damage), True Sleep memulai perlambatan linear 15-tick alih-alih langsung anjlok ke 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. Skalasi Kecepatan Random Tick (randomTickSpeed)

Pertumbuhan tanaman, pembusukan daun, dan oksidasi tembaga bergantung pada GameRule vanilla randomTickSpeed. True Sleep menskalakan aturan ini secara dinamis selama tidur agar tanaman berkembang sinkron 1:1:

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


5. Penyesuaian Monotonik Jam Dunia

Setelah mencapai waktu bangun, True Sleep memastikan jam dunia diselaraskan maju secara monotonik: $$\text{snappedTime} = \text{currentDay} + \text{wakeTime}$$ $$\text{if } \text{snappedTime} < \text{currentFull} \implies \text{snappedTime} += 24000L$$

Ini menjamin jam dunia tidak akan pernah berputar mundur, melindungi pembacaan sensor cahaya matahari dan datapack berbasis waktu.

Official documentation & web portal for Dasik Igaijinn mods.