Örnek akışı

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

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.

StreamingEnabled özelliği etkinleştirilmiş Özellikler penceresi.

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:

  1. Workspace içindeki örnekler istemciye çoğaltılır hariç aşağıdakiler:

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

    Yukarıdaki örneklerin alt öğeleri

  2. 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.

ÖzellikAçıklama
EnableSLIMAvatarsOyun 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.
ModelStreamingBehaviorAtomik 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.
StreamingIntegrityModeOyuncu, 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.
StreamingMinRadiusBu ö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.
StreamingTargetRadiusBu ö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.
StreamOutBehaviorBu ö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.

  • Hiç BasePart alt öğesi olmayan bir model, örneğin yalnızca BasePart olmayan örnekler için bir "konteyner" olarak kullanılan, oyuncu katıldıktan hemen sonra istemciye çoğaltılır. Bu tür bir model akıştan çıkma muafiyetine sahiptir eğer bir BasePart alt öğesi haline getirilmezse.

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.

Atomik model akışını ve çocuklarını gösteren bir diyagram.

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.

Sürekli model akışını ve çocuklarını gösteren bir diyagram.

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:

  1. Ağ Özeti hata ayıklama katmanını açmak için ShiftCtrlF3 (Windows) veya ShiftF3 (Mac) tuşlarına basın.

  2. 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:

RenkAçı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
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.