Otimizando controles, memória e tamanho do build para Greak: Port de Android de Memories of Azur

Em agosto de 2021, Navegante lançou Greak: Memórias de Azur online e na loja para plataformas de console de próxima geração e PC simultaneamente. Nos últimos quatro anos, a equipe manteve sua comunidade próxima e engajada, compartilhando notícias de prêmios e oportunidades de licenciamento que os ajudaram a expandir a IP além do jogo.
No último ano, eles encontraram um ótimo programa do Google, onde estúdios da América Latina recebem apoio para levar seus jogos ao Google Play Pass.
Conversamos com Rodrigo Fernandez, co-diretor criativo e programador principal da Navegante, bem como a produtora principal do estúdio, Anahit Fernandez, e o programador sênior, Nestor Gomez. O trio discutiu como a equipe superou as dificuldades que enfrentou ao portar o título para Android.
Parabéns pelo lançamento de Greak: Memórias de Azur no Google Play Pass. Por que a equipe decidiu portar o jogo para mobile após quatro anos?
Rodrigo Fernandez: Com o quanto o ecossistema de jogos mobile amadureceu em relação a alguns anos atrás, estávamos muito curiosos, especialmente depois de ver muitos ótimos jogos indie mobile alcançarem um novo público. Então, começamos a procurar oportunidades e encontramos um ótimo programa do Google.
Qual foi o maior desafio de trazer o jogo para mobile?
Rodrigo: O maior desafio foi redesenhar os controles de tela sensível ao toque e a restrição do tamanho menor da tela. Tivemos problemas menores com shaders que tivemos que corrigir. Também temos olhado mais de perto para a otimização e adicionado opções de desempenho no jogo.
Nestor Gomez: Garantir que o jogo funcionasse bem em o maior número possível de dispositivos e decidir os tamanhos mínimos e recomendados de especificações trouxe a maior dificuldade. Tivemos que encontrar um bom equilíbrio entre proporcionar uma ótima experiência ao jogador e maximizar o alcance.
Anahit Fernandez: Do lado comercial, achei desafiador que as lojas móveis diferem daquelas para PC e console. Desde a criação de ativos para a loja e redação de descrições até a definição de preços e outros detalhes, tem sido uma enorme experiência de aprendizado.

Qual foi a abordagem para redesenhar os controles de toque?
Rodrigo: Tentamos manter a experiência o mais próxima possível de um controle completo. No entanto, existem certas combinações de botões que não podem ser replicadas muito bem, como combinar botões para realizar uma ação ou mecânicas que exigem mais destreza. Nesses casos, tivemos que reestruturar certos aspectos do jogo para torná-lo mais acessível ou apenas reestruturá-los completamente.
Nestor: Fizemos algumas pesquisas jogando outros jogos móveis e iteramos sobre o design dos controles para garantir que fossem confortáveis e intuitivos. Acho que encontramos um bom layout que os jogadores vão gostar. Também estamos muito orgulhosos de suportar controles externos para oferecer uma experiência semelhante à de console aos jogadores. Você pode alternar entre controles de toque e controles externos a qualquer momento. Esperamos que os jogadores gostem disso.

Como a equipe garantiu um desempenho de combate suave em dispositivos móveis?
Rodrigo: Devido à ampla gama de dispositivos móveis disponíveis, adicionamos configurações adicionais para o jogador ajustar a qualidade de renderização e a taxa de quadros alvo. Portanto, mesmo em dispositivos de baixo desempenho, o jogador pode ter uma experiência suave e divertida.
Nestor: Passamos um bom tempo otimizando CPU, GPU, memória e tamanho da build. Usando o Unity Profiler, juntamente com outras ferramentas disponíveis, fizemos algumas rodadas de otimização e testamos o jogo em diferentes dispositivos para medir nosso progresso. Medir constantemente FPS, uso de memória e tamanho da build em diferentes dispositivos nos permitiu acompanhar o estado atual e quanto de otimização extra era necessária.

Como você conseguiu manter a qualidade do jogo enquanto reduzia seu tamanho?
Rodrigo: Dado que os dispositivos móveis são exclusivamente restritos a tamanhos de tela pequenos, focamos em reduzir a resolução dos ativos de arte e clipes de vídeo. Fizemos muitos testes internos para garantir que essas mudanças nos permitissem ter um tamanho de download pequeno, sem serem perceptíveis.
Nestor: Como o jogo foi construído para telas maiores, sabíamos que tínhamos resolução extra na maioria das texturas. Passamos por centenas de texturas e verificamos se poderíamos reduzi-las. Também escolhemos o formato de textura certo para cada uma para economizar memória e tamanho da build. Ao fazer isso, conseguimos reduzir o tamanho da build em quase 50%.

Quais passos você tomou para otimizar o jogo para uma ampla gama de dispositivos?
Nestor: O primeiro passo foi medir tudo. Usamos o Unity Profiler, Frame Debugger, Memory Profiler, juntamente com algumas ferramentas externas, incluindo Android Studio e Asset Studio. Algumas de nossas técnicas incluíram pooling de objetos, uso do formato de textura crunched ETC2, habilitação de renderização multithread, redução de chamadas de desenho desnecessárias, escalonamento da renderização da câmera de gameplay e limpeza da pasta de recursos.
Quais ferramentas e recursos do Unity foram mais úteis?
Nestor: Usamos muitas ferramentas e recursos durante esta portabilidade. O Unity Remote nos ajudou a simular a entrada de toque sem precisar implantar uma nova versão em um dispositivo, e a opção Patch and Run nos permitiu reduzir significativamente o tempo de construção.
O Unity Profiler nos ajudou a identificar áreas de oportunidade para ganhar desempenho extra. Adoramos a visualização da linha do tempo e como ela fornece uma ótima visão do que está acontecendo em cada quadro. Com o Memory Profiler, identificamos recursos desnecessários que estavam sendo carregados, o que nos economizou uma memória preciosa. Para leituras rápidas de uso de memória, usamos o pacote Android Logcat, que também é ótimo para verificar mensagens no dispositivo.
O Frame Debugger foi uma ótima maneira de identificar o que estava quebrando o agrupamento. É fundamental executá-lo no dispositivo, bem como no Editor. Poder depurar no dispositivo diretamente do Visual Studio também foi útil para problemas que não eram replicáveis no Editor.
Não usamos o sistema de trabalho C# tão extensivamente quanto gostaríamos. No entanto, convertimos nosso sistema de paralaxe para usar IJobsParallelForTransform para executar um pedaço de código em centenas de sprites em paralelo para economizar alguns milissegundos de CPU. Estamos planejando usá-lo de forma mais extensiva em projetos futuros para aproveitar as melhorias de desempenho que ele pode fornecer.

Qual é a sua maior dica para desenvolvedores que desejam portar jogos de PC e console para dispositivos móveis?
Nestor: Teste em um dispositivo o mais rápido possível e com a maior frequência possível. Isso se refere a tudo, desde controladores de toque, renderização de fontes, UX, desempenho, uso de memória, tamanho da construção e compatibilidade de ferramentas. Você também deve ter dispositivos de baixo custo e de médio porte disponíveis para testes, com base no que você planeja suportar.
Anahit: Concentre-se primeiro em suas principais plataformas para o lançamento e, em seguida, expanda para outras plataformas quando sua equipe tiver capacidade. No nosso caso, a comunidade tem sido incrivelmente solidária. Embora tenha se passado alguns anos desde Greak: Memories of Azur foi lançado, a empolgação em torno deste lançamento para Android tornou esse processo válido.
Agora que Greak: Memories of Azur foi lançado no Android, o que vem a seguir?
Anahit: Estamos trabalhando no segundo jogo do nosso estúdio, que planejamos anunciar ainda este ano!
Para ler mais sobre projetos feitos com Unity, visite a Página de Recursos.
