Configurar o Google Play Games para Unity e fazer login

Este documento mostra como 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 explica como verificar o serviço de login.

Antes de começar

Confira os requisitos de 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 Arquivo > Configurações de build.

    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 Back-end de script, insira IL2CPP.

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

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

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

Criar um novo keystore

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 keystore.
    1. Na janela Gerenciador de keystore, clique em Keystore > Criar novo > Em qualquer lugar.
    2. Selecione uma pasta e dê um nome ao keystore.
    3. Na caixa Senha, digite uma senha e confirme.
    4. Clique em Adicionar chave.

Anote o nome da pasta. Você pode 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 Receber 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 seu 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 Nome da classe de constantes, insira o nome da classe C# a ser criada, incluindo o namespace.

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

    • No campo Definição de recursos, 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 receber o ID do cliente do seu jogo no Google Cloud, consulte Como criar IDs de 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 por proximidade, insira o package_name.

      Use o mesmo package_name usado em configurar projeto do Unity.

    • Clique em Setup.

Escolher uma plataforma social

O plug-in dos serviços relacionados a jogos do Google Play 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 relacionados a jogos do Google Play 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 dos serviços relacionados a jogos do Google Play. 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 dos Serviços relacionados a jogos do Google Play sem substituir a configuração padrão. Para fazer isto:

  1. Não ligue 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. Você pode usar a Assinatura de apps do Google Play para assinar a distribuição otimizada de arquivos Android App Bundle. A Assinatura de apps do Google Play armazena sua chave de assinatura do app na infraestrutura protegida do Google. Para usar a Assinatura de apps do Google Play, primeiro crie e baixe um arquivo AAB do 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 Arquivo > Configurações de compilação.
  2. Selecione Criar Android App Bundle ( Google Play).

    Para mais informações, consulte a 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 Teste e lançamento (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 da versão.
  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é cem testadores.

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

  9. Clique em Salvar.

Verificar suas credenciais de assinatura de app

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

Criar e executar o projeto

Agora, é possível criar e executar o projeto do jogo. Quando o jogo começar, você vai notar uma tentativa de login automático.

Você precisa de um dispositivo Android físico com a 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. Consulte informações sobre o fluxo de trabalho na página Fazer login com o Google para a Web.

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

  1. Adicione o ID do cliente da Web do seu jogo no Play Console.
    1. No Google Play Console, selecione seu jogo.
    2. Na página Configuração (Aumentar o número de usuários > Serviços relacionados a jogos do Google Play > Configuração e gerenciamento > Configuração), clique em Adicionar credencial.
    3. Na página Adicionar credencial, selecione Servidor de jogos.
    4. Gere um ID do cliente OAuth 2.0.
    5. Anote o valor do ID do cliente. Você precisará fornecer esse valor mais tarde.
  2. Adicione o ID do cliente da Web ao Unity Hub.

    1. No Unity Hub, configure o Google Play Games para Unity e faça login.
    2. No hub do Unity, acesse Window > Google Play Games > Setup > Android Setup.
    3. Insira o valor do ID do cliente.
  3. Recupere o código de autenticação do servidor para escopos adicionais.

    C#

    using GooglePlayGames.BasicApi;
    
    // Define selectedScope having additional identity scopes.
    private List selectedScopes = new List();
    
    // Add scopes you want to request.
    selectedScopes.Add(AuthScope.OPEN_ID);
    selectedScopes.Add(AuthScope.PROFILE);
    selectedScopes.Add(AuthScope.EMAIL);
    
    // Call RequestServerSideAccess with additional scopes and retrieve
    // authcode and grantedscopes list.
    PlayGamesPlatform.Instance.RequestServerSideAccess(
        /* forceRefreshToken= */ false,selectedScopes
        (AuthResponse authResponse) =>
        {
        string authCode = authResponse.GetAuthCode();
        List grantedScopes = authResponse.GetGrantedScopes();
    
        // send authCode to server...
    });

Configurar e adicionar recursos