Desta vez, mostraremos como evitar nossos erros e publicar o jogo mais rapidamente. Só conseguimos na terceira tentativa, porque ficamos presos em uma verificação técnica. Não foi possível melhorar o desempenho do jogo usando apenas conselhos do site da Oculus. Portanto, estávamos procurando soluções por nós mesmos. Leia o artigo até o fim para não mexer na publicação de seu jogo no Oculus. Talvez você consiga fazê-lo pela primeira vez.
Diretrizes técnicas de jogos de VR e principais métricas de desempenho
Quando você concluir a compilação, inscreva-se no Oculus e faça o upload do jogo para sua conta. Em alguns dias, você receberá uma notificação por email. Será um parabéns pela aprovação bem-sucedida do teste ou uma solicitação para corrigir erros.
Na primeira vez em que não levamos em conta todas as recomendações do site do Oculus, obtivemos o seguinte resultado:
Relatório detalhado após a primeira verificação do Oculus Falhamos
no teste de desempenho, tivemos um problema com o retorno necessário ao menu inicial do Oculus e o jogo não foi instalado nas versões mais antigas do Android.
Para passar no teste de desempenho, você precisa seguir estas diretrizes:
- O FPS no jogo deve ser pelo menos 60;
- de 50 a 100 chamadas para desenhar por quadro (Call Draw);
- 1-3 milissegundos para executar scripts;
- de 50.000 a 100.000 polígonos por quadro.
Vamos descobrir os conceitos primeiro e depois mostrarei como resolvemos nossos problemas de desempenho.
FPS ou quadros por segundo
O principal indicador de alto desempenho é o alto FPS. Ele mostra a taxa de quadros por segundo: o jogo possui um loop que atrai o mundo do jogo e executa operações matemáticas em scripts. Quanto maior o atraso entre esses quadros, menor a métrica e o desempenho.
Com a ajuda do FPS, você pode entender se está tudo em ordem com o jogo.
Indicador Draw Call
Draw Call - O número de chamadas de textura que o mecanismo de jogo envia à GPU para desenhar o mundo. Para reduzir o número de chamadas, o mecanismo precisa combinar texturas em um único material. Essa técnica é chamada de lote.
Quanto mais alto o indicador Draw Call, mais tempo leva para desenhar o mundo do jogo.
Scripts e sua velocidade de execução
Os scripts são responsáveis por quaisquer ações e operações no jogo. Você precisa de manipuladores para executá-los. Por exemplo, atualização. Tem que processar todos os quadros. Se o jogo tiver muitos objetos e ações complexas, esse manipulador não terá tempo para concluir o quadro. Portanto, o desempenho é baixo e o jogo congela.
Muitas operações demoradas no Update dificultam a execução de ações em objetos.
Polígonos por quadro
Polígonos são triângulos que compõem modelos de jogos em 3D. Eles são compostos de vértices e planos. Polígonos por quadro é o produto do número de todos os objetos no mundo do jogo e desses triângulos.
Quanto maior esse número, mais tempo o mecanismo do jogo processará um quadro.
Como resolvemos problemas de desempenho
Tivemos quatro problemas principais que estavam causando o desempenho do jogo ficar aquém dos valores recomendados. Criamos objetos 3D muito detalhados, encontramos uma alta taxa de chamadas de desenho, scripts eram lentos e a memória do dispositivo estava sobrecarregada. Passamos mais tempo procurando soluções para essas deficiências. E agora sobre tudo em ordem.
Simplificando objetos 3D e reduzindo polígonos por quadro
Existem muitos asteróides e naves em nosso jogo que estão constantemente em movimento e sobrecarregam o jogo. Durante a batalha, o jogador não tem tempo para considerá-los e prestar atenção aos detalhes, porque está interessado no processo. Se você reduzir o número de asteróides, o jogo se tornará chato e desinteressante. Portanto, decidimos simplificar os modelos tridimensionais de asteróides e ônibus espaciais: reduzimos o número total de polígonos na cena do jogo.
Polígonos do ônibus espacial de Astro Collapse jogo
Determine o que é importante no seu jogo: detalhando objetos pequenos ou um mundo de jogo grande. Você entenderá quais modelos de objetos não precisam ser detalhados, o que ajudará a melhorar o desempenho.
Combinamos texturas em atlas e alcançamos o indicador de Draw Draw recomendado
No Astro Collapse, o mundo do jogo é criado a partir de asteróides, ônibus, navios de guerra, a Terra e o Sol. Existem muitos objetos no jogo - o indicador Draw Call estava alto, então o mecanismo diminuiu a velocidade da renderização dos gráficos. Para reduzi-lo, você precisa combinar diferentes texturas de objetos em um atlas.
Atlas de asteróides no jogo Astro Collapse
Criamos 4 grandes atlas de texturas: para asteróide, cockpit e canhões, interface de visão e menu do jogo. Esses são objetos que consistem em muitos materiais semelhantes. O Atlas simplificou o trabalho do mecanismo, porque não era mais necessário coletar diferentes texturas em um único objeto - fizemos isso por ele.
Colete os materiais dos objetos em um atlas - uma textura grande.
Reduzindo o tempo de execução do script
Qualquer ação no jogo ocorre usando scripts. O Astro Collapse possui muitos objetos de jogo e operações complexas, portanto alguns scripts foram executados por um longo tempo - o manipulador de atualizações atrasou a conclusão do quadro. Isso atrasou os processos do jogo.
Portanto, tivemos que executar operações complexas da atualização quadro a quadro. Usamos uma co-rotina que pode executar essas operações em objetos fora do quadro.
Foi assim que conseguimos otimizar operações complexas de asteróides. Existem muitos desses objetos no Astro Collapse: cada asteróide precisa ser verificado quanto à atividade, rastrear sua localização no espaço e adicioná-lo à lista. A lista em si precisa ser atualizada para trazer novos asteróides para o jogo, calcular sua distância para o jogador, ônibus e navios de guerra vizinhos. O resultado é um loop de longa duração para um quadro que o manipulador de atualizações não pôde manipular. E com a ajuda da corotina, o mecanismo retirou essa operação complexa da atualização quadro a quadro e aumentou o desempenho.
O manipulador co-rotineiro executa operações complexas fora das atualizações quadro a quadro, o que simplifica o trabalho do mecanismo de jogo.
Protegendo a memória do dispositivo contra lixo e criando um pool de asteróides
O Astro Collapse tem muitos asteróides. Eles aparecem constantemente, precisam ser destruídos. Os construtores padrão no script Instanciar e Destruir falham ao executar essas operações. Eles criam lixo na memória do dispositivo, causando o congelamento do jogo. Então, fizemos de forma diferente.
Asteróides caídos não são destruídos, mas se escondem no espaço do jogo. Quando um novo objeto é necessário, o script o chama dos ocultos. Este método é chamado de pool.
Antes de carregar o mundo do jogo, o script cria várias dezenas de asteróides. Se todos eles voam no espaço ao mesmo tempo e não estão na memória, ele produz um novo asteróide e o adiciona à lista. Isso nos deu um modelo flexível de controle de asteróides e melhor desempenho do jogo.
Use o método de agrupamento para objetos do mesmo tipo, que geralmente são criados e destruídos, mas no próprio jogo não existem muitos ao mesmo tempo.
Pequenos erros após verificação técnica
Pós-processamento de modelos no jogo: desativar anti-aliasing
Antialiasing - pós-processamento de uma imagem suavizando bordas serrilhadas. O antialiasing foi definido por padrão no Astro Collapse. Sobrecarregou o jogo e ainda não havia anti-aliasing perceptível no jogo - a resolução no capacete Gear VR é baixa. Portanto, desligamos. Durante o teste, os jogadores não notaram nenhuma alteração, mas o desempenho ficou mais alto.
A suavização de serrilhado não produz imagens com suavização de serrilhado em baixas resoluções no Gear VR.
Explosões espetaculares de sprites
Para fazer explosões brilhantes, usamos sprites. Esta é uma imagem de explosão que altera seu tamanho, transparência e cor de vermelho-laranja para preto. Dessa forma, conseguimos manter a explosão dinâmica e melhorar o desempenho do jogo sem usar sistemas complexos de muitas partículas e animações individuais.
Asteróide destruído em Astro Collapse
Explosões espetaculares podem ser feitas com sprites.
Não são necessárias sombras
Desativamos as sombras porque o jogo está sempre em movimento - você não pode vê-las. Além disso, não tínhamos objetos grandes sobre os quais projetar uma sombra.
Desative sombras para objetos de jogo secundários que são insignificantes para os jogadores.
Problema com o retorno necessário ao menu inicial do Oculus
O botão Voltar do capacete deve retornar o jogador ao Oculus Home, não ao menu do jogo, como foi o caso do Astro Collapse. Para corrigir esse problema, peguei um script de plug-in Oculus pronto e o apliquei no jogo.
Use o script OVRPlatformMenu.cs para que o botão Voltar do menu funcione corretamente.
Eliminando um erro ao instalar o jogo em versões mais antigas do Android
Uma falha na instalação é fácil de resolver. Você precisa especificar a versão Android suportada mais antiga na configuração do projeto.
Não se esqueça de especificar o nível mínimo necessário da API do Android 4.1 nas configurações do jogo.
Resultados após a publicação do jogo
Corrigimos nossas falhas e enviamos o jogo para revisão pela terceira vez. A resposta foi sim - o jogo foi publicado uma semana depois:
Parabéns Maria do suporte técnico da Oculus com uma mensagem sobre a data de publicação do jogo
duas semanas após a publicação, o Astro Collapse foi baixado mais de 7000 vezes. Para jogos de VR na plataforma Gear VR, este é um excelente resultado: ele entrou nos 50 melhores jogos grátis e ficou em 24º na lista.
Dicas para publicar um jogo no Oculus
Existem algumas regras a serem seguidas para evitar problemas ao publicar seu jogo na Oculus Store:
- Confira as recomendações e os problemas mais comuns no site oficial do Oculus antes de enviar um jogo.
- Pense em melhorar o desempenho desde o início do desenvolvimento, para não refazer o jogo inteiro na fase final.
- Não complique os gráficos do jogo detalhando todos os objetos, muitas texturas ou sombras. Ele será executado em telefones celulares e tem especificações limitadas. Pense no que pode ser removido sem perder a qualidade do jogo.
- Entre em contato com o suporte técnico da Oculus. Eles responderão e ajudarão rapidamente.
- Lembre-se de que melhorar o desempenho de cada jogo requer uma abordagem individual do desenvolvedor. Você não encontrará uma solução universal para o problema.
Confira nossas dicas para ajudá-lo a ser verificado no Oculus mais rapidamente.
Jogue o jogo Astro Collapse e aprecie os gráficos. Para fazer isso, você precisará de óculos Samsung Gear VR. Eles trabalham com smartphones: Samsung Galaxy Note 4, 5, 7, S6 / S6 Edge / S6 Edge +, S7 / S7 Edge, S8 / S8 +.
Desenvolvimentos bem sucedidos!