En el juego, la transmisión de instancias permite que el motor de Roblox cargue y descargue dinámicamente contenido 3D y instancias relacionadas en el 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 que más del mundo se carga en segundo plano.
- Eficiencia de memoria— Los juegos se pueden jugar en dispositivos con menos memoria ya que el contenido se transmite de forma dinámica. Mundos más inmersivos y detallados pueden jugarse en una gama más amplia de dispositivos.
- Rendimiento mejorado— 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 actualmente relevantes para el jugador.
- Nivel de detalle— Cuando se configura, los modelos distantes, avatares de plataforma y terrenos permanecen visibles incluso cuando no se transmiten a los clientes, manteniendo el juego optimizado sin sacrificar completamente los visuales de fondo.
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 transmisión. Por ejemplo, colocar un modelo atómico debajo de 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 el 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 Noatómico (por defecto) cuando Workspace.ModelStreamingBehavior está configurado como Improved

Descendientes de las instancias anteriores
Durante el juego, el servidor puede transmitir instancias de las categorías diferidas anteriores al cliente basándose en 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 del 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 BasePart, como el que se utiliza meramente como "contenedor" para instancias no 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 los BaseParts dentro del radio de transmisión se transmiten junto con sus Constraints y Attachments asociados.
Los ensamblajes no se transmiten fuera hasta que todas sus BaseParts sean elegibles para la transmisión.
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 configurarse en el objeto Workspace en Studio.

| Propiedad | Descripción |
|---|---|
| EnableSLIMAvatars | Controla si se genera un modelo SLIM para los personajes avatares en el juego. Cuando está habilitado, los avatares se representan utilizando SLIM de la misma manera que la configuración de Model.LevelOfDetail a SLIM funciona para otros modelos. |
| ModelStreamingBehavior | Controla cómo los modelos Noatómicos (por defecto) se transmiten dentro y fuera. RECOMENDADO Usa Improved para habilitar la transmisión más eficiente para Models con descendientes BasePart. |
| 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 detenerse innecesariamente o demasiado a menudo. 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ás alta prioridad. Se debe tener cuidado al aumentar el valor predeterminado, ya que hacerlo requerirá más memoria y más ancho de banda en el servidor a expensas de otros componentes. RECOMENDADO Usa el valor predeterminado de 64 para maximizar cuánto puede reducir 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, siempre que la memoria lo permita. Un valor más pequeño de StreamingTargetRadius 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 encontrar un buen equilibrio entre 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 (por defecto), 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 ser eliminadas 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 en la basura, reduciendo significativamente el uso de memoria y ayudando a prevenir fallos por falta de memoria. |
Foco de replicación
Por defecto, la transmisión ocurre alrededor del PrimaryPart del personaje local del jugador, 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 la predicción y las resimulaciónes cuando se implementa la autoridad del servidor, solo ocurre en áreas transmitidas, incluso para instancias creadas localmente y para instancias 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.
Controles de transmisión por modelo
Para evitar problemas con la transmisión en un formato por modelo y minimizar el uso de WaitForChild(), puedes personalizar cómo se transmiten los Models y sus descendientes a través de su propiedad ModelStreamingMode.
Noatómico
Por defecto, los modelos son Nonatomic y se transmiten dentro/fuera según si Workspace.ModelStreamingBehavior está configurado como Legacy (por defecto) o Improved.
Legado
Cuando Workspace.ModelStreamingBehavior está configurado como Legacy (por defecto), 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 BasePart o no los contiene:
Un modelo con descendientes BasePart se transmite dentro solo cuando uno de sus descendientes 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 se transmite fuera el último BasePart restante del modelo, el modelo en sí se transmitirá fuera junto con él.

Un modelo sin descendientes BasePart, como aquel utilizado simplemente como "contenedor" para instancias no 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 necesite 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, en ese momento, todo el modelo se transmite fuera junto con él.

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 se han agregado utilizando Model:AddPersistentPlayer(). Para otros jugadores, el comportamiento es el mismo que Atomic. Puedes revertir un modelo de persistencia por jugador mediante Model:RemovePersistentPlayer().
Personalización de la pantalla de pausa
Suponiendo que Workspace.StreamingIntegrityMode está configurado como 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 utilizar con una conexión GetPropertyChangedSignal() para mostrar u ocultar una GUI personalizada.
LocalScript
local Players = game:GetService("Players")
local GuiService = game:GetService("GuiService")
local player = Players.LocalPlayer
-- Deshabilitar 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 utilizando atajos de teclado. Para acceder a información de depuración de transmisión:
Abre la superposición de depuración de Resumen de Red mediante 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:
- Configuración de transmisión activa
- Regiones actualmente cargadas (transmitidas)
- Comportamiento y estado de transmisión
Una vez habilitado, aparecen regiones resaltadas coloreadas en el visor 3D:
| Color | Descripción |
|---|---|
| Menos de StreamingMinRadius | |
| Mayor o igual a StreamingMinRadius y menor que StreamingTargetRadius | |
| Igual a StreamingTargetRadius | |
| Mayor que StreamingTargetRadius |