As atualizações do tempo de execução da Web estão aqui: Leve seu navegador para o próximo nível

Na Unite 2023, revelamos nossas mais recentes ofertas de tempo de execução da web. Isso incluiu mais detalhes sobre o suporte altamente antecipado para navegadores móveis, uma visão antecipada do que o WebGPU pode fazer por gráficos avançados e renderização em navegadores de desktop e um anúncio emocionante com nossos parceiros da Meta para levar os títulos Unity para a plataforma Instant Games no Facebook e Messenger. Continue lendo para saber mais sobre o que está reservado para seu próximo projeto baseado na web.
O Unity tem uma longa história com tempos de execução web. Em 2006, o web player Unity estreou como um plug-in para navegadores da web. Com o advento do HTML5, os navegadores começaram a remover o suporte para plug-ins, e o web player do Unity foi descontinuado em 2015. Em seguida, adotamos o WebGL para executar jogos diretamente no navegador com asm.js. A Unity estava presente no início do processo de design do WebAssembly (WASM) e temos evoluído junto com o WASM desde então. Isso traz um desempenho quase nativo do Unity Engine para a web. Na versão 2018.2, nossa solução WebAssembly substituiu o asm.js como padrão.
Já faz algum tempo que você não ouve falar de nós, mas acreditamos que agora estamos em um ponto crítico para o conteúdo do Unity na web.
Além dos nossos avanços tecnológicos, atualizamos nosso esquema de nomenclatura para a plataforma. O WebGL agora é conhecido como Unity Web para separar a tecnologia WebGL da plataforma web da Unity. Também queremos nos preparar para um futuro com mais de um padrão de renderização. Eventualmente, você poderá criar uma compilação usando WebGL, uma com WebGPU ou uma única compilação com ambas.
Oferecer conteúdo dessa forma dá aos jogadores acesso instantâneo a uma experiência com apenas um clique em um link – ou a leitura de um código QR – sem precisar instalar nada em seus dispositivos. Além disso, ao levar seu conteúdo para o ambiente seguro dos navegadores, você tem uma conexão direta entre você e seus jogadores, sem que outra loja online atrapalhe.
O Web não tem uma etapa de instalação como outras plataformas, o que promete baixo atrito e engajamento instantâneo. No entanto, isso significa que os usuários precisam baixar o tempo de execução e os ativos iniciais no primeiro carregamento. Isso significa que, para nós, para você e para todos os usuários finais, o tempo de carregamento é tudo. Há muito trabalho sendo feito para reduzir os tempos de carregamento, e você ouvirá mais sobre isso mais adiante neste post.
A profundidade e a amplitude do mecanismo dão aos desenvolvedores o poder de lidar com simulações mais complexas e elementos interativos em comparação com outras tecnologias da web. Dito isso, com os usuários baixando o tempo de execução e os ativos iniciais antecipadamente, menor quase sempre é melhor no contexto da web – pelo menos por enquanto.
Considerando essas compensações, certamente há alguns tipos de jogos que funcionam melhor na web do que outros, como jogos casuais e hipercasuais, com suas sessões de jogo curtas e mecânicas fáceis de entender.
Além disso, você pode aproveitar a natureza de baixo atrito da web pegando uma pequena parte de um jogo maior, digamos, seu nível de tutorial, e criando sua própria web separada do resto do jogo e disponível para todos. Isso permite uma experiência sem atritos para o jogador iniciante, sem precisar instalar nada em seus dispositivos, e dá a você a oportunidade de converter o jogador para o aplicativo nativo completo depois que ele se envolver com a mecânica.
O Artemis Real-time Orbit Website (AROW) é um rastreador interativo em tempo real para a missão Artemis I, lançada em novembro passado e construída com Unity.
Na mitologia, Ártemis é irmã gêmea de Apolo, então a NASA nomeou a série de missões que marcam seu retorno à superfície lunar em homenagem à figura grega.
Fãs do espaço ao redor do mundo puderam rastrear onde a cápsula Orion estava em órbita, bem como ver seu eventual local de aterrissagem no Oceano Pacífico, tudo isso em seus navegadores de desktop. A NASA está planejando desenvolver essa ferramenta para todas as futuras missões Artemis e expandi-la para rastrear não apenas a cápsula Orion, mas todos os componentes da missão.
O AROW foi criado por um estagiário, Seth Lambert, que desde então se tornou membro em tempo integral da equipe de comunicações da NASA.
Na Unite, temos o orgulho de anunciar que o suporte aos navegadores Android e iOS estará disponível no Unity 6. Em breve, você poderá executar seus jogos Unity em qualquer lugar da web, inclusive nos navegadores iOS ou Android. Você também poderá incorporar seus jogos em uma visualização web em um aplicativo nativo ou usar nosso modelo de aplicativo web progressivo para fazer seu jogo se comportar mais como um aplicativo nativo, com seu próprio atalho e funcionalidade offline. Estamos confiantes de que, se você tem como alvo o Unity Web em dispositivos móveis, provavelmente obteve sucesso com dispositivos móveis de última geração lançados nos últimos dois ou três anos, mas seus resultados podem ter variado dependendo do seu conteúdo. Quando lançarmos o Unity 6, teremos orientações mais claras sobre os requisitos mínimos de hardware para o Unity Web em dispositivos móveis.
Aqui você pode ver nosso recente projeto de amostra 2DHappy Harvest sendo executado no Safari em um iPhone 15 Pro.

O Safari começou a oferecer suporte ao WebGL2, permitindo que o Unity Web funcione em dispositivos iOS e Android. Temos visto avanços contínuos na velocidade e confiabilidade da rede móvel, bem como na melhoria constante da potência da CPU e da GPU. Com o público moderno ávido por experiências instantâneas com muito pouco atrito, acreditamos que os jogadores agora estão preparados para conteúdo interativo de formato curto.
Conforme anunciado no Unite Keynote, a Unity fez uma parceria com a Meta para criar suporte para sua plataforma Instant Games. Ao desbloquear esse ecossistema para criadores, os jogadores poderão encontrar e jogar instantaneamente no Facebook e nas conversas do Messenger. Com um público de jogadores na casa das centenas de milhões, esta é uma oportunidade fantástica para você estender o alcance do seu conteúdo para um público totalmente novo.
“A estreita colaboração entre a Meta e a Unity já rendeu alguns resultados iniciais promissores em termos de ganhos de desempenho para jogos HTML5 criados usando a Unity”, observou Andrew Mo, líder de produto do Facebook Gaming na Meta. “Estamos animados para continuar esse impulso no próximo ano e ansiosos para tornar mais fácil para os desenvolvedores de jogos levarem seu conteúdo para o Facebook e o Messenger.”
Ele acrescentou: “Acreditamos que há muito potencial em tornar os jogos instantaneamente acessíveis, especialmente quando eles são projetados para serem jogados com seus amigos e sua comunidade. E estamos entusiasmados com a parceria com a Unity para desbloquear esse potencial em nossa plataforma.”
“Há muito potencial em tornar os jogos instantaneamente acessíveis, especialmente quando eles são projetados para serem jogados com seus amigos e comunidade [...] estamos animados em fazer parceria com a Unity para desbloquear esse potencial em nossa plataforma.” – Andrew Mo, líder de produto para jogos do Facebook, Meta
Há uma série de coisas nas quais a equipe da plataforma Unity Web está trabalhando para facilitar essa parceria, incluindo um destino de compilação dedicado para que você possa testar, otimizar e publicar jogos em um fluxo simplificado, adaptado para Instant Games. Haverá um SDK C# para interagir com as APIs de jogos instantâneos e uma infinidade de novas otimizações para garantir que os jogadores possam entrar nos jogos em segundos.
Também estamos fazendo parcerias com estúdios de jogos para validar essa nova ferramenta. Os parceiros de lançamento incluem a Coatsink, que tem alguns jogos nas plataformas da Meta, incluindo Ready, Set, Cook! Logo após a Coatsink assinar como parceira de lançamento, a equipe da Unity aplicou algumas otimizações iniciais neste jogo, e os resultados foram extremamente promissores.

Com uma queda de apenas 25% no tempo de carregamento, as sessões ativas cresceram 50% e as taxas de cliques para reproduzir saltaram de 35% para 58%. Isso significa que, logo no início desse trabalho de otimização, o Ready, Set, Cook! passou de uma fase em que a maioria dos jogadores nunca via o jogo para uma fase em que a maioria entrava em uma partida com os amigos. Esta é apenas a ponta do iceberg da otimização, mas você pode ver como reduções relativamente pequenas no tempo de carregamento podem fazer uma grande diferença no engajamento.
Este gráfico mostra uma comparação entre a versão original fornecida pela Coatsink e a versão otimizada com nossas mais recentes ferramentas prontas para Instant Games aplicadas. Como você pode ver, já reduzimos o tempo de interatividade do Ready, Set, Cook! em mais de 50%. Este teste específico foi executado em um Pixel 5 limitado a 48 Mbps.

No gráfico acima, você pode ver quais eram os tempos de carregamento antes da otimização e onde estamos atualmente usando Ready, Set, Cook! como título de teste. Primeiro, limitado a 48 Mbps – esta é a velocidade média global da rede móvel, conforme relatado pela Ookla, nem mesmo 5G. Na velocidade média global de banda larga, 86 Mbps, somos ainda mais rápidos. Em uma conexão 5G sólida a 176 Mbps, vimos velocidades ainda mais rápidas, mas também encontramos retornos decrescentes, pois a largura de banda da rede não é mais o principal fator limitante.
Para obter tempos de carregamento rápidos, é necessário observar todos os aspectos do download e da inicialização do seu jogo no navegador da web.
Uma construção web consiste em vários arquivos:
- Arquivo WebAssembly (.wasm): Este é o executável binário, incluindo o Unity Engine e a lógica do seu jogo.
- Um grande arquivo de recursos (.data): Isso inclui metadados globais e recursos de ativos para cenas incluídas na compilação.
- Pode haver pacotes de ativos ou Addressables.
- Seu modelo WebGL (HTML e CSS) e alguns arquivos JavaScript do Unity Framework para colocar tudo em funcionamento.
Para começar, existem algumas práticas recomendadas iniciais que você deve seguir para criar uma boa versão de lançamento, incluindo:
- Dizendo ao compilador e ao vinculador para construir o tamanho de código ideal
- Usando compressão Brotli
- Adicionar tags de pré-carregamento HTTP ao seu modelo da web para carregar quaisquer pacotes de ativos e Addressables necessários para a primeira cena.
Tornaremos esses recursos o padrão na próxima meta de compilação dos Instant Games.
Além disso, pense em como reduzir o tempo de carregamento percebido pelos seus jogadores exibindo uma tela inicial ou animação enquanto o Unity Engine estiver carregando e inicializando.
Dependendo do seu jogo, os ativos podem ser maiores ou menores que o WebAssembly.
Primeiro, considere algumas práticas recomendadas. Como o tempo necessário para carregar a primeira cena é crítico, considere usar o Unity Addressables System para dividir cada ativo em um download separado. Em seguida, adicione tags de pré-carregamento HTTP para pré-carregar os Addressables necessários para a primeira cena. As cenas subsequentes carregarão os ativos sob demanda do sistema Addressables .
Se o seu jogo tiver muito uso de áudio, certifique-se de usar áudio compactado e considere forçá-lo para mono e diminuir a qualidade do áudio.
Segundo, vamos dar uma olhada nas configurações gráficas usadas. A escolha de texturas compactadas do ETC Crunch proporciona os menores tamanhos de download e mantém o uso de memória da GPU baixo em dispositivos móveis. Se você estiver usando texturas compactadas ASTC, observe cuidadosamente o tamanho do bloco, escolhendo tamanhos de bloco maiores para texturas menores. Da mesma forma, configure a remoção de shaders nas configurações do Player do seu projeto.
A tecnologia WebAssembly não está parada e estamos trazendo atualizações para o Unity. Somos extremamente gratos pelo trabalho realizado nas Comunidades Web W3C para dar suporte a essas tecnologias avançadas. Os jogos na web não são possíveis sem os investimentos e o suporte de todos os desenvolvedores de navegadores. Agradecemos particularmente nossa colaboração com a equipe do Chrome no Google. Juntos, trabalhamos para fortalecer casos de uso de jogos para WebAssembly e desempenho gráfico para cargas de trabalho de jogos complexas.
O compilador Emscripten traz sua compilação Unity il2cpp para o WebAssembly. Com cada novo lançamento de Suporte de Longo Prazo (LTS), incluímos a versão mais recente do Emscripten, permitindo compilações de desenvolvimento mais rápidas e compilações de lançamento menores e mais otimizadas (que podem levar um tempo para serem criadas).
No Unity 6, você poderá habilitar o suporte a 4 GB de memória. Isso permite experiências 3D maiores em tempo real na web, aproveitando a maior memória disponível para navegadores de desktop. No futuro, isso abrirá caminho para o suporte à memória de 64 bits quando todos os navegadores lançarem suporte para ela.
Atualmente, quando você habilita o suporte a exceções para compilações web, há alguma sobrecarga, como quando o código é adicionado a todas as funções para oferecer suporte a try/catch. Com o tratamento de exceções nativo do WebAssembly, que estará disponível como uma opção no Unity 6, as exceções estarão disponíveis com pouca sobrecarga.
Também no Unity 6, você pode habilitar o suporte ao SIMD do WebAssembly. Isso acelera os cálculos matemáticos da CPU com instruções vetorizadas. Ele funciona em dispositivos x64 e Arm, mapeando as instruções SIMD do WebAssembly para SSE ou Arm NEON quando a página da web é carregada. As melhorias aqui variam de acordo com o dispositivo e o navegador, mas são perceptíveis.
Esses recursos são opcionais e estão disponíveis apenas em versões mais recentes do navegador.
A introdução de um novo backend WebGPU representa um marco significativo para a aceleração gráfica baseada na web, abrindo caminho para avanços sem precedentes na fidelidade de renderização gráfica para jogos web Unity .
O WebGPU foi projetado com o objetivo de aproveitar e expor os recursos modernos da GPU na web. Esta nova API da Web consegue isso fornecendo uma interface moderna de aceleração gráfica que é implementada internamente por meio de APIs de GPU nativas, como DirectX 12, Vulkan ou Metal, dependendo do dispositivo de desktop usado.
O WebGPU desbloqueará o suporte para novos e interessantes recursos de renderização, permitindo um nível de fidelidade gráfica nunca antes visto na web para desktop. Assim como outras APIs gráficas modernas, o controle de nível inferior sobre a configuração de renderização e a execução da GPU desbloqueia novas oportunidades de otimização, o que pode levar à redução da sobrecarga da CPU e da GPU e à melhoria do rendimento e da latência.
O WebGPU também traz shaders de computação para a web pela primeira vez. O GPU Compute Skinning melhora radicalmente o desempenho da renderização de personagens de malha com skin. Agora, todas as transformações de vértices são transferidas para a GPU. A demonstração acima aproveita o GPU Skinning para unir a pele desses robôs ao esqueleto por baixo, mantendo uma taxa de quadros relativamente alta. Se isso fosse feito na CPU, ele rodaria a FPS de um dígito.

Outro exemplo é o VFX Graph da Unity, que gera geometria proceduralmente diretamente dentro dos shaders de computação. Na simulação de partículas abaixo, temos pouco mais de meio milhão de partículas sendo animadas, e todas elas estão sendo movidas por shaders de computação na GPU.

Você pode ter visto a demonstração do Boat Attack acima no passado. Agora, você pode vê-lo rodando inteiramente na WebGPU. O WebGPU está habilitado hoje no Google Chrome e no Microsoft Edge no macOS e no Windows. Neste último exemplo, exibimos um ataque de barcointerativo, renderizado em WebGPU.

Durante o desenvolvimento do backend da Unity para WebGPU, os engenheiros gráficos da Unity trabalharam em estreita colaboração com a equipe do Chrome para testar o WebGPU com cenas grandes e shaders complexos, produzindo resultados fantásticos.
O backend gráfico WebGPU ainda está em desenvolvimento e não recomendamos usá-lo para casos de uso em produção. No entanto, ele já está disponível em acesso antecipado. Detalhes sobre como começar podem ser encontrados no fórum de gráficos.
A web é incrivelmente poderosa devido ao seu potencial de engajamento sem atrito e conexão direta com seus jogadores. Como eles baixam o WASM e os ativos iniciais antecipadamente, reduzir o tempo de carregamento é essencial para projetos web. Por causa dessas compensações, pedaços menores de conteúdo geralmente são mais adequados para a web.
No final de 2024, crie e implante seus Jogos Instantâneos no Facebook e no Messenger para acessar um público totalmente novo. Se você gostaria de trabalhar diretamente com a Unity e a Meta para obter acesso antecipado a ferramentas e recursos para tornar seus Instant Games um sucesso, ou gostaria de se manter atualizado sobre esta nova iniciativa de suporte de plataforma, registre seu interesse hoje mesmo.
O suporte à web móvel começa no Unity 6. Saiba mais sobre o Unity 6 no Unite Keynote.
Se você é do tipo que gosta de mexer, leia nossa postagem no fórum sobre o WebGPU – que chega no Unity 6 – para obter informações sobre acesso antecipado ao backend do WebGPU. Em seguida, descubra ainda mais sobre os últimos desenvolvimentos do mecanismo nas sessões Unite 2023, agora disponíveis e sob demanda, incluindo a sessão Unite “Leve seu jogo Unity instantaneamente para mais jogadores na web” (incorporada abaixo).