Introdução ao plug-in do Google Play Games para Unity

Este tópico descreve como configurar seu projeto para usar o plug-in do Google Play Games para Unity. As tarefas incluem configurar o projeto, escolher uma plataforma social e configurar o login do jogador.

Antes de começar

Instalação do plug-in

  1. Use uma destas opções para instalar o plug-in:

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

      current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
    
  3. Abra o projeto do jogo no Unity.

  4. Para importar o arquivo unitypackage para os recursos do projeto, clique no item de menu Assets > Import Package > Custom Package.

  5. 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.

Acessar recursos do Android no 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.

  1. Acesse os recursos do Android para seu jogo.

    1. No Play Console, abra seu projeto dos serviços relacionados a jogos do Google Play.

    2. Clique na guia Achievements e em Get resources.

    3. Na janela Export resources, clique na guia Android.

    4. Selecione e copie o conteúdo XML.

Configurar seu projeto do Unity

  1. Adicione os recursos do Android ao seu projeto do Unity.

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

    2. Na janela de configuração, preencha os itens abaixo com as informações pedidas:

    3. Directory to save constants: a pasta do arquivo de constantes.

    4. Constants class name: o nome da classe C# que vai ser criada, incluindo o namespace.

    5. Resources Definition: cole os dados de recursos do Android do Play Console aqui.

    6. Web client ID: o ID do cliente do app da Web vinculado. Só vai ser necessário preencher 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.

    7. 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.

Configuração do Android

Configure o caminho para a instalação do SDK do Android no Unity. Essa opção fica no menu de preferências, na seção External Tools.

Para configurar seu jogo do Unity para ser executado com o Google Play Games no Android, primeiro abra o Android SDK Manager e verifique se você fez o download dos pacotes abaixo. O nome dos componentes pode ser diferente de acordo com o SDK Manager que você está usando: do Android Studio ou independente. - Google Play Services - Biblioteca de Suporte do Android - Repositório Maven local para Bibliotecas de Suporte (também conhecido como Repositório de Suporte do Android) - Repositório do Google - Android 6.0 (API 23) (não afeta a versão mínima do SDK).

Em seguida, configure o nome do pacote do jogo. Para fazer isso, clique em File > Build Settings, selecione a plataforma Android e clique em Player Settings para mostrar a janela de configurações do jogador do Unity. Nessa janela, procure a configuração Bundle Identifier em Other Settings. Insira o nome do pacote, por exemplo, com.example.my.awesome.game.

Para fazer login nos serviços relacionados a jogos do Google Play, assine o arquivo APK e confira se está usando o certificado correto, ou seja, o que corresponde à impressão digital do certificado SHA1 inserida no Play Console durante a configuração.

Em seguida, clique no item de menu Window |Google Play Games|Setup - Android setup. A tela de configuração do Android vai aparecer.

Digite o nome da classe Constants. Esse é o nome da classe totalmente qualificada que vai ser atualizada (ou criada) e contém os IDs dos recursos do jogo. O formato do nome é <namespace>.<classname>. Por exemplo, AwesomeGame.GPGSIds

Cole os dados de definição do recurso. Esses são os dados XML do Console para desenvolvedores do Google Play que contêm os IDs de recursos e também o ID do aplicativo Android.

Para encontrar esses dados no Google Play Console, clique em "Ver recursos" em qualquer uma das páginas de recursos (por exemplo, Conquistas ou Placares) e clique em "Android".

Depois de colar os dados na área de texto, clique no botão Setup.

Observação: se você estiver usando um aplicativo da Web ou servidor de back-end com seu jogo, faça a vinculação dos dois para ativar a busca do token de ID e/ou endereço de e-mail do jogador. Para fazer isso, vincule um aplicativo da Web ao jogo no Console para desenvolvedores do Google Play e insira o ID do cliente do aplicativo da Web na caixa de diálogo de configuração.

Mais instruções sobre a criação para Android no Windows

Se você estiver usando o Windows, confira se a instalação do SDK do Java pode ser acessada pelo Unity. Para fazer isto:

  1. Defina a variável de ambiente JAVA_HOME para seu caminho de instalação do SDK do Java (por exemplo, C:\Program Files\Java\jdk1.7.0_45).
  2. Adicione a pasta bin do SDK do Java à variável de ambiente PATH (por exemplo, C:\Program Files\Java\jdk1.7.0_45\bin).
  3. Reinicialize.

Como editar variáveis de ambiente: no Windows 2000/XP/Vista/7, clique com o botão direito do mouse em Meu computador, Propriedades e acesse Propriedades avançadas do sistema (ou Propriedades do sistema e clique na guia Avançadas) e clique em Variáveis de ambiente. No Windows 8, pressione a tecla Windows + W e procure variáveis de ambiente. Para mais informações, consulte a documentação da sua versão do Windows.

Executar o projeto

Se você estiver trabalhando com o exemplo do Smoketest, agora vai poder criar e executar o projeto. Você vai notar uma tentativa de login automático quando o Smoketest for iniciado.

Para criar e executar no Android, clique em File > Build Settings, selecione a plataforma Android e clique em Switch to Platform e Build and Run.

Escolher uma plataforma social

O plug-in do Google Play Games 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 do Google Play Games que não são padrão podem ser acessadas ao transmitir o objeto Social.Active para a classe PlayGamesPlatform, em que os outros métodos extra estão disponíveis.

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

Quando você chama PlayGamesPlatform.Activate, o Google Play Games se torna 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. Esse é o comportamento desejado para a 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 chame PlayGamesPlatform.Activate.
  2. Se Xyz for o nome de um método que você quer 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 o 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 do Google Play Games para Unity.

Se um usuário nunca tiver usado o Google Play Games 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.

    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 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.

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 Login do Google para sites.

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 Game 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