Oyun içindeki örnek akışı, Roblox motorunun Workspace içindeki 3D içeriği ve ilgili örnekleri dinamik olarak yükleyip boşaltmasına izin verir. Bu, oyuncu deneyimini birçok açıdan iyileştirebilir, bunlar arasında:
- Daha Hızlı Katılma Süreleri— Oyuncular, arka planda daha fazla dünya yüklenirken dünyanın bir kısmında oynamaya başlayabilir.
- Hafıza Verimliliği— İçeriğin dinamik olarak giriş-çıkış yapması sayesinde, daha az hafızaya sahip cihazlarda oyun oynanabilir. Daha etkileşimli ve ayrıntılı dünyalar, daha geniş bir cihaz yelpazesinde oynanabilir.
- Geliştirilmiş Performans— Sunucu, dünya ve içindeki oyuncular arasında değişiklikleri senkronize etmek için daha az zaman ve bant genişliği harcadığı için daha iyi kare hızları ve performans sağlar. İstemciler, mevcut olmayan örnekleri güncellemeye daha az zaman harcar.
- Ayrıntı Düzeyi— Yapılandırıldığında, uzak modeller, platform avatarları ve arazi, istemcilere akıtılmadıkları zaman bile görünür kalır; bu da arka plan görsellerinden tamamen feragat etmeden oyunun optimize edilmesini sağlar.
Örnek akışı, varsayılan olarak Studio'da oluşturulan yeni yerlerde etkinleştirilen Workspace.StreamingEnabled özelliği aracılığıyla kontrol edilir. Bu özellik bir betikte ayarlanamaz.

Teknik davranış
Kapsam
Akış mantığı ve özellikleri yalnızca Workspace'ın alt öğeleri olan örneklere uygulanır; ReplicatedStorage ve ReplicatedFirst gibi diğer konteynerlerde saklanan örnekler akış için uygun değildir. Örneğin, ReplicatedStorage altında bir atomik model yerleştirmek atomik çoğaltmayı garanti etmez.
Akışa Alma
Bir oyuncu örnek akışı etkinleştirilmiş bir oyuna katıldığında:
Workspace içindeki örnekler istemciye çoğaltılır hariç aşağıdakiler:

Models Atomik, Sürekli, veya Oyuncu Başına Sürekli olarak ayarlanmış; model başına akış kontrolüne bakın.

Models Workspace.ModelStreamingBehavior Improved olarak ayarlandığında Atomik Olmayan (varsayılan) olarak ayarlanmış.

Yukarıdaki örneklerin alt öğeleri
Oyun sırasında sunucu, yukarıda belirtilen ertelenmiş kategorilerdeki örnekleri istemciye oyun içeriğinin akış özelliklerine, oyuncunun konumuna, istemci cihazının performansına ve diğer koşullara göre akıtabilir.
Akıştan Çıkarma
Oyun sırasında, bir istemci, oyuncunun Workspace'ından BaseParts bölgelerini Workspace.StreamOutBehavior tarafından ayarlanan davranışa göre kaldırabilir. İşlem, çoğaltma odaklarına en uzak bölgelerden başlayarak gerektiğinde daha yakına doğru ilerler. Workspace.StreamingMinRadius aralığında kalan bölgeler asla akıtılmaz.
BasePart alt öğesi olmayan bir Model, örneğin yalnızca betik gibi BasePart olmayan örnekler için bir "konteyner" olarak kullanılan bir model, kaldırma işlemlerinden muaf kalır eğer bir BasePart alt öğesi haline getirilmezse.
Montajlar
Fiziksel montajlar içeri alınır tam birim olarak, ilişkili Constraints ve Attachments ile birlikte, istemcilerde tutarlı fizik güncellemeleri sağlamaya yardımcı olur. Tek istisna, montajın sabit olması durumudur; bu durumda yalnızca akış yarıçapında bulunan BaseParts akıtılır ve ilişkili Constraints ve Attachments ile birlikte akıtılır.
Montajlar, tüm BaseParts akış dışı bırakılma için uygun hale gelene kadar akıştan çıkmaz.
Akış özellikleri
Aşağıdaki özellikler, örnek akışının oyununuzda nasıl uygulanacağını kontrol eder. Bu özelliklerin tamamı betiklenemez ve Studio'daki Workspace nesnesinde ayarlanmalıdır.

| Özellik | Açıklama |
|---|---|
| EnableSLIMAvatars | Oyun içindeki avatar karakterler için bir SLIM modelinin oluşturulup oluşturulmayacağını kontrol eder. Etkinleştirildiğinde, avatarlar Model.LevelOfDetail'i SLIM olarak ayarlamanın diğer modeller için nasıl çalıştığı gibi SLIM kullanarak işlenir. |
| ModelStreamingBehavior | Atomik Olmayan (varsayılan) modellerin nasıl akıtılacağını ve boşaltılacağını kontrol eder. TAVSİYE EDİLEN Models'deki BasePart alt öğeleri için en verimli akışı etkinleştirmek için Improved kullanın. |
| StreamingIntegrityMode | Oyuncu, akış yapılmamış bir bölgeye hareket ederse oyun istemeden davranışlar sergileyebilir. Bu özellik, bu potansiyel sorunları önlemek için bir yol sunar. TAVSİYE EDİLEN PauseOutsideLoadedArea kullanarak oyun içi bütünlüğü doğru bir şekilde dengeleyebilirsiniz; böylece gereksiz yere veya çok sık duraksamamış olursunuz. Ayrıca duraklatma ekranını özelleştirebilirsiniz. |
| StreamingMinRadius | Bu özellik, örneklerin en yüksek öncelikle akıtıldığı çoğaltma odakları etrafındaki yarıçafı gösterir. Varsayılanı artırırken dikkat edilmelidir; çünkü bu, daha fazla hafıza ve diğer bileşenlerin aleyhine daha fazla sunucu bant genişliği gerektirecektir. TAVSİYE EDİLEN Düşük seviye cihazlar için oyunun ne kadar ölçeklendirilebileceğini en üst düzeye çıkarmak için varsayılan 64 değerini kullanın. |
| StreamingTargetRadius | Bu özellik, örneklerin akıtıldığı çoğaltma odakları etrafındaki maksimum mesafeyi kontrol eder. Motorun, daha önce yüklenmiş olan örnekleri hedef yarıçapının ötesine kaydetmesine izin verilir, bellek yeterliyse. Daha küçük bir StreamingTargetRadius, sunucu yükünü azaltır; çünkü sunucu, belirlenen değerin ötesinde ek örnekler akıtmaz. Ancak, hedef yarıçapı, oyuncuların oyununuzun tam detaylarını görme mesafesinin de maksimum mesafesi olduğundan, bu iki durum arasında güzel bir denge oluşturacak bir değer seçmelisiniz. TAVSİYE EDİLEN Yüksek seviye cihazlar için görünürlük ile makul bir bellek ayak izi arasında iyi bir denge sağlamak için varsayılan 1024 değerini kullanın. |
| StreamOutBehavior | Bu özellik, Enum.StreamOutBehavior değerine göre akıştan çıkarma davranışını ayarlar. LowMemory (varsayılan) olarak ayarlandığında, istemci yalnızca düşük bellek durumu olduğunda minimum yarıçapın ötesindeki bölgeleri akış dışı bırakır. Opportunistic olarak ayarlandığında ise, düşük bellek baskısı olmadığında bile istemci tüm StreamingTargetRadius'ın ötesindeki bölgeleri kaldırabilir (bu modda istemci, düşük bellek durumları dışında hedef yarıçapı içindeki örnekleri asla kaldırmaz). TAVSİYE EDİLEN Bellek kullanımını önemli ölçüde azaltmak ve bellek dışı çöküşlerini önlemeye yardımcı olmak için istemcinin içeriği agresif bir şekilde geri toplamasına izin vermek için Opportunistic kullanın. |
Çoğaltma odakları
Varsayılan olarak, akış yerel oyuncunun karakterinin PrimaryPart etrafında gerçekleşir; ancak farklı bir çoğaltma odak noktası belirtmek için Player.ReplicationFocus kullanılabilir.
Ayrıca, Player:AddReplicationFocus() ve Player:RemoveReplicationFocus() ile ek çoğaltma odakları ekleyebilir ve kaldırarak oyunun birçok alanında akışı dinamik olarak etkinleştirebilirsiniz.
İstemci tarafındaki fizik simülasyonu, sunucu yetkisi uygulandığında tahmin ve yeniden simülasyonları içerir, yalnızca akış içindeki alanlarda gerçekleşir; yerel olarak oluşturulan örnekler ve Persistent örnekleri için bile. Eğer karakterden uzakta kalan örneklerin simülasyonunu sürdürmek istiyorsanız, bu örneklerin yakınında bir ek çoğaltma odak noktası oluşturun.
Model akış kontrolü
Her model düzeyinde akış sorunlarını önlemek ve WaitForChild() kullanımını en aza indirmek için, Models ve onların alt öğelerinin akışını, ModelStreamingMode özelliği aracılığıyla özelleştirebilirsiniz.
Atomik Olmayan
Varsayılan olarak, modeller Nonatomic olarak ayarlanır ve Workspace.ModelStreamingBehavior Legacy (varsayılan) ya da Improved olarak ayarlandığında akıtılır ve boşaltılır.
Eski
Workspace.ModelStreamingBehavior Legacy (varsayılan) olarak ayarlandığında, Model konteyneri ve onun atomik olmayan BasePart alt öğeleri, oyuncu katıldığında istemciye çoğaltılır. Daha sonra, uygun olduğunda, modelin BasePart alt öğeleri akıtılır.

Geliştirilmiş
Workspace.ModelStreamingBehavior Improved olarak ayarlandığında, model akış davranışı, modelin BasePart alt öğeleri içerip içermediğine göre değişir:
BasePart alt öğeleri olan bir model, yalnızca bir BasePart alt öğesi akışa uygun olduğunda girilir. O noktada model ve uygun BasePart akıtılır ve birlikte modelin atomik olmayan BasePart alt öğeleri de akıtılır.
Modelin en son kalan BasePart'ı akıştan çıktığında, model kendisi de birlikte akıştan çıkar.

Atomik
Eğer bir Model Atomic olarak ayarlandıysa, tüm ilk alt öğeleri bir BasePart alt öğesi akışa uygun hale geldiğinde birlikte akıtılır. Bu nedenle, modelin içindeki örneklere erişmesi gereken bir istemci tarafı betiği modelin kendisi üzerinde WaitForChild() kullanması gerekecektir, ancak bir alt MeshPart veya Part üzerinde kullanması gerekmemektedir; çünkü bunlar modelle birlikte gönderilir.
Bir atomik model yalnızca tüm alt parçaları akış dışı bırakılmaya uygun olduğunda akıştan çıkar; bu noktada tüm model birlikte akıştan çıkar.

Sürekli
Persistent modeller normal akışa tabi değildir. Oyuncu katıldıktan kısa bir süre sonra ve Workspace.PersistentLoaded olayı tetiklenmeden önce, tümü birlikte bir atomik birim olarak gönderilir. Sürekli modeller ve onların alt öğeleri asla akıştan çıkmaz; ancak istemci tarafı betiğinde akış işlemlerini güvenli bir şekilde işlemek için PersistentLoaded olayının tetiklenmesini beklemelisiniz.

Oyuncu Başına Sürekli
PersistentPerPlayer olarak ayarlanan modeller, Model:AddPersistentPlayer() kullanılarak eklenmiş oyuncular için Persistent ile aynı davranışa sahiptir. Diğer oyuncular için, davranış Atomic ile aynıdır. Bir modeli oyuncu devamlılığından çıkarmak için Model:RemovePersistentPlayer() kullanılabilir.
Duraklatma Ekranı Özelleştirmesi
Varsayılan olarak Workspace.StreamingIntegrityMode, tavsiye edilen PauseOutsideLoadedArea ayarlandığında, bir oyuncu akış yapılmamış bir bölgeye hareket ederse oyun duraklayacaktır. Bu durumlarda, Player.GameplayPaused özelliği oyuncunun mevcut duraklama durumunu gösterir ve özelleştirilmiş bir kullanıcı arayüzünü göstermek ya da gizlemek için GetPropertyChangedSignal() bağlantısıyla kullanılabilir.
LocalScript
local Players = game:GetService("Players")
local GuiService = game:GetService("GuiService")
local player = Players.LocalPlayer
-- Varsayılan duraklatma modalını devre dışı bırak
GuiService:SetGameplayPausedNotificationEnabled(false)
local function onPauseStateChanged()
if player.GameplayPaused then
-- Özel GUI'yi göster
else
-- Özel GUI'yi gizle
end
end
player:GetPropertyChangedSignal("GameplayPaused"):Connect(onPauseStateChanged)
Çalışma Zamanı Hata Ayıklama
Motor, istemcide klavye kısayollarını kullanarak etkinleştirilebilecek birçok ekran hata ayıklama paneline sahiptir. Akış hata ayıklama bilgilerine erişmek için:
Ağ Özeti hata ayıklama katmanını açmak için ShiftCtrlF3 (Windows) veya Shift⌘F3 (Mac) tuşlarına basın.
Hata ayıklama katmanı açıldığında, mevcut paneller arasında döngü yapmak için Shift1’e ardışık olarak basın. Dördüncü panel, yararlı çalışma zamanı bilgilerini gösteren Akış hata ayıklama görünümüdür:
- Aktif akış ayarları
- Şu an yüklenmiş (içeri aktarılan) bölgeler
- Akış davranışı ve durumu
Etkinleştirildiğinde, 3D görünüm alanında renklendirilmiş bölgeler görünür hale gelir:
| Renk | Açıklama |
|---|---|
| StreamingMinRadius'dan az | |
| StreamingMinRadius'dan büyük veya eşit ve StreamingTargetRadius'dan az | |
| StreamingTargetRadius'na eşit | |
| StreamingTargetRadius'dan büyük |
