Como publicar um jogo de realidade virtual em Oculus sem um colapso nervoso

Continuamos compartilhando nossa primeira experiência no desenvolvimento de um jogo de realidade virtual Astro Collapse. Nos artigos anteriores, falamos sobre a ideia principal do jogo e do design do jogo .



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:

imagem

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.



imagem

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.

imagem

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:

imagem

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!



All Articles