SLIM (Model Interaktif Ringan yang Dapat Diskalakan) adalah sistem optimisasi otomatis yang menghasilkan representasi ringan dan dioptimalkan dari Models dan avatar platform menggunakan transcoding berbasis cloud (mengonversi aset menjadi format yang lebih efisien). Ketika diaktifkan, SLIM menggabungkan beberapa bagian menjadi lebih sedikit panggilan gambar (perintah rendering yang dikirim ke GPU) dan menghasilkan beberapa tingkat detail, memungkinkan mesin untuk secara cerdas memilih representasi terbaik berdasarkan jarak, kemampuan perangkat, dan sumber daya yang tersedia.


SLIM memberikan tiga manfaat utama:
- Kualitas visual— Model yang jauh terlihat lebih detail dibandingkan dengan sistem tingkat detail model lama, mempertahankan kesetiaan yang lebih dekat dengan aslinya.
- Transisi konsisten— Semua bagian dalam model beralih tingkat detail secara bersamaan, menghilangkan transisi per bagian yang mengganggu.
- Kinerja— Mesh komposit secara dramatis mengurangi panggilan gambar, jumlah segitiga, dan penggunaan memori, memungkinkan adegan yang lebih kaya di semua tingkat perangkat.
Jelajahi SLIM dalam permainan yang diterbitkan ini:


Prasyarat
SLIM memerlukan hal berikut:
- StreamingEnabled harus diaktifkan pada objek Workspace. Lihat juga properti streaming untuk pengaturan terkait yang disarankan.
- Tempat tersebut harus disimpan ke Roblox (bukan file lokal .rbxl), karena SLIM menggunakan transcoding cloud untuk menghasilkan aset yang dioptimalkan. Jika Anda menguji secara lokal, terbitkan tempat tersebut dan kemudian aktifkan SLIM.
- Team Create harus diaktifkan untuk permainan, karena SLIM bergantung pada properti terkait untuk pembuatan aset cloud.
Perilaku teknis
Ketika Anda menerbitkan atau menguji permainan dengan model yang diaktifkan SLIM, mesin mengunggah data model ke layanan cloud yang menghasilkan mesh komposit yang dioptimalkan dengan beberapa tingkat detail. Pada waktu berjalan, klien mengambil aset ini dari CDN dan mesin memilih tingkat detail yang sesuai berdasarkan jarak dan kemampuan perangkat, mengklasifikasikan setiap model SLIM ke dalam zona rendering berdasarkan jarak dari kamera:

| Jarak | Perilaku |
|---|---|
| Instansi penuh dialirkan; rendering tradisional per bagian. | |
| Instansi penuh dialirkan, tetapi mesin merender komposit SLIM ketika lebih efisien. | |
| Instansi dialirkan keluar (hanya placeholder minimal yang ada di DataModel, bukan seluruh hierarki model), rendering komposit SLIM. | |
| Placeholder minimal di DataModel, tidak dirender. |
SLIM untuk model
SLIM bekerja paling baik pada model yang mewakili geometri dunia statis — bangunan, properti, kendaraan, fitur terrain, dan objek lingkungan lainnya yang tidak berubah pada saat/selama runtime. Menambahkan atau menghapus bagian, mengubah material, atau memodifikasi geometri pada runtime mencegah SLIM merender model dengan benar. Lihat struktur model untuk panduan umum struktur model dan batasan untuk daftar lengkap pengecualian.
Untuk mengaktifkan SLIM pada model, atur propertinya LevelOfDetail ke SLIM di jendela Properties.

Ketika SLIM diatur pada model, mesin:
- Menyerialisasi properti yang relevan untuk rendering model (geometri, material, tekstur, transformasi) menjadi representasi yang kompak. Jenis instansi yang didukung dalam model termasuk Part, MeshPart, Decal, Texture, SurfaceAppearance, PartOperation, NegateOperation, dan SpecialMesh.
- Mengunggah data ini ke layanan transcoding cloud pada publikasi atau permainan pertama.
- Layanan cloud menghasilkan mesh komposit dengan beberapa tingkat detail, menghapus geometri internal yang tersembunyi dan mengoptimalkan tekstur.
- Pada waktu berjalan, klien mengambil aset SLIM yang dioptimalkan dan merendernya ketika mesin mengalirkan model asli atau ketika SLIM lebih efisien daripada model penuh.
Jika permainan Anda menggunakan pengaturan lama StreamingMesh untuk Model.LevelOfDetail, Anda dapat mengonversi model individu dengan memilihnya dan mengubah propertinya di jendela Properties, atau Anda dapat mengonversi beberapa model sekaligus menggunakan skrip seperti berikut di Command Bar. Perhatikan bahwa beberapa model yang bekerja dengan StreamingMesh mungkin memerlukan penyesuaian untuk SLIM, terutama yang memiliki bagian yang tumpang tindih atau hierarki PartOperation yang kompleks.
for _, descendant in workspace:GetDescendants() do
if descendant:IsA("Model") and descendant.LevelOfDetail ==
Enum.ModelLevelOfDetail.StreamingMesh then
descendant.LevelOfDetail = Enum.ModelLevelOfDetail.SLIM
end
endSLIM untuk avatar
Avatar platform di luar area yang sedang dialirkan tidak terlihat secara default. Mengaktifkan avatar SLIM merender karakter pemain standar — terlepas dari berapa banyak aksesori atau lapisan pakaian yang mereka miliki — sebagai pengganti ringan yang dianimasikan yang mempertahankan kesetiaan visual dengan biaya rendering yang jauh lebih rendah.


Properti kunci khusus SLIM untuk avatar adalah Workspace.EnableSLIMAvatars yang harus diatur ke Enabled di jendela Properties, bersamaan dengan LevelOfDetail yang diatur ke SLIM pada model dunia non-avatar Anda.

Dengan EnableSLIMAvatars diaktifkan, mesin:
- Merender versi SLIM ketika model avatar yang sebenarnya dialirkan keluar.
- Beralih antara representasi SLIM dan resolusi penuh berdasarkan sumber daya yang tersedia, bahkan di dalam radius streaming.
- Mengatur animasi SLIM berdasarkan pentingnya adegan dan bandwidth yang tersedia.
Berbeda dengan model SLIM yang dapat Anda uji sendiri dengan menjauh dari model sampai model tersebut dialirkan keluar, avatar SLIM memerlukan beberapa pemain dalam permainan untuk diamati. Gunakan salah satu dari mode pengujian ini untuk menguji avatar SLIM:
- Uji Tim — Bergabunglah dengan teman atau akun alternatif untuk melihat avatar SLIM dari jarak jauh.
- Server dan Klien — Luncurkan dua atau lebih jendela klien di mana setiap klien menampilkan salinan avatar yang dirender oleh klien lain sebagai SLIM ketika berada di jarak jauh.
Perhatikan bahwa avatar harus telah ditranskode dalam permainan yang diaktifkan SLIM sebelum mereka muncul sebagai SLIM. Jika avatar tidak dirender sebagai SLIM dalam pengujian pertama Anda, bergabung kembali ke permainan setelah beberapa saat untuk memungkinkan transcoding selesai.
Batasan
| Batasan | Detail |
|---|---|
| Streaming diperlukan | SLIM hanya berfungsi dengan StreamingEnabled diatur ke true. Tanpa streaming, model yang memenuhi syarat SLIM kembali ke rendering tingkat detail tradisional. |
| Model statis saja | Model SLIM tidak mendukung model yang dimodifikasi pada runtime (bagian ditambahkan/dihapus, properti diubah) atau model yang memainkan animasi. |
| Instansi Humanoid | Mesin mengecualikan model yang mengandung Humanoid dari pemrosesan model SLIM statis. Gunakan avatar SLIM untuk karakter pemain yang dianimasikan. |
| Pembatasan avatar | Avatar SLIM hanya mendukung karakter pemain R15. Rig R6, NPC, dan avatar dengan proporsi kustom kembali ke rendering default. |
| Ketergantungan cloud | Layanan cloud menghasilkan dan menyimpan aset SLIM di CDN. Pengujian offline atau lokal tanpa tempat yang diterbitkan tidak menghasilkan hasil SLIM. |
| Model skala nol | Mesin mengecualikan model dengan Scale sebesar 0 dari pemrosesan SLIM. |
| Ketersediaan platform | Di platform di mana SLIM belum didukung, model yang diatur ke SLIM kembali ke Disabled. |
Pemecahan Masalah
- Verifikasi bahwa StreamingEnabled adalah true.
- Konfirmasi tempat tersebut diterbitkan ke Roblox dan Team Create diaktifkan.
- Periksa bahwa LevelOfDetail diatur ke SLIM untuk model tersebut.
- Tunggu 1–2 menit setelah publikasi pertama untuk menyelesaikan transcoding cloud, lalu bergabung kembali.
- Pastikan model tidak mengandung instansi Humanoid.
Instansi PartOperation untuk pemodelan solid (persatuan, irisan, negasi) mungkin tidak dirender dengan benar dalam beberapa model SLIM. Jika persatuan tampak hilang atau terdistorsi dalam representasi SLIM, coba pisahkan PartOperation yang terpengaruh ke modelnya sendiri atau menyederhanakan operasi CSG.
Z-fighting dapat terjadi ketika bagian dalam model asli memiliki wajah yang tumpang tindih atau coplanar. Untuk menyelesaikan:
- Pindahkan bagian yang tumpang tindih sedikit terpisah (bahkan 0.01 stud sudah cukup).
- Hindari permukaan yang benar-benar rata antara bagian yang berdekatan dalam model yang sama.
SLIM menghasilkan kembali pemetaan UV (bagaimana tekstur diproyeksikan ke permukaan 3D) selama transcoding. Material Roblox default mungkin menunjukkan pola tiling yang sedikit berbeda dibandingkan dengan aslinya. Untuk mengurangi:
- Gunakan tekstur kustom melalui SurfaceAppearance untuk permukaan yang penting.
- Kelompokkan bagian yang secara visual terkait ke dalam model yang sama untuk memastikan tekstur yang konsisten.
- Verifikasi Workspace.EnableSLIMAvatars diatur ke Enabled.
- Uji dengan beberapa klien menggunakan mode pengujian Server dan Klien (memerlukan setidaknya 2 klien).
- Konfirmasi bahwa permainan tidak memodifikasi avatar setelah peristiwa Player.CharacterAppearanceLoaded terjadi.
Animasi tubuh penuh atau jari mungkin kadang-kadang menunjukkan artefak visual karena waktu replikasi tulang. Ini adalah masalah yang diketahui yang sedang diperbaiki. Jika masalahnya parah, verifikasi bahwa skrip animasi tidak memodifikasi transformasi tulang di luar jalur animasi standar.
Panel statistik rendering mungkin melaporkan jumlah segitiga yang tidak akurat ketika avatar SLIM diaktifkan. Ini adalah bug pelaporan yang diketahui dan tidak mempengaruhi kinerja rendering yang sebenarnya.