Este guia descreve como reduzir o tamanho de um jogo. Na instalação, um jogo menor requer menos tempo para fazer o download e menos dados. O resultado são conversões de instalação mais altas. A pesquisa do Google mostra que um aumento de 6 MB no tamanho do APK exibido resulta em uma redução de 1% na taxa de instalação. Muitos desenvolvedores movem os recursos do APK para uma rede de fornecimento de conteúdo (CDN, na sigla em inglês), mas têm que pagar tanto para hospedar o CDN quanto para desenvolver e manter o sistema de gerenciamento de recursos.
Para reduzir o tamanho de um jogo, siga estas etapas:
- Use métodos de envio otimizados, como Android App Bundles e Play Asset Delivery.
- Determine o tamanho básico do jogo e entenda a estrutura dele.
- Pesquise recursos e outros arquivos que podem ter o tamanho reduzido.
- Inspecione as texturas gráficas e identifique oportunidades de otimização.
- Siga as recomendações gerais para recursos.
Use métodos de envio otimizados, como Android App Bundles e Play Asset Delivery
Considere os seguintes métodos de envio:
Os projetos legados normalmente geram um APK para publicação de jogos, mas a publicação no Google Play precisa usar um Android App Bundle. Os pacotes de apps entregam APKs otimizados personalizados para a configuração do dispositivo de cada usuário. Em média, os pacotes de apps reduzem o tamanho do app em 20%.
Para disponibilizar recursos de jogo pelo Google Play e exceder o limite de tamanho de download de 200 MB para pacotes de apps de até vários GB, use o Play Asset Delivery (PAD). Nenhuma CDN externa é necessária. O PAD é compatível com três métodos de envio distintos, e cada um deles pode ser usado em um único jogo:
- Tempo de instalação: faz o download dos recursos após a instalação. Os recursos são empacotados em pacotes de recursos, que são uma substituição para arquivos Opaque Binary Blob (OBB).
- Acompanhamento rápido: faz o download dos recursos após a instalação.
- Sob demanda: o jogo inicia o download dos recursos conforme necessário.
O PAD exige que os jogos sejam empacotados usando o formato App Bundle. O PAD também reduz a quantidade de dados usados pela CDN de um desenvolvedor, se necessário.
O Google Play usa os Android App Bundles para gerar e disponibilizar APKs otimizados para a configuração dos dispositivos de cada usuário. Esses APKs otimizados incluem um único conjunto de recursos de textura, formatados com a compactação ideal para o dispositivo. Configure o pacote de apps para que seja compatível com diferentes formatos de compactação de textura para oferecer compatibilidade com uma maior variedade de dispositivos.
Determine o tamanho do valor de referência do jogo e entenda a estrutura dele
Para se familiarizar com o jogo, determine a quantidade de trabalho necessária para qualquer otimização e se o jogo faz o download de outros recursos. Siga as seguintes etapas:
- Use uma versão de produção (não depurada) do desenvolvedor ou do APK publicado.
- Registre o tamanho do arquivo binário conforme entregue pelo desenvolvedor ou, se o jogo for publicado, na página da Play Store do jogo. Para o tamanho do APK, o fator mais importante é a quantidade de dados que um usuário precisa transferir para executar o jogo.
- Instale o jogo em um dispositivo e execute-o no menu inicial do jogo. Nesse momento, verifique o tamanho da instalação do jogo, conforme informado pelo Android (em Configurações > Armazenamento). A instalação inicial de alguns jogos é pequena, já que esse é o número chave a ser otimizado, mas faça o download de dados adicionais depois da instalação. Alguns jogos fazem o download de vários gigabytes de dados após a instalação.
- Alguns jogos fazem o download de dados somente depois que você começa a reproduzi-los. Você precisa jogar o jogo por um tempo para determinar a quantidade de dados adicionais que o jogo leva para um usuário típico ao jogar pela primeira vez.
Pesquise recursos e outros arquivos que podem ter o tamanho reduzido
Esta seção descreve como reduzir o tamanho de arquivos em um APK. Use o App Bundle Explorer para fazer o download de APKs específicos do dispositivo.
Para reduzir o tamanho dos arquivos empacotados diretamente no APK, siga estas etapas:
- Use o APK Analyzer do Android Studio. No Android Studio, selecione File > Profile or debug APK e selecione o APK.
- Selecione a pasta Assets. Para cada arquivo, são listados o tamanho do arquivo bruto e a porcentagem do tamanho total do download.
Revise a pasta Assets e determine onde a maior parte dos dados do jogo está localizada. Determine se há recursos que ocupam uma quantidade excessiva de espaço (ou seja, mais que 1% do total). Procure pelo seguinte:
- Arquivos grandes de imagem e vídeo (por exemplo, arquivos PNG, JPEG e mp4): esses arquivos normalmente são usados em telas de apresentação, planos de fundo e logotipos. Esses arquivos raramente são usados na maioria dos jogos e podem ser compactados sem afetar a experiência do usuário. Os arquivos PNG sem perda, em particular, são grandes e excelentes candidatos para compactação.
- Arquivos grandes de fontes (por exemplo, arquivos TTF): se você adicionar compatibilidade com emojis, o tamanho do arquivo de fonte poderá aumentar bastante. Se um arquivo de fonte for maior que algumas centenas de kilobytes, considere maneiras de reduzir o tamanho.
- Formatos de arquivo de áudio ou versões que podem ser combinadas.
Se várias interfaces binárias de aplicativo (ABIs, na sigla em inglês) estiverem incluídas no APK, utilize o App Bundles ou crie vários APKs.
Determine o tamanho dos arquivos do objeto compartilhado binário (.so). Para inspecionar os arquivos binários e ver se há itens que não precisam ser incluídos, como arquivos de registros, use a ferramenta Bloaty McBloatface (em inglês). Para mais informações sobre como otimizar os arquivos binários, consulte sinalizações de compilação e opções.
Revise o arquivo de manifesto do Android para ver os formatos gráficos compatíveis. Determine se há várias tags
<supports-gl-texture>
no APK. Se o jogo é compatível com formatos para várias GPUs em um APK, use o Universal Base da Binomial (em inglês). Esse sistema de compactação de textura de GPU cria arquivos de textura em um formato intermediário que pode ser transcodificado rapidamente para a GPU.
Inspecione as texturas gráficas e identifique oportunidades de otimização
Esta seção descreve as ferramentas e métodos necessários para determinar se as texturas gráficas usadas no jogo podem ser otimizadas.
Para inspecionar as texturas do jogo, use Inspetor da GPU do Android (AGI, na sigla em inglês), Documento de renderização ou, somente para GPUs Qualcomm Snapdragon, Snapdragon Criador de perfil.
Procure o seguinte:
- Texturas que podem ser redimensionadas para uma resolução menor, como uma textura grande de algo que só é renderizado em tamanho pequeno no jogo. As texturas de downsampling são caras do ponto de vista computacional.
- Uso de várias texturas pequenas que podem ser combinadas em um único mapa de textura.
- Texturas que podem usar menos bits nos canais de cores. Boas candidatas são as que possuem algumas texturas sólidas. Gradientes e tons de cores exigem mais bits de resolução e, portanto, não são bons candidatos.
- Explore algoritmos de compactação de textura aprimorados, do ETC1 a ETC2 e ASTC.
Descarte o nível máximo de mipmap ao carregar as texturas em dispositivos finais mais baixos para economizar memória. O sistema de streaming de textura do Unity pode fazer isso.
Se ainda não fez isso, revise o arquivo de manifesto do Android para ver os formatos gráficos compatíveis. Determine se há várias tags
<supports-gl-texture>
no APK. Se o jogo é compatível com formatos para várias GPUs em um APK, use o Universal Base da Binomial (em inglês). Esse sistema de compactação de textura de GPU cria arquivos de textura em um formato intermediário que pode ser transcodificado rapidamente para a GPU.
Recomendações gerais para recursos
Siga estas recomendações para os recursos de um APK:
- Recursos de imagem, áudio e vídeo (e não texturas da GPU): determine se os recursos podem ser redimensionados ou compactados ainda mais. Proporções de compactação mais altas geralmente são aceitáveis para jogos. Os arquivos PNG sem perda, em particular, são grandes e excelentes candidatos para compactação.
- Recursos de imagem (não texturas de GPU): considere usar WEBP, um formato de compactação de imagem para compactar com e sem perda. O WEBP com perda compacta as imagens de 25% a 34% mais do que o JPG.
- Reduza a resolução da textura: uma textura muito maior que o número de pixels que são renderizados na tela é um uso ineficaz do espaço e dos recursos da GPU. Para alterar uma textura e ver a aparência dela em um quadro sem precisar recriar o jogo, use o AGI.
- Alterar formatos de textura dos gráficos: utilize formatos de textura que usem menos bits por canal. Por exemplo, use um formato de textura de 16 bits, como RGB565, em vez de um formato de textura de 32 bits, como ARGB. Para mais informações, consulte as seguintes seções:
- .
- Documentação do Unity para definir formatos de textura (em inglês)
- Documentação do Unity para formatos de compactação de textura específicos da plataforma.
- Formato universal de textura de base do Binomial para texturas de modelos no jogo
Outros recursos
- Melhorias recentes no Android App Bundle e cronograma do Google para novos apps no Google Play
- Reduza o tamanho do APK em jogos instantâneos do Android
- Texturas supercompactadas com GPU (artigo de pesquisa)