Streaming instance

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

Dalam permainan streaming instance memungkinkan mesin Roblox untuk memuat dan membongkar konten 3D dan instance terkait di Workspace secara dinamis. Ini dapat meningkatkan pengalaman pemain secara keseluruhan dalam beberapa cara, termasuk:

  • Waktu Bergabung Lebih Cepat
    — Pemain dapat mulai bermain di satu bagian dunia sementara lebih banyak dunia dimuat di latar belakang.
  • Efisiensi Memori
    — Permainan dapat dimainkan di perangkat dengan memori lebih sedikit karena konten dimuat secara dinamis. Dunia yang lebih imersif dan detail dapat dimainkan di berbagai perangkat.
  • Kinerja yang Ditingkatkan
    — Frame rate dan kinerja yang lebih baik, karena server dapat menghabiskan lebih sedikit waktu dan bandwidth untuk menyinkronkan perubahan antara dunia dan pemain di dalamnya. Klien menghabiskan lebih sedikit waktu untuk memperbarui instance yang tidak relevan dengan pemain saat ini.
  • Tingkat Detail
    — Ketika dikonfigurasi, model jauh, avatar platform, dan terrain tetap terlihat bahkan ketika mereka tidak dialirkan ke klien, menjaga permainan tetap teroptimasi tanpa mengorbankan visual latar belakang sepenuhnya. SLIM menyediakan tingkat detail dengan fidelitas tertinggi untuk model dan avatar.

Streaming instance dikendalikan melalui properti Workspace.StreamingEnabled, yang diaktifkan secara default untuk tempat baru yang dibuat di Studio. Properti ini tidak dapat diatur dalam skrip.

Jendela Properties dengan properti StreamingEnabled diaktifkan.

Perilaku teknis

Lingkup

Logika dan fitur streaming berlaku secara eksklusif untuk instance yang merupakan keturunan dari Workspace, sementara instance yang disimpan di kontainer lain seperti ReplicatedStorage dan ReplicatedFirst tidak memenuhi syarat untuk streaming. Misalnya, menempatkan model atomik di bawah ReplicatedStorage tidak menjamin replikasi atomik.

Streaming masuk

Ketika seorang pemain bergabung dengan permainan dengan streaming instance diaktifkan:

  1. Instance di Workspace direplikasi ke klien kecuali yang berikut:

    Models yang diatur ke Nonatomik (default) ketika Workspace.ModelStreamingBehavior diatur ke Improved

    Keturunan dari instance di atas

  2. Selama permainan, server dapat melakukan streaming instance dalam kategori yang ditunda di atas ke klien berdasarkan properti streaming permainan, posisi pemain, kinerja perangkat klien, dan kondisi lainnya.

Streaming keluar

Selama permainan, klien dapat menghapus wilayah BaseParts dari Workspace pemain berdasarkan perilaku yang ditetapkan oleh Workspace.StreamOutBehavior. Proses dimulai dengan wilayah yang paling jauh dari fokus replikasi dan bergerak lebih dekat, sesuai kebutuhan. Wilayah di dalam jangkauan Workspace.StreamingMinRadius tidak pernah dialirkan keluar.

Perhatikan bahwa Model tanpa keturunan BasePart, seperti yang digunakan hanya sebagai "kontainer" untuk instance non-BasePart seperti skrip, dibebaskan dari streaming keluar kecuali jika ia dijadikan keturunan dari BasePart.

Perakitan

Perakitan fisik dialirkan masuk sebagai unit lengkap, termasuk Constraints dan Attachments terkait, membantu memastikan pembaruan fisika yang konsisten di klien. Satu-satunya pengecualian adalah ketika perakitan tersebut dijepit, dalam hal ini hanya BaseParts dalam jangkauan streaming yang dialirkan masuk bersama dengan Constraints dan Attachments terkait.

Perakitan tidak dialirkan keluar sampai semua BaseParts mereka memenuhi syarat untuk dialirkan keluar.

Properti streaming

Properti berikut mengontrol bagaimana streaming instance diterapkan pada permainan Anda. Semua properti ini adalah tidak dapat diprogram dan harus diatur pada objek Workspace di Studio.

PropertiDeskripsi
EnableSLIMAvatarsMengontrol apakah model SLIM dihasilkan untuk karakter avatar dalam permainan. Ketika diaktifkan, avatar dirender menggunakan SLIM dengan cara yang sama seperti pengaturan Model.LevelOfDetail ke SLIM bekerja untuk model lainnya. Lihat SLIM untuk detailnya.
ModelStreamingBehaviorMengontrol bagaimana model Nonatomik (default) dialirkan masuk dan keluar.

DIREKOMENDASIKAN
Gunakan Improved untuk mengaktifkan streaming yang paling efisien untuk Models dengan keturunan BasePart.
PredictiveStreamingModeMemilih untuk menggunakan streaming prediktif yang menggunakan sinyal mesin untuk secara proaktif melakukan streaming area yang kemungkinan akan dibutuhkan pemain segera, seperti lokasi respawn atau wilayah yang baru saja ditinggalkan pemain melalui perubahan CFrame. Prediksi bersifat aditif, kedaluwarsa setelah waktu singkat jika tidak digunakan, dan dilewati pada klien yang terbatas sumber daya.
StreamingIntegrityModePermainan mungkin berperilaku dengan cara yang tidak diinginkan jika seorang pemain bergerak ke wilayah dunia yang belum dialirkan kepada mereka. Properti ini menawarkan cara untuk menghindari situasi yang berpotensi bermasalah.

DIREKOMENDASIKAN
Gunakan PauseOutsideLoadedArea untuk menyeimbangkan integritas gameplay tanpa menghentikan secara tidak perlu atau terlalu sering. Anda juga dapat menyesuaikan layar jeda.
StreamingMinRadiusProperti ini menunjukkan radius di sekitar fokus replikasi di mana instance dialirkan masuk dengan prioritas tertinggi. Perhatian harus diambil saat meningkatkan default, karena melakukannya akan memerlukan lebih banyak memori dan lebih banyak bandwidth server dengan mengorbankan komponen lainnya.

DIREKOMENDASIKAN
Gunakan default 64 untuk memaksimalkan seberapa banyak mesin dapat mengurangi ukuran permainan untuk perangkat kelas rendah.
StreamingTargetRadiusProperti ini mengontrol jarak maksimum dari fokus replikasi di mana instance dialirkan masuk. Perhatikan bahwa mesin diizinkan untuk mempertahankan instance yang telah dimuat sebelumnya di luar radius target, jika memori memungkinkan.

Radius StreamingTargetRadius yang lebih kecil mengurangi beban kerja server, karena server tidak akan melakukan streaming instance tambahan di luar nilai yang ditetapkan. Namun, radius target juga merupakan jarak maksimum yang dapat dilihat pemain dari detail penuh permainan Anda, jadi Anda harus memilih nilai yang menciptakan keseimbangan yang baik antara ini.

DIREKOMENDASIKAN
Gunakan default 1024 untuk mencapai keseimbangan yang baik antara visibilitas untuk pemain di perangkat kelas tinggi dan jejak memori yang wajar.
StreamOutBehaviorProperti ini mengatur perilaku streaming keluar sesuai dengan nilai Enum.StreamOutBehavior. Jika diatur ke LowMemory (default), klien hanya melakukan streaming keluar wilayah di luar radius minimum dalam situasi memori rendah. Jika diatur ke Opportunistic, wilayah di luar StreamingTargetRadius dapat dihapus di klien bahkan ketika tidak ada tekanan memori (dalam mode ini, klien tidak pernah menghapus instance yang berada dalam radius target, kecuali dalam situasi memori rendah).

DIREKOMENDASIKAN
Gunakan Opportunistic untuk memungkinkan klien secara agresif mengumpulkan sampah konten, secara signifikan mengurangi penggunaan memori dan membantu mencegah kerusakan karena kehabisan memori.

Fokus replikasi

Secara default, streaming terjadi di sekitar PrimaryPart karakter pemain lokal, meskipun Anda dapat menentukan titik fokus replikasi yang berbeda melalui Player.ReplicationFocus.

Anda juga dapat menambahkan dan menghapus fokus replikasi tambahan melalui Player:AddReplicationFocus() dan Player:RemoveReplicationFocus() untuk secara dinamis mengaktifkan streaming di beberapa area permainan.

Simulasi fisika sisi klien, termasuk prediksi dan resimulasi ketika otoritas server diterapkan, hanya terjadi di area yang dialirkan, bahkan untuk instance yang dibuat secara lokal dan untuk instance Persistent. Jika Anda memiliki instance yang ingin Anda terus simulasikan bahkan ketika mereka jauh dari karakter, buat fokus replikasi tambahan di dekat instance tersebut.

Streaming prediktif

Streaming prediktif adalah fitur opt-in yang menggunakan sinyal mesin untuk memperkirakan pergerakan pemain dan secara proaktif melakukan streaming area yang kemungkinan akan dibutuhkan pemain segera. Ketika diaktifkan dengan mengatur PredictiveStreamingMode ke Enabled, ini dapat mengurangi jeda streaming dan visual pop-in tanpa perubahan kode.

Streaming prediktif bersifat aditif. Ini membuat fokus streaming kecil dan sementara di samping fokus replikasi yang ada, melakukan streaming sedikit konten tambahan, dan tidak mengubah logika permainan atau kontrak streaming Anda. Jika prediksi tidak diperlukan, area yang diprediksi kedaluwarsa setelah waktu singkat dan mesin membongkar konten. Mesin juga mempertimbangkan memori dan kinerja klien, melewatkan prediksi pada perangkat yang terbatas sumber daya.

Ketika PredictiveStreamingMode adalah Enabled, fitur prediktif berikut aktif:

FiturDeskripsi
Pra-pengambilan spawnKetika seorang pemain mati, mesin membuat fokus streaming kecil dan sementara di lokasi respawn yang mungkin sehingga area respawn yang mungkin mulai dialirkan sebelum karakter pemain muncul, mengurangi jeda dan konten yang hilang segera setelah respawn.
Optimisasi pengembalian CFrameKetika seorang pemain CFrames menjauh dari suatu area, mesin membuat fokus streaming kecil dan sementara di lokasi yang mereka tinggalkan. Ini membantu menjaga area tersebut tetap dialirkan jika pemain kembali segera setelahnya, skenario umum saat bergerak antara bangunan, sublevel, toko, atau pusat.

Kontrol streaming model

Untuk menghindari masalah dengan streaming pada basis per-model dan meminimalkan penggunaan WaitForChild(), Anda dapat menyesuaikan bagaimana Models dan keturunannya dialirkan melalui properti ModelStreamingMode.

Nonatomik

Secara default, model adalah Nonatomic dan mereka dialirkan masuk/keluar berdasarkan apakah Workspace.ModelStreamingBehavior diatur ke Legacy (default) atau Improved.

Legacy

Ketika Workspace.ModelStreamingBehavior diatur ke Legacy (default), kontainer Model dan keturunan non-BasePart seperti Scripts direplikasi ke klien ketika pemain bergabung. Kemudian, ketika memenuhi syarat, keturunan BasePart model dialirkan masuk.

Ditingkatkan

Ketika Workspace.ModelStreamingBehavior diatur ke Improved, perilaku streaming model bervariasi tergantung pada apakah model tersebut mengandung keturunan BasePart atau tidak:

  • Model dengan keturunan BasePart hanya dialirkan masuk ketika satu dari keturunan BasePart memenuhi syarat untuk dialirkan masuk. Pada saat itu, model dan BasePart yang memenuhi syarat dialirkan masuk, bersama dengan keturunan non-BasePart model.

    Ketika BasePart terakhir yang tersisa dari model dialirkan keluar, model itu sendiri akan dialirkan keluar bersamanya.

  • Model tanpa keturunan BasePart, seperti yang digunakan hanya sebagai "kontainer" untuk instance non-BasePart seperti skrip, direplikasi ke klien segera setelah pemain bergabung. Jenis model ini dibebaskan dari streaming keluar kecuali jika ia dijadikan keturunan dari BasePart.

Atomik

Jika Model diatur ke Atomic, semua keturunan awalnya dialirkan masuk bersama ketika keturunan BasePart memenuhi syarat untuk dialirkan masuk. Akibatnya, skrip sisi klien yang perlu mengakses instance di dalam model harus menggunakan WaitForChild() pada model itu sendiri, tetapi tidak pada keturunan MeshPart atau Part karena mereka dikirim bersamaan dengan model.

Model atomik hanya dialirkan keluar ketika semua bagian keturunannya memenuhi syarat untuk dialirkan keluar, pada titik mana seluruh model dialirkan keluar bersama.

Diagram yang menunjukkan streaming model Atomik bersama dengan anak-anak.

Persisten

Model Persistent tidak tunduk pada streaming masuk atau keluar normal. Mereka dikirim sebagai unit atomik lengkap segera setelah pemain bergabung dan sebelum acara Workspace.PersistentLoaded dipicu. Model persistensi dan keturunannya tidak pernah dialirkan keluar, tetapi untuk menangani streaming masuk dengan aman dalam skrip sisi klien, Anda harus menunggu acara PersistentLoaded dipicu.

Diagram yang menunjukkan streaming model Persisten bersama dengan anak-anak.

PersistenPerPemain

Model yang diatur ke PersistentPerPlayer berperilaku sama seperti Persistent untuk pemain yang telah ditambahkan menggunakan Model:AddPersistentPlayer(). Untuk pemain lain, perilakunya sama seperti Atomic. Anda dapat mengembalikan model dari persistensi pemain melalui Model:RemovePersistentPlayer().

Kustomisasi layar jeda

Dengan asumsi Workspace.StreamingIntegrityMode diatur ke PauseOutsideLoadedArea yang direkomendasikan, permainan akan terhenti jika seorang pemain bergerak ke wilayah dunia yang belum dialirkan kepada mereka. Dalam kasus ini, properti Player.GameplayPaused menunjukkan status jeda pemain saat ini yang dapat digunakan dengan koneksi GetPropertyChangedSignal() untuk menampilkan atau menyembunyikan GUI kustom.

LocalScript
local Players = game:GetService("Players")
local GuiService = game:GetService("GuiService")
local player = Players.LocalPlayer
-- Nonaktifkan modal jeda default
GuiService:SetGameplayPausedNotificationEnabled(false)
local function onPauseStateChanged()
if player.GameplayPaused then
-- Tampilkan GUI kustom
else
-- Sembunyikan GUI kustom
end
end
player:GetPropertyChangedSignal("GameplayPaused"):Connect(onPauseStateChanged)

Debugging runtime

Mesin menyertakan beberapa panel debug di layar yang dapat diaktifkan di klien menggunakan pintasan keyboard. Untuk mengakses informasi debug streaming:

  1. Buka overlay debug Ringkasan Jaringan melalui ShiftCtrlF3 (Windows) atau ShiftF3 (Mac).
  2. Setelah overlay debug terbuka, tekan Shift1 berulang kali untuk beralih di antara panel yang tersedia. Panel keempat adalah tampilan debug Streaming yang menampilkan informasi runtime yang berguna:
    • Pengaturan streaming aktif
    • Wilayah yang saat ini dimuat (dialirkan masuk)
    • Perilaku dan status streaming

Setelah diaktifkan, wilayah yang disorot berwarna muncul di viewport 3D:

WarnaDeskripsi
Kurang dari StreamingMinRadius
Lebih besar dari atau sama dengan StreamingMinRadius dan kurang dari StreamingTargetRadius
Sama dengan StreamingTargetRadius
Lebih besar dari StreamingTargetRadius
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.