O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Adicionar compatibilidade para acesso instantâneo

As etapas para configurar apps para execução no Google Play Instant, explicadas em Criar seu primeiro app instantâneo, também valem para jogos. Este guia destaca algumas etapas de configuração específicas para jogos.

Você pode desenvolver jogos para o Google Play Instant usando o Unity (com ou sem o plug-in do Unity para Google Play Instant), o Cocos2D, o Android Studio ou o próprio mecanismo personalizado.

Este guia presume que você já sabe qual tipo de experiência de jogo quer oferecer. Se quiser ver algumas ideias e as práticas recomendadas para criar jogos de alta qualidade, leia Práticas recomendadas da UX para jogos no Google Play Instant.

Além disso, antes de publicar um jogo que pode ser executado no Google Play Instant, leia a Lista de verificação de requisitos técnicos.

Uma atividade que inclui o seguinte filtro de intent se torna o ponto de entrada da experiência do Google Play Instant:

<activity android:name=".GameActivity">
       <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
       </intent-filter>
    </activity>
    

Essa atividade é iniciada quando o usuário toca no botão Testar agora na Play Store ou no app Play Games. Também é possível iniciá-la diretamente usando a API do link direto.

Se você quer que os jogadores acessem seu jogo usando um URL seu, também é possível adicionar links de app. No entanto, se você adicionar esses links de app, também precisará adicionar um URL padrão que corresponda exatamente a um dos URLs de link do app.

O snippet de código a seguir mostra um exemplo de combinação de links de app e URL padrão:

<activity
       android:name=".GameActivity" ... >

       <!-- App links (HTTP and HTTPS) -->
       <intent-filter android:autoVerify="true">
           <action android:name="android.intent.action.VIEW" />

           <category android:name="android.intent.category.BROWSABLE" />
           <category android:name="android.intent.category.DEFAULT" />

           <data android:scheme="http" />
           <data android:scheme="https" />
           <data android:host="example.com" />
           <data android:pathPrefix="/instant" />
       </intent-filter>

       <!-- Default URL -->
       <meta-data
           android:name="default-url"
           android:value="https://example.com/instant" />
    </activity>
    

Códigos da versão

O código da versão do app instantâneo do seu jogo precisa ser inferior ao código da versão do jogo instalável. Espera-se que os usuários passem da experiência no Google Play Instant para o download e a instalação do jogo no dispositivo. O framework do Android considera essa transição uma atualização do app.

Para garantir que você siga esse esquema de controle de versões, use uma das estratégias a seguir:

  • Reinicie os códigos da versão para a experiência no Google Play Instant em 1.
  • Aumente o código da versão do APK instalável para um número alto, como 1.000, garantindo que exista espaço suficiente para aumentar o número da versão do app instantâneo.

Para ver mais detalhes sobre como configurar a versão do app, consulte Controlar versões do app.

Versão do sandbox de destino

Como outros apps, os jogos no Google Play Instant são executados em um sandbox limitado no dispositivo. O arquivo AndroidManifest.xml do app instantâneo precisa ser atualizado para segmentar esse sandbox. Complete essa atualização adicionando o atributo android:targetSandboxVersion ao elemento <manifest>, conforme mostrado no snippet de código a seguir:

<manifest
       xmlns:android="http://schemas.android.com/apk/res/android"
      ...
       android:targetSandboxVersion="2" ...>
    

Se você estiver usando o Gradle 3.0 ou posterior para criar a versão para Android do seu jogo, é possível aplicar os plug-ins com.android.feature e com.android.instantapps aos módulos do seu recurso. Esses plug-ins adicionam automaticamente o atributo necessário ao arquivo de manifesto do módulo.

Para ver mais informações, consulte a documentação no atributo targetSandboxVersion.

Redução do tamanho do APK

Ao contrário de outros tipos de apps, os jogos no Google Play Instant têm um limite de tamanho de download de 10 MB. Para criar um jogo desse tamanho, pode ser necessário refatorar a lógica do jogo. Esta seção descreve algumas ferramentas e técnicas que ajudam a otimizar o tamanho do seu jogo.

Ferramentas

A lista de ferramentas a seguir pode ajudar a determinar o que está contribuindo para o tamanho do seu jogo:

  • APK Analyzer: oferece uma visualização holística do conteúdo de um APK compilado. Usando essa visualização, é possível determinar o número de bytes com que cada elemento está contribuindo para o tamanho geral. Use essa ferramenta para verificar rapidamente o tamanho dos recursos, da lógica e das bibliotecas nativas usados no jogo.
  • Bloaty McBloatface: mostra o perfil de tamanho de arquivos binários.
  • GAPID: exibe o efeito do tamanho do arquivo depois da redução do tamanho da textura sem ter que recompilar o jogo.

Técnicas

Veja a seguir uma lista de técnicas que podem ser usadas para reduzir o tamanho do seu jogo:

  • Reduza a resolução das texturas do jogo.
  • Você pode usar o formato WebP, principalmente se estiver usando texturas não compactadas na GPU. O Formato WebP cria imagens que têm a mesma qualidade de imagens JPEG, mas com um tamanho de 15% a 30% menor. Embora seja mais demorado descompactar imagens WebP, esse tempo ainda é significativamente mais curto que o tempo de download das texturas do jogo.

    O Google também integrou o formato a um mecanismo de jogo de código aberto.

  • Use apenas um subconjunto de sons, disponíveis no jogo instalável.

  • Use diferentes sinalizações de compilação para ajudar a diminuir seu arquivo binário:

    • -fvisibility=hidden: a mais importante. Em cmake, você pode especificá-la da seguinte maneira:
      $ set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)
          
    • -Oz: também é importante para a redução de tamanho. Se você usa gcc na compilação, passe a usar -Os.
    • -flto: em alguns casos, reduz o tamanho do arquivo.
    • Sinalizações do vinculador: use --gc-sections com sinalizadores do compilador, como -ffunction-sections e -fdata-sections.
  • Use o Proguard para reduzir o código e os recursos.

  • Use o Gradle 4.4 ou posterior para gerar arquivos DEX menores.

API Play Core Split Install

Pode ser difícil otimizar a experiência no Google Play Instant para fazer com que seu app caiba em um único APK de 10 MB, mesmo depois de aplicar as recomendações para reduzir o tamanho do APK. Para enfrentar esse desafio, divida seu jogo em vários APKs. Os jogadores começam fazendo o download do APK básico principal. Ao longo do jogo, os outros APKs divididos são disponibilizados em segundo plano.

Por exemplo, o APK básico pode conter o mecanismo principal do jogo e os recursos necessários para exibir uma tela de carregamento. Quando o APK básico é iniciado, ele exibe a tela de carregamento e solicita imediatamente outro APK dividido que contém os dados do jogo e da fase. Quando o APK dividido é disponibilizado, ele pode carregar os próprios recursos no mecanismo do jogo e oferecer ao jogador o conteúdo necessário para começar a jogar.

Solicitação de instalação

Em algum momento durante a experiência no Google Play Instant, o jogo deve solicitar que o jogador instale a versão completa no dispositivo. Para fazer isso, use o método showInstallPrompt() nas APIs do Google para Android.

Para saber mais sobre como e quando solicitar a instalação, consulte Práticas recomendadas da UX para jogos no Google Play Instant.

Outros recursos

Saiba mais sobre o Google Play Instant em:

Codelab: Como criar seu primeiro app instantâneo (em inglês)
Adicione compatibilidade com o Google Play Instant a um app existente.
Codelab: Como criar um app instantâneo com vários recursos (em inglês)
Modularize um app com vários recursos.