Melhore seu jogo usando o SDK do Play Games para PC

Com o SDK do Play Games para PC, é possível acessar o Google Play Services para criar e monetizar seu jogo em PCs. Venda conteúdo digital usando o Play Faturamento, faça login sem problemas usando o Play Games e verifique se os usuários têm direito de acesso válido ao seu aplicativo com o Play Integrity.

Para uma visão geral dos próximos recursos, lançamentos estáveis e da arquitetura de integração, consulte o cronograma do Google Play Games para PC.

Pronto para começar?

Pré-requisitos

  • Crie uma entrada de app no Play Console e reivindique um nome de pacote do Play.

  • Baixe e instale o Google Play Games para PC e faça login com sua Conta do Google.

Etapa 1: adicionar o SDK ao seu projeto

C++

  • Baixe o SDK do Play Games para PC C++.

  • Copie a pasta de cabeçalhos da API includes/ para a base de código do aplicativo.

  • Copie os arquivos redistribuíveis do diretório imports/ para o projeto do seu aplicativo, dependendo da arquitetura de destino:

  • Para 64 bits (x64): copie os arquivos de imports/x64/.

  • Para 32 bits (x86): copie os arquivos de imports/x86/.

  • Vincule seu projeto ao play_pc_sdk.lib, permitindo o acesso ao conteúdo do play_pc_sdk.dll.

C#

Etapa 2: adicionar um arquivo de manifesto

Antes de usar o SDK no jogo, você precisa associar o executável do jogo ao nome do pacote do Google Play que você reivindicou no Play Console. Para fazer isso, adicione um arquivo manifest.xml no mesmo diretório que o executável do jogo.

Exemplo de conteúdo manifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<Manifest version="1">
    <Application>
        <PackageName>com.example.package</PackageName>
    </Application>
</Manifest>

Exemplo de posição manifest.xml:

C:\Program Files
└───Example Game
    ├───Game.exe
    └───manifest.xml

Etapa 3: assinar digitalmente o jogo

Antes de usar o SDK, o executável do jogo precisa ser assinado digitalmente usando uma assinatura digital Authenticode. Para instruções sobre como assinar um executável, consulte a documentação sobre o SignTool .

Depois de concluir o processo de assinatura digital do jogo, envie as informações do certificado ao representante do Google para configuração.

Etapa 4: inicializar o SDK

Inicialize o SDK durante a sequência de inicialização do jogo. Isso deve ser feito automaticamente, sem exigir interação do usuário. Recomendamos verificar se a inicialização foi bem-sucedida antes de renderizar a janela do jogo. Isso oferece a melhor experiência ao usuário, mostrando e resolvendo erros o mais rápido possível, e evita que a janela do jogo apareça brevemente nos casos em que o processo do jogo precisa ser encerrado.

Comece a usar o SDK chamando GooglePlayInitialize (C++) ou GooglePlayInitialization.InitializeAsync (C#) para inicializar a API. Recomendamos transmitir o nome do pacote Android do jogo em GooglePlayInitializeParams durante a inicialização. Isso configura o estado global, se conecta ao SDK Runtime e verifica se o aplicativo foi iniciado corretamente. Você precisa chamar essa função e ter o callback de continuação concluído com InitializeResult::ok() (C++) ou Result.IsOk (C#) igual a true antes de usar qualquer outra API.

C++

// Initialize the SDK as part of the startup sequence of your
// application.
auto promise = std::make_shared<std::promise<InitializeResult>>();
GooglePlayInitializeParams params;
// Replace with your game's package name.
params.package_name = "com.example.game";
GooglePlayInitialize(
  [promise] (InitializeResult result) {
    promise->set_value(std::move(result));
  }, params);

auto initialize_result = promise->get_future().get();
if (initialize_result.ok()) {
  // The SDK succeeded with initialization. Continue with the startup
  // sequence of the game.
  // ...

  // Retrieve the operating environment and device form factor.
  auto env = initialize_result.value().environment;
  auto form_factor = initialize_result.value().form_factor;
  // ...
} else if (
    initialize_result.code() ==
    InitializationError::kActionRequiredShutdownClientProcess) {
  // The SDK failed to initialize and has requested that your game
  // process exit as soon as possible.
  exit(1);
} else {
  // The SDK failed to initialize for an alternative reason. It is
  // still generally recommended that you exit the game process as
  // soon as possible, because it won't be possible to access any
  // APIs in the SDK. Critical operations such as verifying the user
  // owns a valid license to your game won't be possible.
  // ...
}

C#

// SDK Clients
private BillingClient _billingClient;
private IntegrityClient _integrityClient;

// Stored product information
private string _offerToken;

private async void InitializeSDK()
{
    // The factory provides the necessary handler for initialization.
    var initializationHandler =
        PlayPcSdkFactory.InitializationHandler;
    var initializeParams = new GooglePlayInitializeParams {
        // Replace with your game's package name.
        PackageName = "com.example.game"
    };
    var result = await GooglePlayInitialization.InitializeAsync(
        initializationHandler, initializeParams);

    if (result.IsOk)
    {
        // Use the factory to get Unity-compatible instances of the
        // clients
        _billingClient = PlayPcSdkFactory.CreateBillingClient();
        _integrityClient = PlayPcSdkFactory.CreateIntegrityClient();

        // Retrieve the operating environment and device form factor.
        var env = result.Value.Environment;
        var form_factor = result.Value.FormFactor;

        // SDK is ready for use
    }
    else
    {
        // Handle specific, actionable errors
        if (result.Code ==
            InitializationError.ActionRequiredShutdownClientProcess)
        {
            Log("This game must be launched through the Google Play Games client. Exit all game processes immediately, GPG will relaunch the game safely.");
            Application.Quit();
        }
    }
}

Se a inicialização falhar com o código kActionRequiredShutdownClientProcess (C++) / InitializationError.ActionRequiredShutdownClientProcess (C#), saia do processo do jogo o mais rápido possível. O tempo de execução do SDK vai tentar ajudar o usuário sem que o jogo precise fazer mais nada. Por exemplo, se o usuário não tiver uma licença válida para o jogo, o Google Play Games vai pedir que ele compre uma cópia. Para outros erros, saia do processo do jogo porque não será possível usar o SDK para realizar operações críticas, como verificar se o usuário tem uma licença válida para o jogo.

Uma resposta sem sucesso pode indicar uma das seguintes condições:

  • O SDK Runtime não está instalado, não está sendo executado no dispositivo ou é uma versão mais antiga que não é compatível com o SDK integrado ao jogo.

  • O ambiente de execução do SDK não conseguiu verificar a identidade do aplicativo do jogo. Isso pode acontecer devido a um manifest.xml inválido ou ao uso do SDK sem ativar o modo de desenvolvedor durante o desenvolvimento. Sem isso, o executável do jogo precisa ser assinado digitalmente com o certificado digital registrado no nome do pacote do Google Play.

  • O executável do jogo não foi iniciado pelo cliente do Google Play Games.

  • O usuário ativo no Google Play Games não tem uma licença para o aplicativo.

Etapa 5: (opcional) suporte a vários processos de jogos

Conclua estas etapas de integração adicionais se o jogo usar vários processos e o SDK do Play Games para PC for usado por um processo diferente daquele iniciado pelo Google Play Games no PC. Por exemplo, se o Google Play Games no PC iniciar o acesso rápido do jogo, e depois o acesso rápido iniciar o processo do jogo que vai interagir com o SDK.

  1. O processo iniciado diretamente pelo Google Play Games para PC precisa verificar se a inicialização do SDK do Google Play Games para PC foi bem-sucedida.

    Isso oferece a melhor experiência do usuário, mostrando erros assim que possível. Observe que o processo filho que usa o SDK também precisa realizar a inicialização, além do processo iniciado diretamente.

  2. Para usar o SDK do Play Games para PC em um processo filho, encaminhe os parâmetros da linha de comando para o processo filho gerado.

    Exemplo de encaminhamento de parâmetro da linha de comando:

    Processes hierarchy tree:
    
    GooglePlayGames.exe
    └───YourGameLauncher.exe --gpg_args=abc --your_args=123
        └───YourGame.exe --gpg_args=abc --your_args=123
    

    Neste exemplo, vemos uma hierarquia de processos em que o Google Play Games para PC (GooglePlayGames.exe) inicia o jogo (YourGameLauncher.exe) com alguns parâmetros de exemplo (--gpg_args=abc --your_args=123). Em seguida, o jogo gera um processo filho (YourGame.exe) que usa o SDK do Play Games para PC. Para permitir isso, o processo do jogo iniciado pelo Google Play Games para PC encaminha os parâmetros da linha de comando que recebeu para o processo filho.

  3. Saia de todos os processos quando o jogo parar de ser executado.

    Quando um usuário fecha o jogo ou ele é encerrado devido a uma falha na inicialização do SDK, como kActionRequiredShutdownClientProcess, feche todos os processos gerados pelo jogo. Isso garante que, na próxima vez que o jogo for iniciado pelo cliente do Google Play Games para PC, as novas mudanças, como a troca para uma conta ativa diferente, entrem em vigor.

Próximas etapas

Use o SDK ao desenvolver no seu ambiente de desenvolvimento integrado:

Adicione recursos do Google Play para PC ao seu app: