Presentamos SLIM: modelos interactivos ligeros y escalables
Aprovechamiento del potencial de los compuestos de renderizado ligero para crear mundos más amplios y detallados para cualquier dispositivo

Roblox alberga millones de experiencias, desde sencillos minijuegos hasta vastos mundos abiertos repletos de recursos 3D de alta fidelidad. Nuestro objetivo es dar soporte a las experiencias cada vez más densas y complejas que los creadores imaginan en una amplia gama de dispositivos de los usuarios, lo que requiere innovación en nuestro motor, nuestros sistemas de distribución de contenido y nuestra infraestructura. Los Modelos Interactivos Ligeros y Escalables, o SLIM, forman parte de un esfuerzo de desarrollo en varias fases que permite a los creadores hacer realidad sus grandes visiones artísticas sin comprometer el rendimiento.
SLIM permite a los creadores generar automáticamente representaciones ligeras de cualquier objeto en una experiencia de Roblox, minimizando el número de llamadas de dibujo, triángulos e instancias de modelos de datos que necesita el cliente para renderizar un mundo robusto y fluido. SLIM proporciona a nuestro modelo de streaming nuevas y potentes formas de optimizar el contenido, lo que permite que un usuario con un PC para juegos de gama alta y otro con un dispositivo móvil de gama baja compartan la misma experiencia con la máxima fidelidad que su dispositivo pueda soportar.

Sin streaming de instancias y SLIM | Con streaming de instancias y SLIM | |
Instancias del modelo de datos del cliente | 159 745 | 92 536 |
Triángulos | 20 millones | 3,35 millones |
Llamadas de dibujo | 2.402 | 1.454 |
Los dos pilares del streaming: instancias y activos
Cuando ves una película en tu servicio de streaming favorito, tu dispositivo no descarga el archivo completo antes de que empieces a verla. Descarga solo los datos necesarios para que puedas empezar a verla inmediatamente y, a continuación, descarga (o almacena en el búfer) continuamente los siguientes segundos para que no haya interrupciones en la experiencia. Si estás viendo contenido en streaming en un dispositivo de gama baja o con una conexión lenta, la plataforma se adapta automáticamente enviándote una versión del contenido con menor calidad mientras descarga los datos necesarios para reproducir el contenido en alta calidad.
Roblox utiliza un concepto similar para transmitir contenido sobre la marcha, pero los datos necesarios para representar una simulación 3D de alta fidelidad plantean sus propios retos. Mientras que un vídeo tiene una línea temporal lineal de contenido que se ve desde una única perspectiva, las experiencias de Roblox contienen vastos mundos 3D interactivos llenos de muchos tipos de elementos que pueden verse desde múltiples perspectivas controladas por el usuario. Si a esto le sumamos los 151,5 millones de usuarios activos diarios que juegan, exploran y, en última instancia, transmiten contenido desde una amplia variedad de dispositivos, existe un enorme potencial para optimizar la forma en que se entrega y muestra el contenido.1
Todo lo que un usuario ve en Roblox —un coche, un árbol, un avatar o un edificio— se representa como una serie de instancias dentro del motor. Un coche utilizable, por ejemplo, se desglosa en instancias para los parachoques, las puertas, las ruedas, etc. Cada instancia se construye en la experiencia utilizando múltiples activos, como mallas 3D, texturas, animaciones y audio.
Casi todo el streaming en Roblox se divide en dos tecnologías principales: el streaming de instancias y el streaming de activos.
- El streaming de instancias determina qué instancias debe transmitir el dispositivo del usuario. No es necesario transmitir partes de la experiencia que el usuario aún no puede ver o con las que no puede interactuar. En el ejemplo anterior, solo se transmiten al cliente las instancias que representan los edificios cercanos.
- La transmisión de activos determina la calidad de las instancias transmitidas. No hay necesidad de descargar una textura 4K de alta resolución para una montaña tan lejana que el usuario no puede distinguir los detalles finos. En la imagen anterior, los edificios en la distancia y los que ocupan poco espacio en pantalla utilizan mallas decimadas y texturas de menor resolución.
El cerebro central de esta operación es un sistema que llamamos Harmony, que supervisa los recursos disponibles de cada usuario en cada fotograma. Harmony ajusta tanto la transmisión de instancias como la de activos para ofrecer la mejor experiencia en función de la memoria del dispositivo, la carga de la GPU y la CPU, y el ancho de banda de la red. En el caso de un PC para juegos de gama alta, Harmony lo sube todo a la máxima calidad. En el caso de un dispositivo móvil con una conexión débil, lo reduce automáticamente para mantener una experiencia de usuario fluida.
El equipo habló sobre la tecnología que hay detrás del streaming, la transcodificación en la nube y SLIM en el episodio 30 del podcast Tech Talks.
SLIM: Modelos interactivos ligeros y escalables
La idea central de SLIM es sencilla pero potente: SLIM puede crear automáticamente múltiples representaciones ligeras y optimizadas de cualquier objeto o modelo en el mundo del creador y almacenarlas en el servidor para recuperarlas en tiempo de ejecución. El cliente de cada usuario puede entonces alternar dinámicamente entre la representación de las instancias y los activos originales o una de las representaciones ligeras de SLIM, en función de los recursos disponibles del dispositivo.
SLIM utiliza dos técnicas principales para generar una representación ligera:
1. Composición
En primer lugar, SLIM combina múltiples partes en un número menor de ellas. En lugar de que el coche que se muestra a continuación requiera 112 mallas y 24 texturas separadas, su representación ligera podría requerir solo una malla y cuatro texturas. El proceso de composición se ajusta con precisión para que coincida con la forma en que el motor renderizará finalmente el contenido, eliminando la geometría invisible dentro de un objeto y reduciendo el número de llamadas de dibujo necesarias para renderizarlo.

2. Nivel de detalle (LoD)
Tras componer el modelo, SLIM genera múltiples versiones con diferentes niveles de detalle. Esto implica crear versiones de la malla 3D con un número significativamente menor de triángulos y generar texturas con resoluciones mucho más bajas, tal y como hacemos con cualquier malla o recurso de textura individual utilizando técnicas tradicionales de LoD. Estas técnicas pueden optimizarse aún más cuando se aplican a modelos SLIM, ya que disponemos de los marcos de coordenadas individuales de cada instancia subyacente. Esto nos proporciona un contexto completo sobre cómo el creador pretendía que se renderizaran conjuntamente cada uno de estos recursos. Con este conocimiento, SLIM nos permite tomar decisiones más fundamentadas sobre dónde eliminar detalles innecesarios y dónde conservar los detalles que los usuarios notarán.

La representación adecuada en el momento adecuado
Una vez que hemos creado múltiples representaciones de un objeto, SLIM debe decidir cuál utilizar para el dispositivo de un usuario específico o si, por el contrario, utilizar técnicas de renderizado tradicionales. El sistema divide el mundo en tres regiones distintas. Una forma sencilla de concebir estas regiones es imaginar círculos concéntricos de detalle que se extienden hacia fuera desde el reproductor.

Región HH (instancias pesadas, renderizado pesado)
En la región HH, las instancias completas y pesadas se transmiten desde el servidor al modelo de datos del cliente, y este determina la representación específica del activo que se debe descargar y renderizar para cada instancia. En esta región, el escalado se puede seguir logrando con los niveles de detalle (LoD) de malla y los mips de textura, pero no hay composición. Antes de SLIM, así es como se renderizaba cada instancia que se transmitía a una experiencia.
Región HL (instancias pesadas, renderizado ligero)
La región HL se sitúa entre las regiones HH y LL. En esta región, el cliente tiene las instancias pesadas en el modelo de datos, pero puede elegir renderizar utilizando el canal de renderizado completo o el canal SLIM. Esta región se adapta para garantizar una transición fluida entre las regiones HH y LL, incluso si el usuario se encuentra con latencia de red. El punto de transición entre las regiones HH y HL es dinámico, lo que permite a Harmony escalar hacia arriba o hacia abajo de forma inmediata en respuesta a un pico de recursos en cualquier dirección.
Región LL (instancias ligeras, renderizado ligero)
En la región LL, el cliente solo transmite representaciones ultraligeras de las instancias necesarias para definir un marco de coordenadas para un modelo SLIM, junto con los metadatos mínimos imprescindibles. En esta región solo se renderizan modelos SLIM compuestos ligeros, en lugar de cada instancia y activo individual. La región LL requiere muchos menos triángulos y llamadas de dibujo, y reduce el uso de memoria en el dispositivo del usuario en comparación con la transmisión de todas las instancias pesadas y el uso del canal de renderizado tradicional.
Esta técnica de región permite al cliente renderizar todo el mundo visible en todo momento sin incurrir en el coste computacional total que supone utilizar todas las instancias y activos pesados a la vez. Los objetos lejanos son representaciones ligeras y altamente optimizadas, que se sustituyen por sus equivalentes de alta fidelidad a medida que el usuario se acerca. La capacidad de SLIM para crear composiciones y múltiples modelos LoD a escala proporciona a Harmony más herramientas para optimizar la calidad de los activos en el dispositivo de cada usuario.
Cuando todo encaja, el jugador debería sentirse completamente inmerso y no notar ninguno de los puntos de transición ni los distintos niveles de detalle.
El futuro: ¿hacia dónde va SLIM a partir de aquí?
SLIM es solo el primer paso de un viaje de varios pasos, y estamos deseando ver cómo los creadores integran la tecnología en sus flujos de trabajo. Estamos explorando la posibilidad de ampliar SLIM en dos direcciones principales en el futuro.
Determinar qué más se puede aplicar a SLIM
Estamos empezando con los modelos estáticos que los creadores designan en Studio, pero en el futuro, SLIM podrá optimizar algunos de los modelos más complejos de Roblox: los avatares de la plataforma. Los avatares, con todas sus animaciones asociadas, ropa en capas y accesorios, pueden ser una variable impredecible para los creadores. Permitir que los avatares se apliquen a SLIM significa que el motor puede limitar eficazmente los recursos que utiliza un modelo de avatar individual.
Con el tiempo, queremos ofrecer a los creadores la opción de aprovechar SLIM para realizar cambios en modelos dinámicos. Imagina un modelo en el que el servidor pueda realizar cambios de forma activa (por ejemplo, que se abra una puerta o se destruya una parte), pero en el que, con unos cuantos trucos ingeniosos, el cliente pueda reutilizar la misma representación ligera.
Optimización del proceso de SLIM
Ahora que contamos con un proceso de principio a fin que proporciona al motor una nueva dimensión de flexibilidad, también nos centramos en hacer que el propio proceso sea más inteligente, rápido y eficiente. Esto incluye:
- Reagrupación de texturas: agrupar de forma inteligente múltiples texturas de modelos en una única hoja de texturas optimizada.
- Segmentación automática: uso automático de la comprensión semántica y espacial del mundo para identificar los mejores modelos aptos para SLIM.
- Representaciones más ligeras: para los objetos dinámicos que dependen menos de la latencia, estamos explorando la generación de representaciones 2D que prácticamente no consumen recursos al renderizarse en el cliente.
- SLIM jerárquico: anidar modelos SLIM uno tras otro para que se puedan simplificar grupos enteros de instancias y el motor pueda seleccionar dinámicamente entre niveles de granularidad; por ejemplo, desde un solo árbol hasta un bosque o una masa continental llena de bosques y otros objetos.
- Aumento de resolución: hoy en día, nos centramos en optimizar a la baja para mejorar el rendimiento, pero muy pronto este mismo sistema nos permitirá aumentar la resolución de los activos para el hardware futuro, manteniendo al mismo tiempo la intención artística original del creador. Esta nueva arquitectura significa que, a medida que nuestro motor mejora en la simulación de la realidad, podemos actualizar continuamente las representaciones que utiliza.
SLIM, en combinación con Harmony y el resto de nuestra arquitectura de streaming y distribución de contenidos, supone un enorme salto adelante en nuestra visión de ofrecer mundos más amplios y detallados para un mayor número de jugadores. La estrecha integración de nuestro motor, la distribución de contenidos y la infraestructura en la nube, junto con la enorme base de contenidos de millones de creadores, nos permite construir sistemas profundamente interconectados que mejoran la experiencia en su conjunto. A medida que nuestro motor mejora en la simulación de la realidad, podemos actualizar continuamente las representaciones que utiliza. Hoy en día, nos centramos en optimizar el rendimiento, pero muy pronto este mismo sistema nos permitirá aumentar la resolución de los activos para el hardware futuro, manteniendo al mismo tiempo la intención artística original de los creadores.
Estamos construyendo una plataforma que no solo respeta esa intención artística, sino que también puede distribuir de forma inteligente y automática sus creaciones a cualquier usuario en una amplia variedad de dispositivos en cualquier lugar donde Roblox esté disponible. Estamos deseando ver lo que la comunidad crea con ella.



