Oyun içi örnek akışı, Roblox motorunun Workspace içindeki 3D içeriği ve ilgili örnekleri dinamik olarak yüklemesine ve boşaltmasına olanak tanır. Bu, oyuncu deneyimini birkaç şekilde iyileştirebilir, bunlar arasında:
- Daha Hızlı Katılma Süreleri— Oyuncular, dünyanın daha fazla yüklenirken bir bölümünde oynamaya başlayabilirler.
- Bellek Verimliliği— İçerik dinamik olarak akıtıldığı için daha az belleğe sahip cihazlarda oyun oynanabilir. Daha sürükleyici ve detaylı dünyalar, daha geniş bir cihaz yelpazesinde oynanabilir.
- Geliştirilmiş Performans— Sunucu, dünya ile içindeki oyuncular arasındaki değişiklikleri senkronize etmek için daha az zaman ve bant genişliği harcadığından daha iyi kare hızları ve performans elde edilir. İstemciler, oyuncuya şu anda ilgili olmayan örnekleri güncellemeye daha az zaman harcar.
- Detay Seviyesi— Yapılandırıldığında, uzak modeller, platform avatarları ve arazi, istemcilere akıtılmadıklarında bile görünür kalır, bu da oyunun arka plan görsellerinden tamamen feragat etmeden optimize edilmesini sağlar. SLIM, hem modeller hem de avatarlar için en yüksek kaliteli detay seviyesini sağlar.
Örnek akışı, Workspace.StreamingEnabled özelliği aracılığıyla kontrol edilir ve bu özellik, Studio'da oluşturulan yeni yerler için varsayılan olarak etkinleştirilmiştir. 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 depolanan örnekler akış için uygun değildir. Örneğin, ReplicatedStorage altında bir atomik model yerleştirmek, atomik çoğaltma garantisi vermez.
Akışa alma
Bir oyuncu örnek akışı etkinleştirilmiş bir oyuna katıldığında:
Workspace içindeki örnekler, aşağıdakiler hariç istemciye çoğaltılır:

Atomik, Sürekli veya SürekliOyuncu olarak ayarlanmış Models; model akış kontrollerine bakın.

Models'ın Workspace.ModelStreamingBehavior değeri Improved olarak ayarlandığında Nonatomic (varsayılan) olarak ayarlanmış.

Yukarıdaki örneklerin alt öğeleri
Oyun sırasında, sunucu, oyunun akış özelliklerine, oyuncu konumuna, istemci cihaz performansına ve diğer koşullara bağlı olarak yukarıda belirtilen ertelenmiş kategorilerdeki örnekleri istemciye akıtabilir.
Akıştan çıkarma
Oyun sırasında, bir istemci, Workspace.StreamOutBehavior tarafından ayarlanan davranışa göre oyuncunun Workspace'inden BaseParts bölgelerini kaldırabilir. Süreç, çoğaltma odakları en uzaktaki bölgelerden başlayarak, gerektiğinde daha yakına doğru ilerler. Workspace.StreamingMinRadius aralığındaki bölgeler asla akıtılmaz.
BasePart alt öğesi olmayan bir Model, örneğin yalnızca BasePart olmayan örnekler gibi "konteyner" olarak kullanılan bir model, boşaltma işleminden muafdır eğer bir BasePart alt öğesi haline getirilmezse.
Montajlar
Fiziksel montajlar içeri olarak tam birim olarak akıtılır, bunlar ile ilişkili Constraints ve Attachments dahil, istemcilerde tutarlı fizik güncellemeleri sağlamaya yardımcı olur. Tek istisna, montajın ankrajlandığı durumdur; bu durumda yalnızca akış yarıçapı içindeki BaseParts akıtılır ve bunlarla ilişkili Constraints ve Attachments ile birlikte.
Montajlar, tüm BaseParts'ı akıştan çıkarma uygun hale gelene kadar boşaltılmaz.
Akış özellikleri
Aşağıdaki özellikler, örnek akışının oyununuzda nasıl uygulanacağını kontrol eder. Tüm bu özellikler betiklenemez ve Studio'daki Workspace nesnesinde ayarlanmalıdır.

| Özellik | Açıklama |
|---|---|
| EnableSLIMAvatars | Oyundaki avatar karakterleri için bir SLIM modelinin oluşturulup oluşturulmayacağını kontrol eder. Etkinleştirildiğinde, avatarlar, Model.LevelOfDetail'in SLIM olarak ayarlanmasıyla diğer modeller için çalıştığı gibi SLIM kullanarak render edilir. Ayrıntılar için SLIM sayfasına bakın. |
| ModelStreamingBehavior | Nonatomic (varsayılan) modellerin nasıl akıtılacağını kontrol eder. TAVSİYE EDİLEN Models'ın BasePart alt öğelerine sahip olması durumunda en verimli akışı sağlamak için Improved'i kullanın. |
| PredictiveStreamingMode | Bir oyuncunun yakında ihtiyaç duyabileceği alanları proaktif olarak akıtmak için motor sinyallerini kullanan öngörücü akış özelliğini etkinleştirir. Bu, kullanılmadığında kısa bir süre sonra sona erer ve kaynak kısıtlı istemcilerde atlanır. |
| StreamingIntegrityMode | Bir oyuncu, kendisine akıtılmamış bir dünya bölgesine girdiğinde oyun beklenmedik şekillerde davranabilir. Bu özellik, bu potansiyel olarak sorunlu durumları önlemenin bir yolunu sunar. TAVSİYE EDİLEN Oyun bütünlüğünü gereksiz yere veya çok sık duraklatmadan dengelemek için PauseOutsideLoadedArea'yı kullanın. Ayrıca duraklatma ekranını da özelleştirebilirsiniz. |
| StreamingMinRadius | Bu özellik, örneklerin en yüksek öncelikle akıtıldığı çoğaltma odakları etrafındaki yarıçapı gösterir. Varsayılanı artırırken dikkatli olun, çünkü bu, diğer bileşenlerin pahasına daha fazla bellek ve sunucu bant genişliği gerektirecektir. TAVSİYE EDİLEN Düşük seviye cihazlar için oyunun ne kadar ölçeklenebileceğini maksimize etmek için 64 varsayılanını kullanın. |
| StreamingTargetRadius | Bu özellik, örneklerin akıtıldığı çoğaltma odakları etrafındaki maksimum mesafeyi kontrol eder. Motorun, bellek izin veriyorsa, hedef yarıçapın ötesinde daha önce yüklenmiş örnekleri tutmasına izin verildiğini unutmayın. Daha küçük bir StreamingTargetRadius, sunucu yükünü azaltır, çünkü sunucu, belirlenen değerin ötesinde ek örnekleri akıtmaz. Ancak, hedef yarıçapı, oyuncuların oyununuzun tam detayını görebileceği maksimum mesafe olduğundan, bunlar arasında güzel bir denge oluşturan bir değer seçmelisiniz. TAVSİYE EDİLEN Yüksek seviye cihazlardaki oyuncular için görünürlük ile makul bir bellek ayak izi arasında iyi bir denge sağlamak için 1024 varsayılanını 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 durumunda minimum yarıçapın ötesindeki bölgeleri akıtır. Opportunistic olarak ayarlandığında, StreamingTargetRadius'ın ötesindeki bölgeler, bellek baskısı olmadığında istemciden kaldırılabilir (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 yetersizliği nedeniyle çökme olasılığını önlemek için istemcinin içeriği agresif bir şekilde çöp toplamasına izin vermek için Opportunistic'i kullanın. |
Çoğaltma odakları
Varsayılan olarak, akış, yerel oyuncunun karakterinin PrimaryPart etrafında gerçekleşir, ancak Player.ReplicationFocus aracılığıyla farklı bir çoğaltma odak noktası belirtebilirsiniz.
Ayrıca, Player:AddReplicationFocus() ve Player:RemoveReplicationFocus() aracılığıyla ek çoğaltma odakları ekleyip kaldırarak oyunun birden fazla alanında akışı dinamik olarak etkinleştirebilirsiniz.
İstemci tarafı fizik simülasyonu, sunucu yetkisi uygulandığında tahmin ve yeniden simülasyon dahil, yalnızca akıtılan alanlarda gerçekleşir, yerel olarak oluşturulan örnekler ve Persistent örnekleri için bile. Karakterden uzakta bile simülasyonun devam etmesini istediğiniz örnekler varsa, bu örneklerin yakınında ek bir çoğaltma odak noktası oluşturun.
Öngörücü akış
Öngörücü akış, motor sinyallerini kullanarak oyuncu hareketini tahmin eden ve oyuncunun yakında ihtiyaç duyabileceği alanları proaktif olarak akıtan bir opt-in özelliğidir. PredictiveStreamingMode'yi Enabled olarak ayarlayarak etkinleştirildiğinde, akış duraklamalarını ve görsel pop-in'leri azaltabilir, herhangi bir kod değişikliği olmadan.
Öngörücü akış eklenebilir. Mevcut çoğaltma odaklarını ek olarak küçük, geçici akış odakları oluşturur, az miktarda ekstra içerik akıtır ve oyun mantığınızı veya akış sözleşmelerinizi değiştirmez. Bir tahmine ihtiyaç duyulmadığında, tahmin edilen alan kısa bir süre sonra sona erer ve motor içeriği boşaltır. Motor ayrıca istemci bellek ve performansını dikkate alır, kaynak kısıtlı cihazlarda tahminleri atlar.
PredictiveStreamingMode Enabled olduğunda, aşağıdaki öngörücü özellikler aktiftir:
| Özellik | Açıklama |
|---|---|
| Yeniden doğma ön yükleme | Bir oyuncu öldüğünde, motor, oyuncu karakteri görünmeden önce olası yeniden doğma yerlerinde küçük, geçici akış odakları oluşturur, bu da olası yeniden doğma alanlarının akıtılmaya başlamasını sağlar ve yeniden doğma sonrası duraklamaları ve kaybolan içerikleri azaltır. |
| CFrame dönüş optimizasyonu | Bir oyuncu bir alandan CFrames uzaklaştığında, motor, oyuncunun ayrıldığı yerde küçük, geçici bir akış odak noktası oluşturur. Bu, oyuncu kısa bir süre sonra geri dönerse o alanın akıtılmasını sağlamaya yardımcı olur; bu, binalar, alt katlar, dükkanlar veya merkezler arasında hareket ederken yaygın bir senaryodur. |
Model akış kontrolleri
Model bazında akışla ilgili sorunları önlemek ve WaitForChild() kullanımını en aza indirmek için, Models ve alt öğelerinin akışını ModelStreamingMode özelliği aracılığıyla özelleştirebilirsiniz.
Nonatomic
Varsayılan olarak, modeller Nonatomic olarak ayarlanmıştır ve Workspace.ModelStreamingBehavior değeri Legacy (varsayılan) veya Improved olarak ayarlandığında akıtılır.
Eski
Workspace.ModelStreamingBehavior değeri Legacy (varsayılan) olarak ayarlandığında, Model konteyneri ve non-BasePart alt öğeleri, örneğin Scripts, 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 değeri Improved olarak ayarlandığında, model akış davranışı, modelin BasePart alt öğelerine sahip olup olmamasına göre değişir:
Atomik
Eğer bir Model, Atomic olarak ayarlanmışsa, tüm ilk alt öğeleri, bir alt öğe BasePart akıtılmaya uygun olduğunda birlikte akıtılır. Sonuç olarak, modelin içindeki örneklere erişmesi gereken bir istemci tarafı betiği, modelin kendisi üzerinde WaitForChild() kullanması gerekir, ancak bir alt öğe MeshPart veya Part üzerinde değil, çünkü bunlar modelle birlikte gönderilir.
Bir atomik model, yalnızca tüm alt parçaları akıştan çıkarma uygun hale geldiğinde akıştan çıkarılır; bu noktada tüm model birlikte akıştan çıkarılır.

Sürekli
Persistent modeller, normal akışa tabi değildir. Oyuncu katıldığında ve Workspace.PersistentLoaded olayı ateşlenmeden önce, tam bir atomik birim olarak gönderilirler. Sürekli modeller ve alt öğeleri asla akıtılmaz, ancak istemci tarafı betiği içinde akışın güvenli bir şekilde işlenmesi için PersistentLoaded olayının ateşlenmesini beklemelisiniz.

SürekliOyuncu
PersistentPerPlayer olarak ayarlanan modeller, Model:AddPersistentPlayer() kullanılarak eklenen oyuncular için Persistent ile aynı şekilde davranır. Diğer oyuncular için davranış, Atomic ile aynıdır. Bir modeli oyuncu sürekliliğinden geri almak için Model:RemovePersistentPlayer() kullanabilirsiniz.
Duraklatma ekranı özelleştirmesi
Workspace.StreamingIntegrityMode'un önerilen PauseOutsideLoadedArea olarak ayarlandığını varsayarsak, bir oyuncu kendisine akıtılmamış bir dünya bölgesine girdiğinde oyun duraklayacaktır. Bu durumlarda, Player.GameplayPaused özelliği, oyuncunun mevcut duraklama durumunu gösterir ve bu, özel bir GUI göstermek veya gizlemek için GetPropertyChangedSignal() bağlantısıyla kullanılabilir.
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ı kullanılarak etkinleştirilebilen birden fazla ekran içi hata ayıklama paneli içerir. Akış hata ayıklama bilgilerine erişmek için:
- Ağ Özeti hata ayıklama katmanını ShiftCtrlF3 (Windows) veya Shift⌘F3 (Mac) ile açın.
- Hata ayıklama katmanı açıldığında, mevcut paneller arasında döngü yapmak için Shift1 tuşlarına tekrar basın. Dördüncü panel, yararlı çalışma zamanı bilgilerini görüntüleyen Akış hata ayıklama görünümüdür:
- Aktif akış ayarları
- Şu anda yüklenmiş (akıtılmış) bölgeler
- Akış davranışı ve durumu
Etkinleştirildiğinde, 3D görünümde renkli vurgulu bölgeler görünür:
| Renk | Açıklama |
|---|---|
| StreamingMinRadius'dan daha az | |
| StreamingMinRadius'a eşit veya daha büyük ve StreamingTargetRadius'dan daha az | |
| StreamingTargetRadius'a eşit | |
| StreamingTargetRadius'dan daha büyük |

