Sistem tidur

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Setiap kumpulan di dalam Mesin Roblox sesuai dengan satu tubuh kaku.Posisi dan kecepatan masing-masing tubuh kaku menjelaskan di mana lokasinya dan seberapa cepat bergerak, dan salah satu tugas mesin utama adalah untuk memperbarui posisi dan kecepatan masing-masing kumpulan.

Kumpulan dapat terhubung bersama dengan batasan mekanis dan batasan penggerak untuk membentuk mekanisme seperti mobil atau pesawat terbang.Sebagai jumlah assemblies dan keterbatasan dalam mekanisme meningkat, waktu yang diperlukan untuk menyimulasikan mekanisme juga meningkat.Untungnya, peningkatan ini dikompensasikan ketika sistem tidur menentukan bahwa mesin dapat melewati simulasi assemblasi non-bergerak .

Status tidur

Setiap assemblasi dapat berada di salah satu dari tiga negara: bangun , memeriksa tidur , atau tidur .

Bangun

Sebuah assemblasi terbangun bergerak atau mempercepat, dan karena itu disimulasikan.Kumpulan memasuki keadaan ini dari situasi yang dijelaskan dalam memeriksa tidur dan tidur , serta situasi bangun tambahan .

Pemeriksaan tidur

Sebuah kumpulan yang tidak bergerak yang berbagi keterbatasan dengan setidaknya satu bangun kumpulan tetangga ditempatkan ke dalam status pemeriksaan tidur dan tidak disimulasikan.Pada setiap langkah dunia, pengumpulan pemeriksaan tidur memeriksa apakah:

Jika salah satu dari kondisi ini benar, atau di bawah salah satu situasi bangun tambahan , kumpulan pemeriksaan tidur memasuki keadaan terjaga.

Tidur

Sebuah assemblasi tidur tidak bergerak atau mempercepat , dan karena itu tidak disimulasikan.

Sebuah assemblasi ditentukan untuk tidak bergerak dengan memeriksa deviasi posisinya , dihitung sebagai deviasi maksimum dari posisi rata-rata dari titik paling jauh dari pusat massanya selama set paling baru dari langkah dunia.Jika kelalaian ini lebih besar dari ambang batas Penyebaran, kumpulan memasuki keadaan terjaga.

Dalam beberapa kasus, hanya memeriksa non-gerakan akan menyebabkan kumpulan masuk ke keadaan tidur dengan cara yang salah.Sebagai contoh, jika bola dilemparkan langsung ke atas, posisinya hampir tidak berubah untuk beberapa langkah dunia saat mendekati ketinggian maksimalnya, sehingga menjadikannya kandidat untuk tidur dan tidak pernah jatuh kembali.Untuk menangani kasus seperti itu, mesin memantau apakah produk dari akselerasi dan langkah waktu saat ini dari kumpulan melebihi ambang batas Kecepatan Linier dan/atau Kecepatan Sudut.

Referensi ambang batas

Tabel berikut memberikan ambang batas penyebaran dan kecepatan yang berbeda yang digunakan untuk menentukan apakah kumpulan bergerak atau mempercepat.

Ambang BatasNilainyaPerubahan negara
Pengusiran Tetangga0,01 studmemeriksa tidurterjaga
Kecepatan Linier Tetangga0,2 stud/detikmemeriksa tidurterjaga
Kecepatan Sudut Tetangga0,2 radian/detikmemeriksa tidurterjaga
Penggantian0,001 studtidurbangun
Kecepatan Linier0,1 stud/detiktidurbangun
Kecepatan Sudut0,1 radian/detiktidurbangun

Situasi bangun tambahan

Selain situasi yang dibahas dalam memeriksa tidur dan tidur, sebuah assembler memasuki keadaan terjaga saat:

Debug visualisasi

Selama pengujian permainan, Anda dapat memvisualisasikan status tidur pengumpulan dengan menyalakan bagian terjaga dari widget Opsi Visualisasi di sudut kanan atas tampilan 3D.

A close up view of the 3D viewport with the Visualization Options button indicated in the upper-right corner.

Setelah diaktifkan, bagian yang disimulasikan akan diuraikan oleh status tidur mereka saat ini, dengan bagian terbangun bagian yang diuraikan dalam warna merah, bagian pemeriksaan tidur bagian yang diuraikan dalam warna oranye, dan bagian tidur bagian yang tidak diuraikan.

Suku cadang yang disimulasikan ditunjukkan oleh warna yang mewakili keadaan tidur mereka saat ini