Im Spiel ermöglicht Instanz-Streaming der Roblox-Engine, 3D-Inhalte und verwandte Instanzen im Workspace dynamisch zu laden und zu entladen. Dies kann das Gesamterlebnis der Spieler auf mehrere Arten verbessern, einschließlich:
- Schnellere Beitrittszeiten— Spieler können in einem Teil der Welt mit dem Spielen beginnen, während der Rest der Welt im Hintergrund geladen wird.
- Speichereffizienz— Spiele können auf Geräten mit weniger Speicher gespielt werden, da Inhalte dynamisch ein- und ausgegeben werden. Immersivere und detailliertere Welten können auf einer breiteren Palette von Geräten gespielt werden.
- Verbesserte Leistung— Bessere Bildwiederholraten und Leistung, da der Server weniger Zeit und Bandbreite damit verbringt, Änderungen zwischen der Welt und den Spielern darin zu synchronisieren. Clients verbringen weniger Zeit damit, Instanzen zu aktualisieren, die für den Spieler derzeit nicht relevant sind.
- Detailgrad— Wenn konfiguriert, bleiben entfernte Modelle, Plattform-Avatare und Terrain sichtbar, auch wenn sie nicht zu den Clients gestreamt werden, wodurch das Spiel optimiert wird, ohne die Hintergrundvisuals vollständig zu opfern.
Instanz-Streaming wird durch die Eigenschaft Workspace.StreamingEnabled gesteuert, die standardmäßig für neue Orte, die im Studio erstellt wurden, aktiviert ist. Diese Eigenschaft kann nicht in einem Skript festgelegt werden.

Technisches Verhalten
Umfang
Streaming-Logik und -Funktionen gelten ausschließlich für Instanzen, die Nachkommen von Workspace sind, während Instanzen, die in anderen Containern wie ReplicatedStorage und ReplicatedFirst gespeichert sind, nicht für Streaming in Frage kommen. Zum Beispiel garantiert das Platzieren eines atomaren Modells unter ReplicatedStorage keine atomare Replikation.
Einstreamen
Wenn ein Spieler einem Spiel mit aktiviertem Instanz-Streaming beitritt:
Instanzen in Workspace werden an den Client repliziert mit Ausnahme von den folgenden:

Models, die auf Atomic, Persistent oder PersistentPerPlayer gesetzt sind; siehe per Modell Streaming-Kontrollen

Models, die auf Nonatomic (Standard) gesetzt sind, wenn Workspace.ModelStreamingBehavior auf Improved gesetzt ist

Nachkommen der obigen Instanzen
Während des Spielens kann der Server Instanzen in den oben genannten ausstehenden Kategorien an den Client streamen, basierend auf den Streaming-Eigenschaften des Spiels, der Spielerposition, der Leistung des Clientgeräts und anderen Bedingungen.
Austreamen
Während des Spielens kann ein Client Regionen von BaseParts aus dem Workspace des Spielers basierend auf dem Verhalten, das von Workspace.StreamOutBehavior festgelegt wird, entfernen. Der Prozess beginnt mit Regionen, die am weitesten von den Replikationsfoki entfernt sind, und bewegt sich näher, falls erforderlich. Regionen innerhalb des Bereichs von Workspace.StreamingMinRadius werden niemals ausgestreamt.
Beachten Sie, dass ein Model ohne Nachkommen von BasePart, wie einer, der lediglich als "Container" für nicht-BasePart-Instanzen wie Skripte verwendet wird, von Streaming-out ausgeschlossen ist, es sei denn, es wird ein Nachkomme eines BasePart.
Baugruppen
Physikalische Baugruppen werden als vollständige Einheiten hereingestreamt, einschließlich ihrer zugehörigen Constraints und Attachments, um konsistente Physik-Updates auf Clients zu gewährleisten. Die einzige Ausnahme ist, wenn die Baugruppe verankert ist, in diesem Fall werden nur die im Streaming-Radius befindlichen BaseParts zusammen mit ihren zugehörigen Constraints und Attachments hereingestreamt.
Baugruppen werden nicht ausgestreamt, bis alle ihre BaseParts für das Streaming-out geeignet sind.
Streaming-Eigenschaften
Die folgenden Eigenschaften steuern, wie Instanz-Streaming auf Ihr Spiel angewendet wird. Alle diese Eigenschaften sind nicht scriptfähig und müssen im Workspace-Objekt im Studio festgelegt werden.

| Eigenschaft | Beschreibung |
|---|---|
| EnableSLIMAvatars | Steuert, ob ein SLIM-Modell für Avatar-Charaktere im Spiel erstellt wird. Wenn aktiviert, werden Avatare im SLIM-Modus gerendert, so wie das Festlegen von Model.LevelOfDetail auf SLIM bei anderen Modellen funktioniert. |
| ModelStreamingBehavior | Steuert, wie Nonatomic (Standard) Modelle ein- und ausgestreamt werden. WIRD EMPFOHLEN Verwenden Sie Improved, um das effizienteste Streaming für Models mit Nachkommen von BasePart zu aktivieren. |
| StreamingIntegrityMode | Das Spiel kann sich auf unerwartete Weise verhalten, wenn ein Spieler in ein Gebiet der Welt zieht, das nicht zu ihnen gestreamt wurde. Diese Eigenschaft bietet eine Möglichkeit, solche potenziell problematischen Situationen zu vermeiden. WIRD EMPFOHLEN Verwenden Sie PauseOutsideLoadedArea, um die Integrität des Gameplays auszubalancieren, ohne unnötig oder zu oft anzuhalten. Sie können auch den Pausebildschirm anpassen. |
| StreamingMinRadius | Diese Eigenschaft gibt den Radius um die Replikationsfoki an, in dem Instanzen mit der höchsten Priorität hereingestreamt werden. Vorsicht ist geboten, wenn der Standardwert erhöht wird, da dies mehr Speicher und mehr Server-Bandbreite auf Kosten anderer Komponenten erfordert. WIRD EMPFOHLEN Verwenden Sie den Standardwert 64, um zu maximieren, wie stark die Engine das Spiel für Geräte mit niedriger Leistung herunterskalieren kann. |
| StreamingTargetRadius | Diese Eigenschaft steuert die maximale Entfernung von den Replikationsfoki, in der Instanzen hereingestreamt werden. Beachten Sie, dass die Engine berechtigt ist, zuvor geladene Instanzen über den Zielradius hinaus beizubehalten, sofern der Speicher es zulässt. Ein kleinerer StreamingTargetRadius reduziert die Serverlast, da der Server keine zusätzlichen Instanzen über den festgelegten Wert hinaus hereinstreamt. Der Zielradius ist jedoch auch die maximale Entfernung, in der Spieler die vollständige Detailgenauigkeit Ihres Spiels sehen können, sodass Sie einen Wert wählen sollten, der ein gutes Gleichgewicht zwischen diesen schafft. WIRD EMPFOHLEN Verwenden Sie den Standardwert von 1024, um ein gutes Gleichgewicht zwischen Sichtbarkeit für Spieler auf Hochleistungsgeräten und einem angemessenen Speicherverbrauch zu erreichen. |
| StreamOutBehavior | Diese Eigenschaft legt das Streaming-out-Verhalten entsprechend dem Wert von Enum.StreamOutBehavior fest. Wenn auf LowMemory (Standard) gesetzt, streamt der Client nur Regionen außerhalb des minimalen Radius in einer Situation mit niedrigem Speicher aus. Wenn auf Opportunistic gesetzt, können Regionen außerhalb des StreamingTargetRadius vom Client auch dann entfernt werden, wenn kein Speicherdruck besteht (in diesem Modus entfernt der Client niemals Instanzen, die innerhalb des Zielradius liegen, außer in Situationen mit niedrigem Speicher). WIRD EMPFOHLEN Verwenden Sie Opportunistic, um dem Client zu ermöglichen, aggressiv Inhalte zu sammeln, was die Speichernutzung erheblich reduziert und hilft, Abstürze aufgrund von Speichermangel zu verhindern. |
Replikationsfokus
Standardmäßig tritt Streaming um den PrimaryPart des lokalen Spielercharakters auf, obwohl Sie einen anderen Replikationsfokuspunkten über Player.ReplicationFocus angeben können.
Sie können auch zusätzliche Replikationsfoki über Player:AddReplicationFocus() und Player:RemoveReplicationFocus() hinzufügen und entfernen, um das Streaming in mehreren Bereichen des Spiels dynamisch zu aktivieren.
Die Client-Seite der Physiksimulation, einschließlich Vorhersage und Neusimulationen, wenn Serverautorisierung implementiert ist, tritt nur in gestreamten Bereichen auf, selbst für lokal erstellte Instanzen und für Persistent-Instanzen. Wenn Sie Instanzen haben, die weiterhin simuliert werden sollen, auch wenn sie weit vom Charakter entfernt sind, erstellen Sie einen zusätzlichen Replikationsfokus in der Nähe dieser Instanzen.
Modell-Streaming-Kontrollen
Um Probleme mit Streaming auf Modellbasis zu vermeiden und den Gebrauch von WaitForChild() zu minimieren, können Sie anpassen, wie Models und deren Nachkommen streamen, indem Sie ihre ModelStreamingMode-Eigenschaft verwenden.
Nonatomic
Standardmäßig sind Modelle Nonatomic und sie streamen ein/aus, basierend darauf, ob Workspace.ModelStreamingBehavior auf Legacy (Standard) oder Improved gesetzt ist.
Legacy
Wenn Workspace.ModelStreamingBehavior auf Legacy (Standard) gesetzt ist, repliziert der Model-Container und seine nicht-BasePart-Nachkommen, wie Scripts, an den Client, wenn der Spieler beitritt. Dann streamen die Nachkommen BasePart des Modells ein, wenn sie berechtigt sind.

Improved
Wenn Workspace.ModelStreamingBehavior auf Improved gesetzt ist, variiert das Streaming-Verhalten von Modellen je nachdem, ob das Modell Nachkommen von BasePart enthält oder nicht:
Ein Modell mit Nachkommen von BasePart streamt ein, wenn einer seiner Nachkommen von BasePart berechtigt ist, hereingestreamt zu werden. Zu diesem Zeitpunkt wird das Modell und der berechtigte BasePart hereingestreamt, zusammen mit den nicht-BasePart-Nachkommen des Modells.
Wenn der letzte verbleibende BasePart des Modells ausgestreamt wird, streamt das Modell selbst zusammen mit ihm aus.

Ein Modell ohne Nachkommen von BasePart, wie eines, das lediglich als "Container" für nicht-BasePart-Instanzen wie Skripte verwendet wird, wird bald nach dem Beitritt des Spielers an den Client repliziert. Dieser Typ von Modell ist von Streaming-out ausgeschlossen, es sei denn, es wird ein Nachkomme eines BasePart.

Atomic
Wenn ein Model auf Atomic gesetzt ist, werden alle seine anfänglichen Nachkommen zusammen hereingestreamt, wenn ein Nachkomme BasePart berechtigt ist, hereingestreamt zu werden. Daher müsste ein clientseitiges Skript, das auf Instanzen innerhalb des Modells zugreifen muss, WaitForChild() auf dem Modell selbst verwenden, nicht jedoch auf einem Nachkommen MeshPart oder Part, da diese zusammen mit dem Modell gesendet werden.
Ein atomares Modell wird nur dann ausgestreamt, wenn alle seine Nachkommen Teile berechtigt sind, auszusträumen, wobei das gesamte Modell gleichzeitig ausgestreamt wird.

Persistent
Persistent-Modelle unterliegen nicht dem normalen Streaming ein oder aus. Sie werden als vollständige atomare Einheit kurz nach dem Beitritt des Spielers gesendet und bevor das Workspace.PersistentLoaded-Ereignis ausgelöst wird. Persistente Modelle und ihre Nachkommen werden niemals ausgestreamt, um Streaming in einem clientseitigen Skript sicher zu handhaben, sollten Sie auf das Auslösen des PersistentLoaded-Ereignisses warten.

PersistentPerPlayer
Modelle, die auf PersistentPerPlayer gesetzt sind, verhalten sich für Spieler, die mit Model:AddPersistentPlayer() hinzugefügt wurden, gleich wie Persistent. Für andere Spieler ist das Verhalten dasselbe wie bei Atomic. Sie können ein Modell von der Spielerpersistenz über Model:RemovePersistentPlayer() zurücksetzen.
Anpassung des Pausebildschirms
Angenommen, Workspace.StreamingIntegrityMode ist auf den empfohlenen Wert PauseOutsideLoadedArea eingestellt, pausiert das Spiel, wenn ein Spieler in eine Region der Welt zieht, die nicht zu ihnen gestreamt wurde. In diesen Fällen gibt die Player.GameplayPaused-Eigenschaft den aktuellen Pausezustand des Spielers an, der mit einer Verbindung zu GetPropertyChangedSignal() verwendet werden kann, um eine benutzerdefinierte GUI anzuzeigen oder auszublenden.
LocalScript
local Players = game:GetService("Players")
local GuiService = game:GetService("GuiService")
local player = Players.LocalPlayer
-- Deaktivieren der Standard-Pausemodal
GuiService:SetGameplayPausedNotificationEnabled(false)
local function onPauseStateChanged()
if player.GameplayPaused then
-- Benutzerdefinierte GUI anzeigen
else
-- Benutzerdefinierte GUI ausblenden
end
end
player:GetPropertyChangedSignal("GameplayPaused"):Connect(onPauseStateChanged)
Laufzeit-Debugging
Die Engine enthält mehrere Debug-Panels, die auf der Client-Seite mit Tastenkombinationen aktiviert werden können. Um Debug-Informationen zum Streaming abzurufen:
Öffnen Sie das Netzwerkübersichts-Debug-Overlay über ShiftCtrlF3 (Windows) oder Shift⌘F3 (Mac).
Sobald das Debug-Overlay geöffnet ist, drücken Sie wiederholt Shift1, um durch die verfügbaren Panels zu blättern. Das vierte Panel ist die Streaming-Debug-Ansicht, die nützliche Runtime-Informationen anzeigt:
- Aktive Streaming-Einstellungen
- Derzeit geladene (hereingestreamte) Regionen
- Streaming-Verhalten und -Status
Sobald aktiviert, erscheinen farbige hervorgehobene Regionen im 3D-Viewport:
| Farbe | Beschreibung |
|---|---|
| Weniger als StreamingMinRadius | |
| Größer oder gleich StreamingMinRadius und weniger als StreamingTargetRadius | |
| Gleich StreamingTargetRadius | |
| Größer als StreamingTargetRadius |