Implantação e otimização do UG para Meta Quest

Para a Continuum XR, desenvolver o UG para a Meta Quest significou combinar coleção de criaturas, interação social e jogabilidade de VR baseada em física em uma experiência multijogador escalável para headsets independentes. Inspirado em jogos de colecionar criaturas e pilotar mechas, UG permite que os jogadores colecionem dinossauros por meio de missões, trocas e compras, e depois os montem usando locomoção no estilo gorila.
Para proporcionar essa experiência, foi necessário equilibrar redes multijogador, fluxos de trabalho de implantação e otimização de desempenho em todo o hardware da Meta Quest. A equipe também precisava dar suporte a atualizações ao vivo, sistemas de rede e interações de jogos em VR , mantendo um desempenho estável em hardware móvel.
Conversamos com os desenvolvedores de VR Mark Minehan e Conrad Dugger, e com a produtora associada Hala Louviere sobre a criação e implementação do UG com Unity, a otimização de rede e desempenho para VR independente e a escalabilidade de um jogo de VR multiplayer ao vivo em dispositivos Meta Quest.
Quais eram seus principais objetivos técnicos?
Mark Minehan: Para Meta Quest, o jogo precisava funcionar sem problemas, apesar da grande escala de UG . Testamos outros motores de jogo, mas o Unity ofereceu o melhor suporte e desempenho. O Photon Fusion 2 Shared Mode apresenta boa escalabilidade porque grande parte da rede é executada no lado do cliente, mantendo o desenvolvimento acessível e escalável.
A Unity forneceu as integrações e o suporte de que precisávamos, então aproveitamos as ferramentas existentes em vez de criar uma infraestrutura de rede ou um motor de jogo do zero.
Como você estruturou seu pipeline de compilação no Unity para oferecer suporte a uma implantação de VR eficiente?
MM: A equipe utiliza o Unity Version Control para que os membros possam trabalhar em branches simultaneamente e gerenciar suas próprias alterações. Usamos as branches principal, de produção, de desenvolvimento, beta e de funcionalidades. O Unity Version Control mantém a equipe sincronizada e facilita o envio e recebimento de alterações.
Para compilações e implantações, usamos o Unity Hub para criar Android Package Kits (APK) e o Meta Quest Developer Hub para implantá-los em minutos. A partir daí, promovemos ou rebaixamos as versões e as liberamos para jogadores ou testadores alfa.
Conrad Dugger: No lançamento, especialmente à medida que o UG ganhava força, precisávamos de visibilidade sobre o que estava acontecendo em grande escala. O editor não conseguiu simular todos os cenários, então carregamos símbolos de depuração e usamos um painel do Mixpanel para monitorar erros continuamente. Continuamos verificando diariamente e após cada atualização para garantir que os problemas não retornem. Isso nos ajuda a resolver problemas antes que eles afetem os jogadores.
MM: Podemos acessar os símbolos de falha diretamente pelo Meta, então não precisamos de uma solução personalizada. O Unity nos permite criar e enviar os arquivos para o Meta na mesma etapa ou em uma etapa separada. Para erros e exceções que os símbolos de falha não capturam, criamos ferramentas personalizadas que limitam a taxa de uploads por jogador e incluem rastreamentos de pilha completos.
Analisamos esses relatórios juntamente com o histórico do usuário para identificar o que os usuários estavam fazendo antes da ocorrência de um evento. O Mixpanel agrega eventos para que as equipes possam criar consultas, fluxos e visualizações, ajudando-nos a identificar e corrigir problemas rapidamente.

Quais foram as maiores restrições de implementação que você encontrou ao direcionar dispositivos de VR ?
CD: Para montagens, nossa configuração é simples. Utilizamos o sistema de compilação integrado do Unity e mantemos o projeto na plataforma Android . Criamos o APK, fazemos o upload para o Meta Quest Developer Hub e o distribuímos através da plataforma Meta Quest. Ocasionalmente, precisamos reconstruir um APK e observamos um pequeno número de erros de upload.
MM: Durante o período de acesso antecipado, o jogo atraiu usuários maliciosos, modders e hackers. A distribuição de APKs expôs riscos de segurança, por isso reforçamos a segurança de nossas versões para VR com soluções personalizadas e complementos da Unity Asset Store .
CD: Também utilizamos pacotes de ofuscação para proteger arquivos e o sistema de backend. Nosso processo de autoimplantação realiza verificações por meio da atestação Meta, e o PlayFab ajuda a verificar a atividade da conta e a impedir o acesso não autorizado. Também impomos versões mínimas para que os jogadores não possam fazer login usando APKs desatualizados.
Hala Louviere: O hardware de VR melhora rapidamente entre gerações, e muitos jogadores ainda usam o Meta Quest 2. Cada nova funcionalidade requer considerações de desempenho. Regularmente avaliamos as ideias com base no seu impacto no desempenho. Essa compensação representa um desafio específico na VR, onde as diferenças de hardware podem afetar significativamente a experiência do jogador.

Como a atualização do Unity 2021.1 para o Unity 6 impactou seu fluxo de trabalho de implantação?
MM: Inicialmente, usamos o Unity 2021.1 porque a equipe o havia padronizado, mas essa versão apresentava problemas de compilação e fluxo de trabalho, incluindo foco em VR e inconsistências de rastreamento.
Quando migramos para o Unity 6, escolhemos uma versão que fosse mais estável para o nosso fluxo de trabalho. A atualização exigiu alterações de código para APIs obsoletas e levou alguns dias para ser concluída. Atualizamos para maior estabilidade.
CD: Também fizemos a mudança porque o Unity 6 funcionava melhor com o Fusion. O Unity 6 também suportava uma ferramenta PlayMode que nos ajudou a testar cenários multijogador logo no início do desenvolvimento. Acabamos por deixar de o utilizar depois de reforçarmos a segurança. Resolvemos a maioria dos problemas de migração em cerca de uma semana.
MM: O principal desafio foi o comportamento de estouro do animador, mas desenvolvemos uma solução alternativa.
O Unity 6 não introduziu nenhum novo bug. O Unity 6 trouxe à tona um problema já existente relacionado aos contadores de animação que atingiam seu valor máximo. Em vez de ignorar o problema, criamos ferramentas e sistemas personalizados para o Editor, a fim de identificar as animações afetadas e redefini-las antes que transbordassem.

Como você definiu e validou as metas de desempenho durante a implementação em hardware de VR ?
MM: Monitoramos diversas métricas de desempenho. Uma métrica fundamental é a taxa de quadros por segundo (fps), com uma meta de 72 fps em nosso dispositivo. Monitoramos quedas abaixo desse limite e com que frequência elas ocorrem. Utilizamos o Unity Profiler e o painel Meta, que fornecem análises específicas para cada dispositivo.
A memória não tem sido um grande problema devido aos recursos de baixa poligonagem e aos shaders reutilizáveis, portanto, raramente vemos falhas relacionadas à memória. A criação de redes é um foco importante porque o UG possui muitos objetos e interações em rede. Trabalhamos diretamente com a equipe do Photon para resolver problemas de desempenho e travamentos, e usamos técnicas como áreas de interesse para melhorar a escalabilidade.
Também monitoramos falhas e investigamos se elas foram causadas por novas alterações ou problemas de desempenho.
Como você utilizou o Unity Profiler para otimizar builds específicos da plataforma antes da implantação?
MM: O Unity Profiler nos ajuda a rastrear picos de lag e monitorar quedas de FPS. Podemos analisar as passagens de renderização, o uso de memória e a atividade dos frames para encontrar as causas. Utilizamos o dispositivo para investigar um problema com o DinoDex. Cada jogador tem seu próprio DinoDex, então usamos uma API de busca de cena para encontrar o componente relevante em tempo de execução.
Funcionou no Editor, mas em testes ao vivo, causou travamentos severos ao abrir o DinoDex. O Profiler mostrou que a chamada da API desencadeou picos em cenas com muitos objetos. Identificamos o script e a função exatos e encontramos outros usos do mesmo padrão, reduzindo os picos de latência em todo o projeto.
CD: Tem sido fundamental para depurar problemas de desempenho. O problema com o DinoDex podia congelar o lobby por alguns segundos ao ser aberto.
Outro exemplo são as prateleiras para jogadores, que exibem fileiras de dinossauros. A implementação original gerava múltiplos objetos em rede em um único quadro, causando picos de desempenho.
O Profiler mostrou que esses picos provinham de chamadas de geração do Fusion e de grandes hierarquias de objetos com componentes NetworkObject e NetworkTransform. Isso nos ajudou a identificar o frame exato e a causa, além de resolver problemas que interrompiam a jogabilidade, incluindo reaparecimentos repetidos e travamentos.

Quais decisões de implementação ou otimizações tiveram o maior impacto na entrega de uma experiência de VR estável e de alto desempenho?
MM: O controle de qualidade é um dos nossos pontos fortes. O Unity nos permite criar versões específicas com configurações personalizáveis para modos beta e outros ambientes de teste. Podemos lançar versões para grupos menores de jogadores, corrigir problemas e enviar atualizações para a versão alfa em minutos, geralmente em menos de 10 minutos.
Esse fluxo de trabalho nos permite testar as alterações rapidamente antes que elas cheguem à base de jogadores em tempo real. A capacidade de implementar atualizações frequentes e manter esse ciclo de feedback é fundamental para a estabilidade.
CD: A otimização tem sido contínua desde o início do desenvolvimento, em janeiro de 2025. Agimos rapidamente, lançando a versão para testadores e a versão final em setembro, e depois enviando atualizações semanais após o lançamento.
Desde o início, focamos em redes, desempenho e qualidade do código. O processo de controle de qualidade (QA) permitiu esse ritmo, possibilitando testes rápidos de novos sistemas. Também evitamos funcionalidades que não justifiquem as suas desvantagens em termos de desempenho ou desenvolvimento.

Qual é a sua principal dica para aspirantes a desenvolvedores de VR ?
MM: Construa algo, mesmo que seja um pequeno protótipo. Não precisa ser polido. Compartilhe seu trabalho por meio de game jams, itch.io, SideQuest ou da Meta Horizon Store para obter feedback direto. Não leve as críticas para o lado pessoal e use o feedback para melhorar. Muitos desenvolvedores de VR evitam compartilhar conhecimento enquanto aprendem, mas trabalhar isoladamente retarda o crescimento.
HL: Os testes beta são cruciais. A UG realizou de quatro a seis semanas de testes alfa e beta fechados antes do lançamento, o que ajudou a moldar a experiência final. Os jogadores nem sempre se comportam como os desenvolvedores esperam, por isso, testadores externos revelam como o jogo é realmente jogado. Esse feedback ajuda os desenvolvedores a diminuir a diferença entre a experiência pretendida e a experiência real do jogador, e as equipes não devem ignorá-lo, mesmo que o jogo pareça pronto.
Para saber mais sobre projetos criados com Unity, visite a página de Recursos .
