Como a Odyssey Interactive lançou Omega Strikers, um jogo com atualização constante, para celular, console e PC

Chris Shankland, CTO da Odyssey Interactive
Eu sou Chris Shankland, CTO da Odyssey Interactive e antigo líder técnico da Omega Strikers. Omega Strikers é um jogo de futebol com luta de 3 contra 3 muito rápido. Jogar o adversário para fora do campo para abrir o caminho chegar ao gol é só o começo. Lançamos Omega Strikers em todas as principais plataformas: PC, PlayStation, Xbox, Nintendo Switch, iOS, e Android. Vou descrever algumas técnicas que usamos para conseguir uma experiência competitiva e visual de alta qualidade no celular. Lançar Omega Strikers com a velocidade e a qualidade que conseguimos é um trabalho em equipe. Vou ser apenas um guia para vocês em relação aos desafios e soluções que implementamos, que esperamos que possam inspirar ideias e agregar valor a jogos parecidos.

Omega Strikers é, na essência, um jogo competitivo, então priorizamos a integridade da competição acima de tudo. Na prática, isso significa uma ênfase grande no desempenho, na clareza de jogabilidade e nos controles. Partindo dessa base, focamos na qualidade dos elementos visuais, garantindo que nossa arte incrível pudesse se destacar. Para atingir nossos elementos visuais e de desempenho, tivemos que gerenciar algumas restrições já conhecidas: memória, CPU e GPU. Vou falar sobre exemplos específicos de cada uma dessas áreas para ilustrar os processos que usamos para identificar e, no fim, resolver desafios que pudessem atrasar o lançamento.

Memória

Omega Strikers é um jogo baseado em personagens com uma lista de 15 personagens no lançamento, mas que continua crescendo nas atualizações regulares de conteúdo. Voltando ao início do desenvolvimento, tínhamos menos personagens, menos personalizações e gráficos marcadores de posição. Na época, era muito conveniente manter um conjunto global de referências absolutas para os personagens e todo o conteúdo relacionado a eles. Os testes internos com dispositivos de especificações mínimas não identificaram problemas com essa configuração durante a maior parte do desenvolvimento. À medida que nos aproximávamos do lançamento, a fidelidade visual e a quantidade aumentaram muito. Depois de um tempo de desenvolvimento com esses recursos de alta qualidade, problemas de memória começaram a se acumular, e o jogo parou de rodar em dispositivos de especificações mínimas.

Visualização de pacotes em uma versão inicial de Omega Strikers
Duas estratégias gerais eram possíveis nesse momento: reduzir o tamanho dos recursos ou reformular por completo o gerenciamento deles, passando de um esquema sempre carregado para um de carregamento sob demanda. O esquema sob demanda se adequa às expectativas de escalabilidade de um modelo de jogo como serviço, então fomos nessa direção. A otimização consistiu em converter todas as referências absolutas para recursos maiores, como texturas ou personagens, em referências relativas. Deixamos o conjunto completo de recursos de dados que representavam o catálogo do jogo na memória para que pudéssemos corrigir os recursos de forma rápida e simultânea. Esse método limitou a otimização necessária para um volume gerenciável, e pudemos completar a mudança em apenas uma semana. Com o problema resolvido, foram lançadas quatro grandes atualizações de conteúdo do Omega Strikers , com novos mapas e personagens, sem precisar revisitar o problema de memória.
Captura de memória da Unreal Insights: referências absolutas
Captura de memória da Unreal Insights: referências relativas

CPU

O desempenho da CPU é uma área em que focamos muito para garantir que não houvesse problemas com os prazos de lançamento. Trabalhamos assim durante o desenvolvimento e conseguimos evitar a pressão sobre a otimização quando estava chegando a hora do lançamento. A estratégia é garantir que o jogo roda bem em dispositivos de especificações mínimas e priorizar regressões de desempenho. Quando encontrávamos um problema, a Unreal Insights era a ferramenta de referência para o diagnóstico.

GPU

O desempenho dos gráficos em dispositivos móveis diferentes é um desafio. Os jogadores esperam elementos visuais de ponta em dispositivos de ponta e um ótimo desempenho em todos os dispositivos. Omega Strikers usa técnicas de nível de detalhe padrão para texturas e malhas, além de configurações personalizadas de qualidade de ambiente, para criar uma grande variedade de dimensionamento de gráficos. As configurações são expostas e manipuladas com CVars, que é como criamos os perfis de dispositivos e permitimos que os usuários personalizem as próprias configurações. Mais uma vez, contamos com Unreal Insights para fornecer a maior parte dos dados de perfil usados guiar a otimização. Outra ferramenta que usamos foi o RenderDoc, junto com o plugin, para ir mais fundo no desempenho de dispositivos específicos ou quando precisávamos de uma sincronização mais refinada.

O armazenamento em cache de PSO logo surgiu como um requisito dos dispositivos móveis para evitar problemas, já que estávamos usando shaders pela primeira vez. Desenvolvemos um processo automatizado que criava uma versão do jogo que fazia uma renderização automática de todos os elementos visuais possíveis em todas as configurações de qualidade implementadas em um dispositivo físico. No final da execução automatizada, o aplicativo publica o cache de PSO completo no nosso pipeline de versão para ser incluído em versões futuras.

Resumo

Lançar e fazer atualizações constantes de Omega Strikers em dispositivos móveis com uma equipe enxuta só é possível com a criação para dispositivos móveis desde o início e a utilização das ferramentas fornecidas pela Unreal Engine para otimizar nossos esforços de desenvolvimento. Nossa caixa de ferramentas contém estratégias para diminuir o trabalho em dispositivos com menos capacidade, transmitir recursos ou dados de forma que caibam em memórias de menor capacidade ou usar soluções específicas para dispositivos móveis quando for absolutamente necessário. IUs e controles são bons exemplos.  Ter o costume de validar o jogo em dispositivos de especificações mínimas garante que saibamos dos problemas quando eles são criados e evita que sejamos surpreendidos por eles num momento importante. Planejar e testar desde o início do desenvolvimento garantiu que elaborássemos estratégias e orçamentos adequados antes de fazer o dimensionamento da produção. Todas essas soluções, em conjunto com nossa equipe incrível, possibilitaram o sucesso de Omega Strikers em todas as plataformas possíveis e que ele continue operando no futuro no modelo jogo como serviço tão bem como imaginamos.

Esperamos que o nosso aprendizado seja útil para os jogos que estão por vir, mal posso esperar para jogar todos eles!

Logo 2 de Omega Strikers

    Obtenha a Unreal Engine hoje mesmo!

    Obtenha a ferramenta de criação mais aberta e avançada do mundo.
    Com diversas funcionalidades e acesso ao código-fonte, a Unreal Engine está pronta para uso imediato.