En el juego, la transmisión de instancias permite que el motor de Roblox cargue y descargue dinámicamente contenido 3D y las instancias relacionadas en la Workspace. Esto puede mejorar la experiencia general del jugador de varias maneras, incluyendo:
- Tiempos de unión más rápidos— Los jugadores pueden comenzar a jugar en una parte del mundo mientras más del mundo se carga en segundo plano.
- Eficiencia de memoria— Los juegos pueden jugarse en dispositivos con menos memoria ya que el contenido se transmite dinámicamente dentro y fuera. Mundos más inmersivos y detallados pueden jugarse en una gama más amplia de dispositivos.
- Mejor rendimiento— Mejores tasas de fotogramas y rendimiento, ya que el servidor puede gastar menos tiempo y ancho de banda sincronizando cambios entre el mundo y los jugadores en él. Los clientes pasan menos tiempo actualizando instancias que no son relevantes para el jugador en ese momento.
- Nivel de detalle— Cuando se configura, los modelos distantes, los avatares de plataforma y el terreno permanecen visibles incluso cuando no se transmiten a los clientes, manteniendo el juego optimizado sin sacrificar completamente los visuales de fondo. SLIM proporciona el nivel de detalle de mayor fidelidad tanto para modelos como para avatares.
La transmisión de instancias se controla a través de la propiedad Workspace.StreamingEnabled, habilitada por defecto para nuevos lugares creados en Studio. Esta propiedad no se puede establecer en un script.

Comportamiento técnico
Alcance
La lógica y las características de transmisión se aplican exclusivamente a las instancias que son descendientes de Workspace, mientras que las instancias almacenadas en otros contenedores como ReplicatedStorage y ReplicatedFirst no son elegibles para la transmisión. Por ejemplo, colocar un modelo atómico bajo ReplicatedStorage no garantiza la replicación atómica.
Transmitir
Cuando un jugador se une a un juego con la transmisión de instancias habilitada:
Las instancias en la Workspace se replican al cliente excluyendo lo siguiente:

Models configurados como Atómico, Persistente o PersistentePorJugador; ver controles de transmisión por modelo

Models configurados como No atómico (predeterminado) cuando Workspace.ModelStreamingBehavior está configurado como Improved

Descendientes de las instancias anteriores
Durante el juego, el servidor puede transmitir instancias en las categorías diferidas anteriores al cliente según las propiedades de transmisión del juego, la posición del jugador, el rendimiento del dispositivo del cliente y otras condiciones.
Transmitir fuera
Durante el juego, un cliente puede eliminar regiones de BaseParts de la Workspace del jugador según el comportamiento establecido por Workspace.StreamOutBehavior. El proceso comienza con las regiones más alejadas de los focos de replicación y se mueve más cerca, según sea necesario. Las regiones dentro del rango de Workspace.StreamingMinRadius nunca se transmiten fuera.
Ten en cuenta que un Model sin descendientes de BasePart, como uno utilizado meramente como un "contenedor" para instancias que no son de BasePart como scripts, está exento de la transmisión fuera a menos que se convierta en un descendiente de un BasePart.
Ensamblajes
Los ensamblajes físicos se transmiten dentro como unidades completas, incluyendo sus Constraints y Attachments asociados, ayudando a asegurar actualizaciones de física consistentes en los clientes. La única excepción es cuando el ensamblaje está anclado, en cuyo caso solo se transmiten los BaseParts dentro del radio de transmisión junto con sus Constraints y Attachments asociados.
Los ensamblajes no se transmiten fuera hasta que todos sus BaseParts sean elegibles para transmitirse fuera.
Propiedades de transmisión
Las siguientes propiedades controlan cómo se aplica la transmisión de instancias a tu juego. Todas estas propiedades son no scriptables y deben establecerse en el objeto Workspace en Studio.

| Propiedad | Descripción |
|---|---|
| EnableSLIMAvatars | Controla si se genera un modelo de SLIM para los personajes avatares en el juego. Cuando está habilitado, los avatares se renderizan usando SLIM de la misma manera que configurar Model.LevelOfDetail a SLIM funciona para otros modelos. Ver SLIM para más detalles. |
| ModelStreamingBehavior | Controla cómo los modelos No atómicos (predeterminado) se transmiten dentro y fuera. RECOMENDADO Usa Improved para habilitar la transmisión más eficiente para Models con descendientes de BasePart. |
| PredictiveStreamingMode | Opta por la transmisión predictiva que utiliza señales del motor para transmitir proactivamente áreas que un jugador probablemente necesitará pronto, como ubicaciones de reaparición o regiones que el jugador dejó recientemente a través de un cambio de CFrame. Las predicciones son aditivas, expiran después de un corto tiempo si no se utilizan, y se omiten en clientes con recursos limitados. |
| StreamingIntegrityMode | El juego puede comportarse de maneras no intencionadas si un jugador se mueve a una región del mundo que no se ha transmitido a ellos. Esta propiedad ofrece una forma de evitar esas situaciones potencialmente problemáticas. RECOMENDADO Usa PauseOutsideLoadedArea para equilibrar la integridad del juego sin pausar innecesariamente o con demasiada frecuencia. También puedes personalizar la pantalla de pausa. |
| StreamingMinRadius | Esta propiedad indica el radio alrededor de los focos de replicación en el que las instancias se transmiten con la máxima prioridad. Se debe tener cuidado al aumentar el valor predeterminado, ya que hacerlo requerirá más memoria y más ancho de banda del servidor a expensas de otros componentes. RECOMENDADO Usa el valor predeterminado de 64 para maximizar cuánto puede escalar el motor el juego para dispositivos de gama baja. |
| StreamingTargetRadius | Esta propiedad controla la distancia máxima desde los focos de replicación en la que las instancias se transmiten. Ten en cuenta que se permite que el motor retenga instancias previamente cargadas más allá del radio objetivo, permitiendo la memoria. Un StreamingTargetRadius más pequeño reduce la carga de trabajo del servidor, ya que el servidor no transmitirá instancias adicionales más allá del valor establecido. Sin embargo, el radio objetivo también es la distancia máxima a la que los jugadores podrán ver el detalle completo de tu juego, por lo que debes elegir un valor que cree un buen equilibrio entre estos. RECOMENDADO Usa el valor predeterminado de 1024 para lograr un buen equilibrio entre la visibilidad para jugadores en dispositivos de gama alta y una huella de memoria razonable. |
| StreamOutBehavior | Esta propiedad establece el comportamiento de transmisión fuera de acuerdo con el valor de Enum.StreamOutBehavior. Si se establece en LowMemory (predeterminado), el cliente solo transmite fuera las regiones más allá del radio mínimo en una situación de baja memoria. Si se establece en Opportunistic, las regiones más allá de StreamingTargetRadius pueden eliminarse en el cliente incluso cuando no hay presión de memoria (en este modo, el cliente nunca elimina instancias que están dentro del radio objetivo, excepto en situaciones de baja memoria). RECOMENDADO Usa Opportunistic para permitir que el cliente recolecte agresivamente contenido no utilizado, reduciendo significativamente el uso de memoria y ayudando a prevenir bloqueos por falta de memoria. |
Foco de replicación
Por defecto, la transmisión ocurre alrededor de la PrimaryPart del personaje del jugador local, aunque puedes especificar un punto de foco de replicación diferente a través de Player.ReplicationFocus.
También puedes agregar y eliminar focos de replicación adicionales a través de Player:AddReplicationFocus() y Player:RemoveReplicationFocus() para habilitar dinámicamente la transmisión en múltiples áreas del juego.
La simulación de física del lado del cliente, incluyendo predicciones y resimulación cuando se implementa la autoridad del servidor, solo ocurre en áreas transmitidas, incluso para instancias creadas localmente y para instancias de Persistent. Si tienes instancias que te gustaría seguir simulando incluso cuando están lejos del personaje, crea un foco de replicación adicional cerca de esas instancias.
Transmisión predictiva
La transmisión predictiva es una función opcional que utiliza señales del motor para anticipar el movimiento del jugador y transmitir proactivamente áreas que el jugador probablemente necesitará pronto. Cuando se habilita configurando PredictiveStreamingMode a Enabled, puede reducir las pausas de transmisión y el pop-in visual sin cambios en el código.
La transmisión predictiva es aditiva. Crea pequeños focos de transmisión temporales además de tus focos de replicación existentes, transmite una pequeña cantidad de contenido adicional y no cambia la lógica de tu juego ni los contratos de transmisión. Si no se necesita una predicción, el área predicha expira después de un corto tiempo y el motor descarga el contenido. El motor también tiene en cuenta la memoria y el rendimiento del cliente, omitiendo predicciones en dispositivos con recursos limitados.
Cuando PredictiveStreamingMode está configurado como Enabled, las siguientes características predictivas están activas:
| Característica | Descripción |
|---|---|
| Pre-carga de aparición | Cuando un jugador muere, el motor crea pequeños focos de transmisión temporales en posibles ubicaciones de reaparición para que las áreas de reaparición probables comiencen a transmitirse antes de que aparezca el personaje del jugador, reduciendo pausas y contenido faltante inmediatamente después de la reaparición. |
| Optimización de retorno de CFrame | Cuando un jugador está CFrames lejos de un área, el motor crea un pequeño foco de transmisión temporal en la ubicación que dejaron. Esto ayuda a mantener esa área transmitida si el jugador regresa poco después, un escenario común al moverse entre edificios, subniveles, tiendas o centros. |
Controles de transmisión por modelo
Para evitar problemas con la transmisión a nivel de modelo y minimizar el uso de WaitForChild(), puedes personalizar cómo se transmiten Models y sus descendientes a través de su propiedad ModelStreamingMode.
No atómico
Por defecto, los modelos son Nonatomic y se transmiten dentro/fuera según si Workspace.ModelStreamingBehavior está configurado como Legacy (predeterminado) o Improved.
Legado
Cuando Workspace.ModelStreamingBehavior está configurado como Legacy (predeterminado), el contenedor Model y sus descendientes no BasePart como Scripts se replican al cliente cuando el jugador se une. Luego, cuando son elegibles, los descendientes BasePart del modelo se transmiten.

Mejorado
Cuando Workspace.ModelStreamingBehavior está configurado como Improved, el comportamiento de transmisión del modelo varía según si el modelo contiene descendientes de BasePart o no:
Un modelo con descendientes de BasePart se transmite dentro solo cuando uno de sus descendientes de BasePart es elegible para transmitirse. En ese momento, el modelo y el BasePart elegible se transmiten, junto con los descendientes no BasePart del modelo.
Cuando el último BasePart restante del modelo se transmite fuera, el modelo en sí se transmitirá fuera junto con él.

Un modelo sin descendientes de BasePart, como uno utilizado meramente como un "contenedor" para instancias que no son de BasePart como scripts, se replica al cliente poco después de que el jugador se une. Este tipo de modelo está exento de la transmisión fuera a menos que se convierta en un descendiente de un BasePart.

Atómico
Si un Model está configurado como Atomic, todos sus descendientes iniciales se transmiten juntos cuando un descendiente BasePart es elegible para ser transmitido. Como resultado, un script del lado del cliente que necesita acceder a instancias dentro del modelo necesitaría usar WaitForChild() en el modelo mismo, pero no en un descendiente MeshPart o Part ya que se envían junto con el modelo.
Un modelo atómico solo se transmite fuera cuando todos sus partes descendientes son elegibles para la transmisión fuera, momento en el cual todo el modelo se transmite fuera junto.

Persistente
Los modelos Persistent no están sujetos a la transmisión normal dentro o fuera. Se envían como una unidad atómica completa poco después de que el jugador se une y antes de que se dispare el evento Workspace.PersistentLoaded. Los modelos persistentes y sus descendientes nunca se transmiten fuera, pero para manejar de manera segura la transmisión dentro de un script del lado del cliente, debes esperar a que se dispare el evento PersistentLoaded.

PersistentePorJugador
Los modelos configurados como PersistentPerPlayer se comportan de la misma manera que Persistent para los jugadores que han sido añadidos usando Model:AddPersistentPlayer(). Para otros jugadores, el comportamiento es el mismo que Atomic. Puedes revertir un modelo de la persistencia del jugador a través de Model:RemovePersistentPlayer().
Personalización de la pantalla de pausa
Suponiendo que Workspace.StreamingIntegrityMode está configurado en el recomendado PauseOutsideLoadedArea, el juego se pausará si un jugador se mueve a una región del mundo que no se ha transmitido a ellos. En estos casos, la propiedad Player.GameplayPaused indica el estado de pausa actual del jugador, que se puede usar con una conexión de GetPropertyChangedSignal() para mostrar u ocultar una GUI personalizada.
local Players = game:GetService("Players")
local GuiService = game:GetService("GuiService")
local player = Players.LocalPlayer
-- Desactivar el modal de pausa predeterminado
GuiService:SetGameplayPausedNotificationEnabled(false)
local function onPauseStateChanged()
if player.GameplayPaused then
-- Mostrar GUI personalizada
else
-- Ocultar GUI personalizada
end
end
player:GetPropertyChangedSignal("GameplayPaused"):Connect(onPauseStateChanged)Depuración en tiempo de ejecución
El motor incluye múltiples paneles de depuración en pantalla que se pueden habilitar en el cliente usando atajos de teclado. Para acceder a la información de depuración de transmisión:
- Abre la superposición de depuración de Resumen de Red a través de ShiftCtrlF3 (Windows) o Shift⌘F3 (Mac).
- Una vez que la superposición de depuración esté abierta, presiona Shift1 repetidamente para alternar entre los paneles disponibles. El cuarto panel es la vista de depuración de Transmisión que muestra información útil en tiempo de ejecución:
- Configuraciones de transmisión activas
- Regiones actualmente cargadas (transmitidas)
- Comportamiento y estado de transmisión
Una vez habilitados, las regiones resaltadas en color aparecen en la vista 3D:
| Color | Descripción |
|---|---|
| Menos de StreamingMinRadius | |
| Mayor o igual a StreamingMinRadius y menos de StreamingTargetRadius | |
| Igual a StreamingTargetRadius | |
| Mayor que StreamingTargetRadius |