O conteúdo deste site foi traduzido usando inteligência artificial (IA) ou tecnologia de tradução automática e pode conter erros.

Skip to content

Apresentando o SLIM: Modelos Interativos Leves e Escaláveis

Aproveitando o poder dos compostos de renderização leve para criar mundos maiores e mais detalhados para todos os dispositivos

SLIM Car Comparison.webp

O Roblox abriga milhões de experiências, desde minijogos simples até vastos mundos abertos repletos de recursos 3D de alta fidelidade. Nosso objetivo é dar suporte às experiências cada vez mais densas e complexas que os criadores imaginam em uma ampla gama de dispositivos de usuários, o que exige inovação em nosso motor, sistemas de entrega de conteúdo e infraestrutura. Os Modelos Interativos Leves e Escaláveis, ou SLIM, são parte de um esforço de desenvolvimento multifásico que permite aos criadores concretizar suas grandiosas visões artísticas sem comprometer o desempenho. 

O SLIM permite que os criadores criem automaticamente representações leves de qualquer objeto em uma experiência Roblox, minimizando o número de chamadas de renderização, triângulos e instâncias de modelos de dados exigidos pelo cliente para renderizar um mundo robusto e sem interrupções. O SLIM oferece ao nosso modelo de streaming novas e poderosas maneiras de otimizar o conteúdo, permitindo que um usuário com um PC para jogos de última geração e um usuário com um dispositivo móvel básico compartilhem a mesma experiência com a mais alta fidelidade que seus dispositivos podem suportar.

SLIM Scene.webp
De bovenstaande scène gebruikt veel minder datamodelinstanties, driehoeken en draw calls wanneer instance streaming en SLIM zijn ingeschakeld.

Sem streaming de instâncias e SLIM

Com streaming de instâncias e SLIM

Instâncias do modelo de dados do cliente

159.745

92.536

Triângulos

20 milhões

3,35 milhões

Chamadas de renderização

2.402

1.454

Os dois pilares do streaming: instâncias e ativos

Quando você assiste a um filme no seu serviço de streaming favorito, seu dispositivo não baixa o arquivo inteiro antes de você começar a assistir. Ele baixa apenas os dados necessários para você começar a assistir imediatamente e, em seguida, baixa continuamente (ou armazena em buffer) os próximos segundos para que não haja interrupção na experiência. Se você estiver assistindo em um dispositivo de baixo custo ou com conexão lenta, a plataforma se adapta automaticamente, enviando uma versão de menor qualidade do conteúdo enquanto baixa dados suficientes para transmitir o conteúdo em alta qualidade. 

O Roblox usa um conceito semelhante para transmitir conteúdo em tempo real, mas os dados necessários para representar uma simulação 3D de alta fidelidade apresentam seus próprios desafios. Enquanto um vídeo tem uma linha do tempo linear de conteúdo vista de uma única perspectiva, as experiências do Roblox contêm vastos mundos 3D interativos repletos de muitos tipos de recursos que podem ser vistos de várias perspectivas controladas pelo usuário. Acrescente 151,5 milhões de usuários ativos diários jogando, explorando e, por fim, transmitindo conteúdo a partir de uma ampla variedade de dispositivos, e há um enorme potencial para otimizar a forma como o conteúdo é entregue e exibido.1

Tudo o que um usuário vê no Roblox — um carro, uma árvore, um avatar ou um prédio — é representado como uma série de instâncias dentro do motor. Um carro utilizável, por exemplo, é dividido em instâncias para os para-choques, portas, rodas e assim por diante. Cada instância é construída na experiência usando múltiplos recursos, como malhas 3D, texturas, animações e áudio.

Quase todo o streaming no Roblox é dividido em duas tecnologias principais: streaming de instâncias e streaming de recursos.

  • O streaming de instâncias determina quais instâncias o dispositivo do usuário precisa transmitir. Não há necessidade de transmitir partes da experiência que o usuário ainda não pode ver ou com as quais não pode interagir. No exemplo acima, apenas as instâncias que representam os prédios próximos são transmitidas para o cliente.
  • O streaming de recursos determina a qualidade das instâncias transmitidas. Não há necessidade de baixar uma textura 4K de alta resolução para uma montanha tão distante que o usuário não consegue discernir detalhes finos. Na imagem acima, os prédios à distância e aqueles que ocupam uma pequena área da tela usam malhas decimadas e texturas de resolução mais baixa. 

O cérebro central dessa operação é um sistema que chamamos de Harmony, que monitora os recursos disponíveis de cada usuário a cada quadro. O Harmony ajusta tanto o streaming de instâncias quanto o de recursos para oferecer a melhor experiência com base na memória do dispositivo, na carga da GPU e da CPU e na largura de banda da rede. Para um PC gamer de ponta, o Harmony eleva tudo à mais alta qualidade. Para um dispositivo móvel com conexão fraca, ele reduz automaticamente a qualidade para manter a experiência do usuário fluida.

A equipe discutiu a tecnologia por trás do streaming, da transcodificação em nuvem e do SLIM no episódio 30 do podcast Tech Talks. 

SLIM: Modelos Interativos Leves e Escaláveis

A ideia central do SLIM é simples, mas poderosa: o SLIM pode criar automaticamente múltiplas representações leves e otimizadas de qualquer objeto ou modelo no mundo do criador e armazená-las no servidor para serem recuperadas em tempo de execução. O cliente de cada usuário pode então alternar dinamicamente entre a renderização das instâncias e ativos originais ou uma das representações leves do SLIM, com base nos recursos disponíveis do dispositivo. 

O SLIM usa duas técnicas principais para gerar uma representação leve:

1. Composição

Primeiro, o SLIM combina várias partes em um número menor de partes. Em vez do carro abaixo, que requer 112 malhas separadas e 24 texturas separadas, sua representação leve pode exigir apenas uma malha e quatro texturas. O processo de composição é ajustado com precisão para corresponder à forma como o motor renderizará o conteúdo, eliminando a geometria invisível dentro de um objeto e reduzindo o número de chamadas de renderização necessárias para renderizá-lo.

SLIM Car Comparison.webp

2. Nível de Detalhe (LoD)

Após a composição do modelo, o SLIM gera múltiplas versões em diferentes níveis de detalhe. Isso significa criar versões da malha 3D com um número significativamente menor de triângulos e gerar texturas em resoluções muito mais baixas, como fazemos com qualquer malha ou recurso de textura individual usando técnicas tradicionais de LoD. Essas técnicas podem ser ainda mais otimizadas quando aplicadas a modelos SLIM, já que temos os sistemas de coordenadas individuais de cada instância subjacente. Isso nos dá o contexto completo de como o criador pretendia que cada um desses recursos fosse renderizado em conjunto. Com esse conhecimento, o SLIM nos permite tomar decisões mais informadas sobre onde remover detalhes desnecessários e onde manter os detalhes que os usuários notarão.

undefined

A representação certa no momento certo

Depois de criarmos várias representações de um objeto, o SLIM precisa decidir qual delas usar para o dispositivo de um usuário específico ou se deve usar técnicas tradicionais de renderização. O sistema divide o mundo em três regiões distintas. Uma maneira simples de pensar nessas regiões é imaginar círculos concêntricos de detalhes se estendendo para fora a partir do reprodutor.

undefined
Streaming boundaries are not actually circular. Their shape depends on a variety of factors.

Região HH (Instâncias Pesadas, Renderização Pesada)

Na região HH, instâncias completas e pesadas são transmitidas do servidor para o modelo de dados do cliente, e o cliente determina a representação específica do ativo a ser baixada e renderizada para cada instância. O dimensionamento ainda pode ser alcançado com LoDs de malha e mips de textura nesta região, mas não há composição. Antes do SLIM, era assim que todas as instâncias transmitidas para uma experiência eram renderizadas. 

Região HL (Instâncias Pesadas, Renderização Leve) 

A região HL fica entre as regiões HH e LL. Nesta região, o cliente possui as instâncias pesadas no modelo de dados, mas pode optar por renderizar usando o pipeline de renderização completo ou o pipeline SLIM. Esta região se adapta para garantir uma transição perfeita entre as regiões HH e LL, mesmo que o usuário enfrente latência de rede. O ponto de transição entre as regiões HH e HL é dinâmico, o que permite que o Harmony escale para cima ou para baixo imediatamente em resposta a um pico de recursos em qualquer direção.

Região LL (Instâncias Leves, Renderização Leve) 

Na região LL, o cliente transmite apenas representações superleves das instâncias necessárias para definir um sistema de coordenadas para um modelo SLIM, juntamente com o mínimo indispensável de metadados. Apenas modelos SLIM compostos leves são renderizados nesta região, em vez de cada instância e ativo individualmente. A região LL requer muito menos triângulos e chamadas de desenho, e reduz o uso de memória no dispositivo do usuário em comparação com a transmissão de todas as instâncias pesadas e o uso do pipeline de renderização tradicional.

Essa técnica de região permite que o cliente renderize todo o mundo visível o tempo todo sem incorrer no custo computacional total de usar todas as instâncias e ativos pesados de uma só vez. Objetos distantes são representações altamente otimizadas e leves, que são substituídas por suas contrapartes de alta fidelidade à medida que o usuário se aproxima. A capacidade do SLIM de criar composições e múltiplos modelos LoD em escala dá ao Harmony mais recursos para otimizar a qualidade dos ativos para o dispositivo de cada usuário.

Quando tudo se encaixa, o jogador deve se sentir completamente imerso e não perceber nenhum dos pontos de transição ou níveis variáveis de detalhe.

O Futuro: Para Onde Vai o SLIM A Partir Daqui?

O SLIM é apenas o primeiro passo de uma jornada de várias etapas, e estamos ansiosos para ver como os criadores integrarão a tecnologia em seus fluxos de trabalho. Estamos explorando a expansão do SLIM em duas direções principais no futuro. 

Determinando o que mais pode ser otimizado com o SLIM 

Estamos começando com os modelos estáticos que os criadores designam no Studio, mas, no futuro, o SLIM será capaz de otimizar alguns dos modelos mais complexos do Roblox: os avatares da plataforma. Os avatares, com todas as suas animações associadas, roupas em camadas e acessórios, podem ser uma variável imprevisível para os criadores. Permitir que os avatares sejam otimizados pelo SLIM significa que o motor pode efetivamente limitar os recursos que um modelo de avatar individual utiliza.

Eventualmente, queremos dar aos criadores a opção de usar o SLIM para alterações em modelos dinâmicos. Imagine um modelo em que o servidor pode fazer alterações ativamente (por exemplo, uma porta se abre ou uma parte é destruída), mas com alguns truques inteligentes, o cliente pode reutilizar a mesma representação leve.

Otimizando o pipeline do SLIM 

Agora que temos um pipeline de ponta a ponta que oferece ao motor uma nova dimensão de flexibilidade, também estamos focados em tornar o próprio pipeline mais inteligente, mais rápido e mais eficiente. Isso inclui:

  • Reorganização de texturas: agrupar de forma inteligente várias texturas de modelos em uma única folha de textura otimizada.
  • Segmentação automática: uso automático da compreensão semântica e espacial do mundo para identificar os melhores modelos para SLIM.
  • Representações mais leves: para objetos dinâmicos que dependem menos da latência, estamos explorando a geração de representações 2D que praticamente não consomem recursos para renderização no cliente.
  • SLIM hierárquico: Aninhar modelos SLIM um após o outro para que grupos inteiros de instâncias possam ser simplificados e o motor possa selecionar dinamicamente entre níveis de granularidade — por exemplo, de uma única árvore a uma floresta e a uma massa de terra inteira repleta de florestas e outros objetos.
  • Aumento de resolução: Hoje, estamos focados em otimizar para baixo em prol do desempenho, mas muito em breve, esse mesmo sistema nos permitirá aumentar a resolução dos recursos para hardware futuro, mantendo a intenção artística original do criador. Essa nova arquitetura significa que, à medida que nosso motor fica melhor na simulação da realidade, podemos atualizar continuamente as representações que ele usa. 

O SLIM, em combinação com o Harmony e o restante de nossa arquitetura de streaming e entrega de conteúdo, é um grande salto em nossa visão de oferecer mundos mais amplos e detalhados para mais jogadores. A forte integração entre nosso motor, entrega de conteúdo e infraestrutura em nuvem, aliada à enorme base de conteúdo de milhões de criadores, nos permite construir sistemas profundamente interconectados que melhoram toda a experiência. À medida que nosso motor fica melhor em simular a realidade, podemos atualizar continuamente as representações que ele usa. Hoje, estamos focados em otimizar para baixo em termos de desempenho, mas muito em breve, esse mesmo sistema nos permitirá aumentar a resolução dos ativos para hardware futuro, mantendo a intenção artística original dos criadores.

Estamos construindo uma plataforma que não apenas respeita essa intenção artística, mas também pode entregar de forma inteligente e automática suas criações a qualquer usuário em uma ampla variedade de dispositivos em qualquer lugar onde o Roblox esteja disponível. Mal podemos esperar para ver o que a comunidade criará com ela.

1A partir do terceiro trimestre de 2025.