Fusão de mundos no emocionante modo Multiplayer Histera | Unity

Descubra como os ganhos de desempenho do DOTS ajudam a StickyLock a transportar os jogadores pelo espaço e pelo tempo nesta nova versão de um FPS Multiplayer
Como uma pequena equipe de desenvolvedores traz uma mecânica de jogo inovadora para a ação de tiro em primeira pessoa em ritmo acelerado? A equipe da StickyLock sabia que precisaria de uma nova abordagem para vencer no concorrido mercado de FPS. O que começou como portais entre diferentes períodos de tempo evoluiu para o Glitch - uma mecânica de jogo que transporta os jogadores para uma era diferente no tempo, com um novo mapa. Mas a construção dessa visão ousada exigiu um desempenho incrível, uma infraestrutura Multiplayer sólida como uma rocha, componentes gráficos inovadores e um parceiro forte para ajudar a reunir tudo isso.
This content is hosted by a third party provider that does not allow video views without acceptance of Targeting Cookies. Please set your cookie preferences for Targeting Cookies to yes if you wish to view videos from these providers.
Explodindo o gênero FPS em novas dimensões
Jamel Ziaty, artista técnico e programador que se tornou produtor, sabia que tinha um projeto ambicioso em mãos quando ele e a equipe do StickyLock começaram a trabalhar no que se tornou o Histera. Esse jogo de tiro em primeira pessoa 8x8 de alta octanagem transporta os jogadores por mapas e timelines sobrepostos em tempo real, sem sacrificar o desempenho.
Como um desenvolvedor experiente da Unity, Jamel sabia que eles precisavam de processamento escalável e recursos de back-end que pudessem lidar com a troca de componentes de mapas e personagens em tempo real. Para isso, a equipe optou pelo Data-Oriented Technology Stack (DOTS) da Unity e pelo Entities Component System (ECS) para obter ganhos de desempenho, enquanto utilizava o Unity Gaming Services (UGS) para lidar com a infraestrutura de backend multiplayer.
Os resultados:
- Uma estrutura de back-end eficiente e de alto desempenho que pode lidar com centenas de milhares de entidades e componentes (com mais de 230 mil em um único nível)
- Centenas a milhares de horas de desenvolvimento economizadas com o uso do UGS

Transportar os jogadores para eras paralelas com o Glitch
O recurso característico de Histeraé a mecânica de jogabilidade Glitch, em que uma seção dentro de um nível faz a transição para uma era completamente diferente com seu próprio campo de jogo, comportamentos e conjuntos de armas. Essa mudança repentina de configurações gera muita empolgação no jogo, mas também criou desafios para a equipe do StickyLock.
This content is hosted by a third party provider that does not allow video views without acceptance of Targeting Cookies. Please set your cookie preferences for Targeting Cookies to yes if you wish to view videos from these providers.
O Glitch se desenvolve em três fases distintas. O primeiro estágio, a antecipação, serve como um sinal visual para os jogadores de que um Glitch é iminente e, nos bastidores, está se preparando para gerenciar as transições de ativos. Em seguida, vem a fase de desconstrução, em que os visuais da era atual começam a dar lugar ao próximo conjunto de gráficos. Durante essa mudança, as colisões da era original são removidas à medida que o terreno da nova era começa a tomar forma.
Ao entrar na nova era, o jogo dá aos jogadores uma olhada nos novos visuais e nas zonas de colisão, empregando um mapa de textura exclusivo para delinear áreas navegáveis e zonas de colisão iminentes que orientam os jogadores para longe de pontos perigosos. Caso os jogadores se encontrem nessas áreas, o jogo incentiva a movimentação infligindo danos, que podem se tornar letais se os jogadores permanecerem lá após a transição. Isso culmina em um efeito de onda de choque dramático que solidifica os visuais e as colisões da nova era, completando a sequência Glitch.
A criação do Glitch exigiu sistemas avançados para transições, movimentação de jogadores e gerenciamento de colisões. A flexibilidade do Unity permitiu que a equipe desenvolvesse ferramentas e scripts personalizados que automatizaram esses recursos, garantindo uma jogabilidade suave mesmo quando o mapa inteiro muda durante o jogo. "É um campo de batalha único", explica Jamel, "e estávamos realmente focados em fazer tudo certo."

Simplificação de fluxos de trabalho com subcenas
O Glitch foi um grande desafio, tanto em sua implementação técnica quanto no fato de que, para funcionar, ele precisava se misturar em um nível sem interromper a coerência visual ou o fluxo do jogo. A equipe alcançou esse equilíbrio usando o componente SubScene da Unity.
Uma subcena é um MonoBehaviour GameObject que faz referência a outra cena. Ele é convertido em uma representação de entidade, conhecida como EntityScene. As subcenas podem existir em diferentes estados: abertas, fechadas ou descarregadas, e esse estado afeta a memória e a carga de visibilidade. As subcenas abertas permitem que os GameObjects sejam modificados e convertidos em tempo real, enquanto as subcenas fechadas carregam representações de entidades na memória. Essa configuração ajuda a gerenciar cenas complexas e a otimizar o desempenho por meio do tratamento eficiente dos dados da entidade.
"É um detalhe aparentemente pequeno que faz uma grande diferença", compartilha Jamel. "Ele nos permite lidar com várias seções de mapas em uma única cena. Essa abordagem não apenas simplifica o fluxo de trabalho dos nossos artistas, permitindo que eles se concentrem em uma subcena individual sem sobreposição, mas também minimiza os conflitos. Ele fornece uma visão geral clara de quais subcenas estão ativas em um determinado momento."

Combate ao atraso e otimização para taxas de tique mais altas
"Proporcionar uma experiência Multiplayer global é definitivamente o maior desafio que a UGS nos ajuda a enfrentar", diz Jamel. "Ele cuida das preocupações de configurar e gerenciar frotas e, ao mesmo tempo, garante que você possa fornecer a qualidade adequada de serviço para muitas regiões diferentes em todo o mundo."
A equipe do StickyLock trabalhou duro para equilibrar a experiência para jogadores com diferentes níveis de ping. Os jogadores de alto ping se beneficiam da compensação de atraso porque o jogo permite um registro de acerto mais justo, levando em conta o atraso deles. No entanto, isso pode afetar negativamente os jogadores com baixoping, pois eles podem ser atingidos por trás de uma cobertura devido ao "retrocesso" do servidor. Os insights de posicionamento e desempenho do painel Multiplay Hosting e os recursos prontos para uso de previsão, reversão e compensação de atraso do pacote Netcode for Entities foram fundamentais para garantir uma experiência multiplayer mais suave e justa para todos os jogadores.
Jamel destaca que foi necessário muito trabalho para ajustar os servidores para operar com taxas de ticks mais altas sem aumentar os custos. A experiência da equipe da Unity permitiu que eles identificassem oportunidades de otimização, enquanto os servidores podiam ser configurados para permitir que a equipe fizesse ajustes ao vivo rapidamente. Por fim, o MatchMaker baseado em regras do Unity permitiu que a equipe do StickyLock equilibrasse o design do jogo com o tempo de espera e a latência.
"Obter insights sobre o uso da RAM e da CPU do servidor, manter um serviço de alta qualidade em diferentes regiões e gerenciar os recursos do servidor juntamente com a flexibilidade das regras de MatchMaker são essenciais para nós", diz Jamel. "Estamos sempre procurando maneiras de aumentar o desempenho para evitar compensações desfavoráveis entre melhorar a jogabilidade e gerenciar os custos."

Aumentando o teto de desempenho com o DOTS
O Multiplay que atravessa o tempo adiciona desafios muito além das transições suaves - criar mundos paralelos sobrepostos em uma estrutura Multiplayer significa atingir marcas de desempenho incrivelmente altas. Para chegar lá, a equipe do StickyLock recorreu à pilha de tecnologia orientada a dados (DOTS) da Unity, composta pelo pacote Entities Component System (ECS), Physics, C# Job System e o compilador Burst.
Adotar o DOTS e o ECS no início de 2020 trouxe alguns riscos - eles foram os primeiros a adotar a tecnologia, e a equipe teria que investir em capacitação e adaptação a novos fluxos de trabalho em tempo real, mas depois de mergulhar nas amostras, Jamel e a equipe decidiram que as recompensas superavam os riscos, então eles entraram em ação.
“O teto de desempenho mais alto do Burst e do ECS é crucial para nós", diz Jamel, "especialmente diante do desafio de gerenciar cinco eras distintas. Isso leva a mais lotes quebrados, pois não podemos reutilizar malhas ou materiais em estilos diferentes. Com o ECS, obtemos o desempenho necessário para manter os visuais de alta qualidade, apesar dessas restrições."
O C# Job System permitiu o processamento paralelo eficiente de tarefas, enquanto o Burst compila o código C# em um código de máquina nativo altamente otimizado, ignorando a sobrecarga do tempo de execução tradicional do .NET. Esse código nativo é adaptado especificamente para a plataforma de destino, resultando em melhor desempenho. Refletindo sobre os benefícios que o DOTS proporcionou à sua equipe, Jamel compartilha que "se tivéssemos gasto muito do orçamento de desempenho em sistemas, não teríamos conseguido renderizar cinco eras diferentes com a qualidade que temos agora".

Comprando tempo com a UGS
Além da conectividade, Jamel precisava dar tempo à sua equipe para melhorar suas habilidades, encontrando outras maneiras de reduzir as horas de desenvolvimento. Ele recorreu à UGS para manter os desenvolvedores concentrados na jogabilidade, uma medida que, segundo ele, "economizaria de centenas a milhares de horas de desenvolvimento".
A equipe usou o Multiplay Hosting, o MatchMaker, a Authentication e o Cloud Content Delivery (CCD). As vantagens de usar vários serviços primários ficaram claras para a StickyLock desde o início. "Um serviço próprio seria mais fácil de integrar e manter", diz Jamel, "e os serviços da UGS são multiplataforma para quando quisermos fazer a portabilidade para o console no futuro."
O Multiplay Hosting foi projetado para ser ampliado rapidamente em caso de sucesso noturno. "É mais comum hoje em dia que um jogo se torne popular da noite para o dia. Ter um serviço que tem a experiência de lançar muitos títulos de sucesso nos dá uma sensação de tranquilidade", diz Jamel. Além disso, os recursos multiplataforma do Authentication preparam o Histera para a expansão multiplataforma no momento certo, enquanto o CCD Management facilitará o gerenciamento do conteúdo e do pipeline de lançamento para que a equipe possa oferecer o conteúdo e os recursos certos para manter os jogadores envolvidos à medida que o jogo cresce.
Com uma infraestrutura de back-end multiplayer robusta e dimensionável, autenticação pronta para multiplataforma e comunicação com o jogador, Jamel está indo para o lançamento com confiança, sabendo que as equipes Multiplay e UGS o apoiam.