Instantie streaming

*Deze inhoud is vertaald met behulp van AI (bèta) en kan fouten bevatten. Klik hier om deze pagina in het Engels te bekijken.

In-game instantie streaming stelt de Roblox-engine in staat om dynamisch 3D-inhoud en gerelateerde instanties in de Workspace in en uit te laden. Dit kan de algehele spelerservaring op verschillende manieren verbeteren, waaronder:

  • Snellere toetredingstijden
    — Spelers kunnen beginnen met spelen in een deel van de wereld terwijl meer van de wereld op de achtergrond wordt geladen.
  • Geheugen efficiëntie
    — Spellen kunnen worden gespeeld op apparaten met minder geheugen, aangezien inhoud dynamisch in en uit wordt gestreamd. Meer meeslepende en gedetailleerde werelden kunnen op een breder scala van apparaten worden gespeeld.
  • Verbeterde prestaties
    — Betere frame rates en prestaties, aangezien de server minder tijd en bandbreedte kan besteden aan het synchroniseren van wijzigingen tussen de wereld en de spelers daarin. Clients besteden minder tijd aan het bijwerken van instanties die momenteel niet relevant zijn voor de speler.
  • Niveau van detail
    — Wanneer geconfigureerd, blijven verre modellen, platformavatars en terrein zichtbaar, zelfs wanneer ze niet naar clients worden gestreamd, waardoor het spel geoptimaliseerd blijft zonder volledig in te boeten op achtergrondvisuals. SLIM biedt het hoogste niveau van detail voor zowel modellen als avatars.

Instantie streaming wordt geregeld via de Workspace.StreamingEnabled eigenschap, die standaard is ingeschakeld voor nieuwe plaatsen die in Studio zijn gemaakt. Deze eigenschap kan niet in een script worden ingesteld.

Het eigenschappenvenster met de StreamingEnabled-eigenschap ingeschakeld.

Technisch gedrag

Omvang

Streaminglogica en -functies zijn uitsluitend van toepassing op instanties die afstammelingen zijn van Workspace, terwijl instanties die zijn opgeslagen in andere containers zoals ReplicatedStorage en ReplicatedFirst niet in aanmerking komen voor streaming. Bijvoorbeeld, het plaatsen van een atomisch model onder ReplicatedStorage garandeert geen atomische replicatie.

Stream in

Wanneer een speler zich bij een spel voegt met instantie streaming ingeschakeld:

  1. Instanties in de Workspace worden gerepliceerd naar de client met uitzondering van de volgende:

    Models ingesteld op Niet-atomisch (standaard) wanneer Workspace.ModelStreamingBehavior is ingesteld op Improved

    Afstammelingen van de bovenstaande instanties

  2. Tijdens het spel kan de server instanties in de bovenstaande uitgestelde categorieën naar de client streamen op basis van de streaming-eigenschappen van het spel, de positie van de speler, de prestaties van het clientapparaat en andere voorwaarden.

Stream uit

Tijdens het spel kan een client regio's van BaseParts uit de Workspace van de speler verwijderen op basis van het gedrag dat is ingesteld door Workspace.StreamOutBehavior. Het proces begint met regio's die het verst van de replicatiefoci verwijderd zijn en beweegt dichterbij, indien nodig. Regio's binnen het bereik van Workspace.StreamingMinRadius worden nooit uitgestreamd.

Merk op dat een Model zonder BasePart afstammelingen, zoals een die slechts als een "container" voor niet-BasePart instanties zoals scripts wordt gebruikt, vrijgesteld is van streaming uit tenzij het een afstammeling van een BasePart wordt.

Assemblies

Fysieke assemblies streamen in als complete eenheden, inclusief hun bijbehorende Constraints en Attachments, wat helpt om consistente fysica-updates op clients te waarborgen. De enige uitzondering is wanneer de assembly is geankerd, in welk geval alleen de BaseParts binnen de streamingradius samen met hun bijbehorende Constraints en Attachments worden gestreamd.

Assemblies streamen niet uit totdat al hun BaseParts in aanmerking komen om uit te streamen.

Streaming-eigenschappen

De volgende eigenschappen regelen hoe instantie streaming van toepassing is op jouw spel. Al deze eigenschappen zijn niet-scriptable en moeten worden ingesteld op het Workspace object in Studio.

EigenschapBeschrijving
EnableSLIMAvatarsRegelt of een SLIM model wordt gegenereerd voor avatarpersonages in het spel. Wanneer ingeschakeld, renderen avatars met behulp van SLIM op dezelfde manier als het instellen van Model.LevelOfDetail op SLIM werkt voor andere modellen. Zie SLIM voor details.
ModelStreamingBehaviorRegelt hoe Niet-atomische (standaard) modellen in en uit streamen.

AANBEVOLEN
Gebruik Improved om de meest efficiënte streaming voor Models met BasePart afstammelingen in te schakelen.
PredictiveStreamingModeOpt-in voor voorspellende streaming die enginesignalen gebruikt om proactief gebieden te streamen die een speler waarschijnlijk binnenkort nodig heeft, zoals respawnlocaties of regio's die de speler onlangs heeft verlaten via CFrame wijziging. Voorspellingen zijn optioneel, vervallen na een korte tijd als ze niet worden gebruikt, en worden overgeslagen op clients met beperkte middelen.
StreamingIntegrityModeHet spel kan zich op ongewenste manieren gedragen als een speler zich in een regio van de wereld beweegt die niet naar hen is gestreamd. Deze eigenschap biedt een manier om die potentieel problematische situaties te vermijden.

AANBEVOLEN
Gebruik PauseOutsideLoadedArea om de integriteit van het spel in balans te houden zonder onnodig of te vaak te pauzeren. Je kunt ook de pauzescherm aanpassen.
StreamingMinRadiusDeze eigenschap geeft de straal aan rond de replicatiefoci waarin instanties met de hoogste prioriteit in streamen. Wees voorzichtig bij het verhogen van de standaard, aangezien dit meer geheugen en meer serverbandbreedte vereist ten koste van andere componenten.

AANBEVOLEN
Gebruik de standaardwaarde van 64 om te maximaliseren hoeveel de engine het spel kan schalen voor low-end apparaten.
StreamingTargetRadiusDeze eigenschap regelt de maximale afstand van de replicatiefoci waarbinnen instanties in streamen. Merk op dat de engine is toegestaan om eerder geladen instanties buiten de doelradius te behouden, mits het geheugen dat toelaat.

Een kleinere StreamingTargetRadius vermindert de serverbelasting, aangezien de server geen extra instanties zal streamen buiten de ingestelde waarde. De doelradius is echter ook de maximale afstand die spelers in staat zullen zijn om de volledige details van jouw spel te zien, dus je moet een waarde kiezen die een goede balans tussen deze creëert.

AANBEVOLEN
Gebruik de standaardwaarde van 1024 om een goede balans te vinden tussen zichtbaarheid voor spelers op high-end apparaten en een redelijke geheugendruk.
StreamOutBehaviorDeze eigenschap stelt het streaming uit gedrag in volgens de waarde van Enum.StreamOutBehavior. Als ingesteld op LowMemory (standaard), streamt de client alleen regio's uit die verder zijn dan de minimale straal in een situatie met laag geheugen. Als ingesteld op Opportunistic, kunnen regio's buiten StreamingTargetRadius op de client worden verwijderd, zelfs wanneer er geen geheugendruk is (in deze modus verwijdert de client nooit instanties die binnen de doelradius zijn, behalve in situaties met laag geheugen).

AANBEVOLEN
Gebruik Opportunistic om de client in staat te stellen agressief ongewenste inhoud te verzamelen, wat het geheugengebruik aanzienlijk vermindert en helpt om uit-geheugen crashes te voorkomen.

Replicatiefocus

Standaard vindt streaming plaats rond het PrimaryPart van het lokale personage van de speler, hoewel je een ander replicatiefocuspunt kunt specificeren via Player.ReplicationFocus.

Je kunt ook extra replicatiefoci toevoegen en verwijderen via Player:AddReplicationFocus() en Player:RemoveReplicationFocus() om dynamisch streaming in meerdere gebieden van het spel in te schakelen.

Client-side fysica-simulatie, inclusief voorspelling en hersimulaties wanneer serverautoriteit is geïmplementeerd, vindt alleen plaats in gestreamde gebieden, zelfs voor lokaal gemaakte instanties en voor Persistent instanties. Als je instanties hebt die je wilt blijven simuleren, zelfs wanneer ze ver van het personage zijn, maak dan een extra replicatiefocus in de buurt van die instanties.

Voorspellende streaming

Voorspellende streaming is een opt-in functie die enginesignalen gebruikt om de beweging van spelers te anticiperen en proactief gebieden te streamen die de speler waarschijnlijk binnenkort nodig heeft. Wanneer ingeschakeld door PredictiveStreamingMode in te stellen op Enabled, kan het streamingpauzes en visuele pop-in verminderen zonder enige codewijzigingen.

Voorspellende streaming is additief. Het creëert kleine, tijdelijke streamingfoci naast je bestaande replicatiefoci, streamt een kleine hoeveelheid extra inhoud en verandert je spel-logica of streamingcontracten niet. Als een voorspelling niet nodig is, vervalt het voorspelde gebied na een korte tijd en laadt de engine de inhoud niet meer. De engine houdt ook rekening met het geheugen en de prestaties van de client, en slaat voorspellingen over op apparaten met beperkte middelen.

Wanneer PredictiveStreamingMode is ingesteld op Enabled, zijn de volgende voorspellende functies actief:

FunctieBeschrijving
Spawn pre-fetchingWanneer een speler sterft, creëert de engine kleine, tijdelijke streamingfoci op mogelijke spawnlocaties, zodat waarschijnlijke respawngebieden beginnen te streamen voordat het spelerpersonage verschijnt, waardoor pauzes en ontbrekende inhoud onmiddellijk na respawn worden verminderd.
CFrame retouroptimalisatieWanneer een speler CFrames weg is van een gebied, creëert de engine een kleine, tijdelijke streamingfocus op de locatie die ze hebben verlaten. Dit helpt dat gebied gestreamd te houden als de speler kort daarna terugkeert, een veelvoorkomend scenario bij het bewegen tussen gebouwen, subniveaus, winkels of hubs.

Model streamingcontroles

Om problemen met streaming op basis van per-model te vermijden en het gebruik van WaitForChild() te minimaliseren, kun je aanpassen hoe Models en hun afstammelingen streamen via hun ModelStreamingMode eigenschap.

Niet-atomisch

Standaard zijn modellen Nonatomic en streamen ze in/uit op basis van of Workspace.ModelStreamingBehavior is ingesteld op Legacy (standaard) of Improved.

Legacy

Wanneer Workspace.ModelStreamingBehavior is ingesteld op Legacy (standaard), wordt de Model container en zijn niet-BasePart afstammelingen zoals Scripts gerepliceerd naar de client wanneer de speler zich aanmeldt. Vervolgens, wanneer in aanmerking komende, streamen de BasePart afstammelingen van het model in.

Verbeterd

Wanneer Workspace.ModelStreamingBehavior is ingesteld op Improved, varieert het streaminggedrag van modellen afhankelijk van of het model BasePart afstammelingen bevat of geen BasePart afstammelingen bevat:

  • Een model met BasePart afstammelingen streamt in alleen wanneer één van zijn BasePart afstammelingen in aanmerking komt om in te streamen. Op dat moment streamt het model en de in aanmerking komende BasePart in, samen met de niet-BasePart afstammelingen van het model.

    Wanneer de allerlaatste resterende BasePart van het model uit streamt, zal het model zelf ook samen met deze uitstreamen.

  • Een model zonder BasePart afstammelingen, zoals een die slechts als een "container" voor niet-BasePart instanties zoals scripts wordt gebruikt, wordt kort na de aanmelding van de speler naar de client gerepliceerd. Dit type model is vrijgesteld van streaming uit tenzij het een afstammeling van een BasePart wordt.

Atomisch

Als een Model is ingesteld op Atomic, worden al zijn initiële afstammelingen samen gestreamd wanneer een afstammeling BasePart in aanmerking komt om te worden gestreamd. Als gevolg hiervan zou een client-side script dat toegang nodig heeft tot instanties binnen het model WaitForChild() op het model zelf moeten gebruiken, maar niet op een afstammeling MeshPart of Part, aangezien deze samen met het model worden verzonden.

Een atomisch model wordt alleen uitgestreamd wanneer al zijn afstammelingen in aanmerking komen om uit te streamen, op welk punt het hele model samen uitstreamt.

Een diagram dat atomische modelstreaming samen met kinderen toont.

Persistent

Persistent modellen zijn niet onderhevig aan normale streaming in of uit. Ze worden als een complete atomische eenheid verzonden kort nadat de speler zich aanmeldt en voordat het Workspace.PersistentLoaded evenement wordt geactiveerd. Persistente modellen en hun afstammelingen worden nooit uitgestreamd, maar om streaming in veilig te verwerken binnen een client-side script, moet je wachten tot het PersistentLoaded evenement wordt geactiveerd.

Een diagram dat persistente modelstreaming samen met kinderen toont.

PersistentPerPlayer

Modellen ingesteld op PersistentPerPlayer gedragen zich hetzelfde als Persistent voor spelers die zijn toegevoegd met Model:AddPersistentPlayer(). Voor andere spelers is het gedrag hetzelfde als Atomic. Je kunt een model van spelerspersistentie terugdraaien via Model:RemovePersistentPlayer().

Pauzescherm aanpassing

Aangenomen dat Workspace.StreamingIntegrityMode is ingesteld op de aanbevolen PauseOutsideLoadedArea, zal het spel pauzeren als een speler zich in een regio van de wereld beweegt die niet naar hen is gestreamd. In deze gevallen geeft de Player.GameplayPaused eigenschap de huidige pauzestatus van de speler aan, die kan worden gebruikt met een GetPropertyChangedSignal() verbinding om een aangepaste GUI weer te geven of te verbergen.

LocalScript
local Players = game:GetService("Players")
local GuiService = game:GetService("GuiService")
local player = Players.LocalPlayer
-- Standaard pauzescherm uitschakelen
GuiService:SetGameplayPausedNotificationEnabled(false)
local function onPauseStateChanged()
if player.GameplayPaused then
-- Toon aangepaste GUI
else
-- Verberg aangepaste GUI
end
end
player:GetPropertyChangedSignal("GameplayPaused"):Connect(onPauseStateChanged)

Runtime debugging

De engine bevat meerdere on-screen debugpanelen die op de client kunnen worden ingeschakeld met sneltoetsen. Om streaming debuginformatie te openen:

  1. Open de Netwerkstatistieken debugoverlay. In een live ervaring, druk op ShiftF3. Wanneer je in Studio speelt, druk op ShiftCtrlF3 (Windows) of Shift⌘F3 (Mac).
  2. Zodra de debugoverlay is geopend, druk herhaaldelijk op Shift1 om door de beschikbare panelen te cyclusen. Het vierde paneel is de Streaming debugweergave die nuttige runtime-informatie weergeeft:
    • Actieve streaminginstellingen
    • Momenteel geladen (gestreamde) regio's
    • Streaminggedrag en -status

Zodra ingeschakeld, verschijnen gekleurde gemarkeerde regio's in de 3D-weergave:

KleurBeschrijving
Minder dan StreamingMinRadius
Groter dan of gelijk aan StreamingMinRadius en minder dan StreamingTargetRadius
Gelijk aan StreamingTargetRadius
Groter dan StreamingTargetRadius
©2026 Roblox Corporation. Roblox, het Roblox-logo en Powering Imagination behoren tot onze geregistreerde en niet-geregistreerde handelsmerken in de VS en andere landen.