Cómo integrar el SDK de Google Play Juegos para PC con Unity

En esta guía, se proporcionan instrucciones paso a paso para integrar el SDK de Google Play Juegos para PC en tu proyecto de Unity.

Paso 1: Descarga el SDK

Descarga la versión más reciente del paquete de Unity con el vínculo de descarga.

Descargar: SDK de Unity de Play Juegos para PC

Paso 2: Importa el paquete

El SDK se distribuye como un archivo tar compatible con Unity Package Manager (UPM). Para obtener más información, consulta Cómo instalar un paquete de UPM desde un archivo tar local.

Paso 3: Configura los parámetros de compilación

Para verificar que las bibliotecas nativas se carguen correctamente, debes configurar tu proyecto para que use el backend de scripting IL2CPP y la arquitectura correcta.

  1. Crea un perfil de compilación con Windows como plataforma.

  2. Selecciona la configuración de la plataforma como Windows. Para la arquitectura, usa las siguientes opciones:

    • Intel de 64 bits (recomendado)
    • Intel de 32 bits

    Nota: La plataforma de Google Play Juegos para PC se ejecuta en un entorno de 64 bits. Puedes compilar tu juego como de 32 bits (x86) o de 64 bits (x64).

  3. Establece Scripting Backend en IL2CPP. Para obtener más información, consulta Cómo compilar un proyecto con IL2CPP.

    • Establece Api Compatibility Level en .NET Standard 2.0 (o .NET Framework).

Paso 4: Crea el manifiesto de la aplicación

Antes de usar el SDK en tu juego, debes asociar el ejecutable del juego con el nombre del paquete de Play que reclamaste en Play Console. Para ello, agrega un archivo manifest.xml en el mismo directorio que el archivo ejecutable del juego.

Nota: Este es un paso manual que se debe realizar.

  1. Para compilar el archivo ejecutable del juego, selecciona File > Build and Run o haz clic en Ctrl+B.
  2. Abre un editor de texto y crea un archivo nuevo llamado manifest.xml.
  3. Copia y pega el siguiente código XML en el archivo:

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

  4. Guarda el archivo como manifest.xml.

  5. Mueve este archivo a la misma carpeta que el archivo ejecutable del juego compilado.

    Ejemplo: Si tu juego está en Builds/MyGame.exe, el manifiesto debe estar en Builds/manifest.xml.

Paso 5: Inicializa el SDK

Debes inicializar el SDK antes de acceder a cualquier función, como Billing o Integrity. Usa PlayPcSdkFactory para crear el controlador de inicialización y comenzar la conexión.

Crea una secuencia de comandos de C# nueva, por ejemplo, SdkInitialization.cs, y agrega el siguiente código:

using UnityEngine;
using System;
using System.Threading.Tasks;
// Import the SDK namespaces
using PlayPcSdkManaged.Initialization;
using PlayPcSdkManaged.Unity;

public class GooglePlayPCSDKInit : MonoBehaviour
{
    // Prevent double-initialization if this script is reloaded
    private static bool _isInitialized = false;

    private void Start()
    {
        // Use the "Safe Runner" pattern to fire the async method
        _ = InitializeSdkAsync();
    }

    private async Task InitializeSdkAsync()
    {
        if (_isInitialized)
        {
            Debug.LogWarning("Google Play PC SDK is already initialized. Skipping.");
            return;
        }

        try
        {
            Debug.Log("Initializing Google Play PC SDK...");

            // 1. Get the Unity-specific initialization handler from the factory
            var initHandler = PlayPcSdkFactory.InitializationHandler;

            // 2. Call InitializeAsync to start the connection
            var result = await GooglePlayInitialization.InitializeAsync(initHandler);

            // 3. Check the result
            if (result.IsOk)
            {
                _isInitialized = true;
                Debug.Log("<color=green>Google Play PC SDK Initialized Successfully!</color>");
                // You can now create BillingClient or IntegrityClient instances
            }
            else
            {
                Debug.LogError($"<color=red>Initialization Failed!</color>");
                Debug.LogError($"Error Code: {result.Code}");
                Debug.LogError($"Message: {result.ErrorMessage}");
            }
        }
        catch (Exception ex)
        {
            // Catch unexpected crashes or task failures
            Debug.LogError($"Exception during initialization: {ex.Message}");
            Debug.LogException(ex);
        }
    }
}

Vincula este código a un GameObject en tu primer ambiente. Cuando ejecutes el juego, verifica si aparece el mensaje "SDK Initialized Successfully!" en la consola.