Configurar o Google Play Games para Unity e fazer login

Este documento orienta você a configurar seu projeto do Unity para usar o plug-in do Google Play Games para Unity. Você vai aprender a instalar o plug-in e configurar seu projeto do Unity. O documento também aborda como verificar o serviço de login.

Antes de começar

Revise os requisitos do software. Configure o Play Console e instale o Unity Hub.

Instalação do plug-in

Para fazer o download e instalar o plug-in do Google Play Games para Unity, siga estas etapas no Unity Hub:

  1. Faça o download do repositório do GitHub.

  2. No diretório current-build, localize o arquivo unitypackage. Esse arquivo representa o plug-in. Por exemplo, ele vai ter esta aparência:

      current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
    

Configurar o projeto do Unity

Para configurar um projeto do Unity nas configurações do player, siga estas etapas:

  1. Abra o projeto do jogo.

  2. No Unity Hub, clique em Assets > Import Package > Custom Package para importar o arquivo unitypackage para os recursos do projeto.

  3. Confira se a plataforma de build atual está definida como Android.

    1. No menu principal, clique em File > Build Settings.

    2. Selecione Android e clique em Switch Platform.

    3. Um novo item de menu vai aparecer em Window > Google Play Games. Se isso não acontecer, clique em Assets > Refresh para atualizar os recursos e tente definir a plataforma de build novamente.

  4. No Unity Hub, clique em File > Build Settings > Player Settings > Other Settings.

  5. Na caixa Nível da API de destino, selecione uma versão.

  6. Na caixa Scripting backend, digite IL2CPP.

  7. Na caixa Arquiteturas de destino, selecione um valor.

  8. Anote o nome do pacote package_name.Você poderá usar essas informações mais tarde.

As configurações do player no projeto do Unity
As configurações do player no projeto do Unity.

Criar um novo repositório de chaves

Para validar suas credenciais, você precisa de uma chave. Siga estas etapas:

  1. No Unity Hub, clique em File > Build settings > Player settings.
  2. Na seção Configurações de publicação, clique em Gerenciador de chaves.
    1. Na janela Gerenciador de chaves, clique em Chaves > Criar novo > Em qualquer lugar.
    2. Selecione uma pasta e informe um nome para o keystore.
    3. Na caixa Senha, digite uma senha e confirme.
    4. Clique em Adicionar chave.

Anote o nome da pasta. É possível usar esse nome para criar uma credencial no Google Cloud.

Copiar os recursos do Android do Play Console

Cada conquista, placar e evento criado no Play Console inclui um recurso do Android que você usa ao configurar seu projeto do Unity.

Para acessar os recursos do Android para seu jogo, siga estas etapas:

  1. No Google Play Console, abra o jogo.

  2. Na página Configuração dos Serviços relacionados a jogos do Google Play (Crescimento > Serviços relacionados a jogos do Google Play > Configuração e gerenciamento > Configuração), clique em Pegar recursos.

  3. Na janela Resources, clique na guia Android(XML).

  4. Selecione e copie o conteúdo dos recursos do Android (AndroidManifest.xml).

Adicionar os recursos do Android ao projeto do Unity

Adicione os seguintes recursos do Android ao seu projeto do Unity:

  1. No Unity Hub, clique em Window > Google Play Games > Setup > Android Setup.

    • No campo Directory to save constants, insira o nome da pasta do arquivo de constantes.
    • No campo Constants class name, digite o nome da classe C# a ser criada, incluindo o namespace.

      Por exemplo, se a classe C# for id.cs e estiver presente em Assets > myproject > scripts > id.cs. O nome da classe de constantes pode ser myproject.scripts.id.

    • No campo Resources definition, cole os dados de recursos do Android (arquivo AndroidManifest.xml) que você copiou do Google Play Console.

    • Opcional: no campo ID do cliente, insira o ID do cliente do app da Web vinculado.

      Para conferir o ID do cliente do seu jogo no Google Cloud, consulte Como criar IDs do cliente.

      Isso só será necessário se você tiver um back-end baseado na Web para o jogo e precisar que o código de autenticação do servidor seja trocado por um token de acesso pelo servidor de back-end ou se você precisar de um token de ID para o jogador fazer outras chamadas de API fora do jogo.

    • Clique em Setup. O jogo vai ser configurado com o ID do cliente e uma classe C# vai ser gerada com constantes para cada recurso do Android.

  2. No Unity Hub, clique em Window > Google Play Games > Setup > Nearby Connections Setup.

    • No campo ID do serviço de conexão nas proximidades, insira o package_name.

      Use o mesmo package_name usado em configurar o projeto do Unity.

    • Clique em Setup.

Escolher uma plataforma social

O plug-in do Google Play Games Services implementa a interface social (link em inglês) do Unity para oferecer compatibilidade com jogos que já usam essa interface na integração com outras plataformas. No entanto, alguns recursos são exclusivos do Play Games e oferecidos como extensões da interface social padrão fornecida pelo Unity.

As chamadas de API padrão podem ser acessadas no objeto Social.Active, que é uma referência a uma interface ISocialPlatform. As extensões não padrão dos serviços do Google Play Games podem ser acessadas ao transmitir o objeto Social.Active para a classe PlayGamesPlatform, em que os outros métodos estão disponíveis.

Usar o plug-in sem substituir a plataforma social padrão

Quando você chama PlayGamesPlatform.Activate, os serviços relacionados a jogos do Google Play se tornam a implementação de plataforma social padrão, ou seja, chamadas estáticas para métodos em Social e Social.Active são realizadas pelo plug-in do Google Play Games Services. Esse é o comportamento da maioria dos jogos que usam o plug-in.

No entanto, se por algum motivo você quiser manter a implementação padrão acessível (por exemplo, para enviar conquistas e placares a uma plataforma social diferente), use o plug-in do Google Play Games sem substituir a configuração padrão. Para fazer isto:

  1. Não ligar para PlayGamesPlatform.Activate
  2. Se Xyz for o nome de um método que você precisa chamar na classe Social, não chame Social.Xyz. Em vez disso, chame PlayGamesPlatform.Instance.Xyz.
  3. Não use Social.Active ao interagir com os Serviços do Google Play Games. Em vez disso, use PlayGamesPlatform.Instance.

Dessa forma, é possível até enviar pontuações e conquistas simultaneamente a duas ou mais plataformas sociais:

    // Submit achievement to original default social platform
    Social.ReportProgress("MyAchievementIdHere", 100.0f, callback);

    // Submit achievement to Google Play
    PlayGamesPlatform.Instance.ReportProgress("MyGooglePlayAchievementIdHere", 100.0f, callback);

Verificar o serviço de login

Uma conexão com os serviços relacionados a jogos do Google Play é automaticamente estabelecida usando o serviço de login quando o jogo é aberto. Se a conexão for bem-sucedida, seu jogo vai mostrar uma solicitação de login e vai estar pronto para usar o plug-in dos Serviços relacionados a jogos do Google Play para Unity.

Se um usuário nunca tiver usado os Serviços relacionados a jogos do Google Play no dispositivo, ele será direcionado automaticamente à tela de configuração única para criar uma conta do Play Games.

No método Start do seu script, detecte o resultado da tentativa de login automático, busque o status de autenticação e desative os recursos dos serviços relacionados a jogos do Google Play, caso o usuário não tenha feito login.

Se a versão do plug-in do Unity for anterior a v11, não será possível usar o recurso de login.

    using GooglePlayGames;

    public void Start() {
      PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
    }

    internal void ProcessAuthentication(SignInStatus status) {
      if (status == SignInStatus.Success) {
        // Continue with Play Games Services
      } else {
        // Disable your integration with Play Games Services or show a login button
        // to ask users to sign-in. Clicking it should call
        // PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
      }
    }

O código de resultado é uma enumeração que pode ser usada para identificar o motivo da falha de login.

Como alternativa, se você preferir usar a plataforma social do Unity, utilize o código abaixo:

  using GooglePlayGames;

  public void Start() {
    PlayGamesPlatform.Activate();
    Social.localUser.Authenticate(ProcessAuthentication);
  }

Não é possível fazer chamadas da API Google Play Games Services até receber um valor de retorno bem-sucedido de Authenticate. Como resultado, recomendamos que os jogos mostrem uma tela de espera até que o callback seja chamado para garantir que os usuários não possam começar a jogar até que a autenticação seja concluída.

Usar a Assinatura de apps do Google Play

O Google gerencia e protege a chave de assinatura do app usando a Assinatura de apps do Google Play. É possível usar a Assinatura de app do Google Play para assinar a distribuição otimizada de arquivos Android App Bundle(AAB). A Assinatura de apps do Google Play armazena sua chave de assinatura do app na infraestrutura segura do Google. Para usar a Assinatura de apps do Google Play, primeiro é necessário criar e fazer o download de um arquivo AAB no Unity Hub. Em seguida, faça upload do arquivo AAB para o Play Console e crie uma versão de teste interno.

Criar um arquivo AAB

Para criar um arquivo AAB no Unity Hub, siga estas etapas:

  1. No Unity Hub, clique em File > Build settings.
  2. Selecione Build App Bundle ( Google Play ).

    Para mais informações, consulte Referência de configurações de build do Android.

  3. Clique em Build.

  4. Faça o download do arquivo AAB no Unity Hub.

Criar uma versão de teste interno

Para criar uma versão de teste interno e adicionar testadores no Play Console, siga estas etapas:

  1. No Google Play Console, selecione um jogo.
  2. Acesse a página Testar e lançar (Teste > Teste interno).
  3. Clique em Fazer upload e selecione o arquivo AAB.
  4. No campo Detalhes da versão, insira um nome.
  5. Clique em Próxima e revise os detalhes do lançamento.
  6. Clique em Salvar e publicar.
  7. Na guia Testadores, clique em Criar lista de e-mails para adicionar até 100 testadores.

    Para mais informações, consulte Teste interno: gerencie até 100 testadores.

  8. Em Endereço de e-mail ou URL de feedback, insira um URL ou endereço de e-mail para enviar feedback.

  9. Clique em Salvar.

Verificar as credenciais de assinatura do app

  1. No Google Play Console, selecione um jogo.
  2. Navegue até a página Testar e lançar (Configuração > Assinatura de apps).
  3. Verifique as credenciais de assinatura do app.

Criar e executar o projeto

Você pode criar e executar o projeto do jogo neste momento. Quando o jogo começar, você vai notar a tentativa de login automático.

Você precisa de um dispositivo físico com Android e depuração USB ativada ou um emulador que possa executar o projeto desenvolvido.

Extrair códigos de autenticação do servidor

Para acessar as APIs do Google em um servidor da Web de back-end em nome do jogador atual, você precisa receber um código de autenticação do aplicativo cliente e fazer a transmissão ao aplicativo do servidor da Web. Depois disso, o código pode ser trocado por um token de acesso para fazer chamadas para as várias APIs. Para saber mais sobre o fluxo de trabalho, consulte Fazer login com o Google para Web.

Para receber o código de acesso do lado do servidor:

  1. Configure o ID do cliente da Web do aplicativo da Web vinculado ao seu jogo no Play Console.

  2. Chame PlayGamesPlatform.Instance.RequestServerSideAccess assim que o jogador for autenticado para receber o código de acesso do lado do servidor.

  3. Transmita esse código para o aplicativo do servidor.

  PlayGamesPlatform.Instance.RequestServerSideAccess(
    /* forceRefreshToken= */ false,
    code -> {
      // send code to server
    });

Configurar e adicionar recursos