Cómo establecer un inventario multiplataforma

Cómo funciona

Inventario multiplataforma permite a los desarrolladores de juegos sincronizar el inventario de un usuario dentro de un juego en diferentes plataformas (Steam, EGS, PlayStation, XBox, etc.), gestionar el inventario y el saldo del usuario y recopilar datos sobre estos.

Los siguientes pasos aseguran la sincronización:

  1. El jugador vincula sus cuentas de plataforma a la cuenta principal que se utiliza para identificar al jugador en diferentes plataformas.
  2. Xsolla proporciona el mecanismo para vincular las cuentas de plataforma a la cuenta principal y gestionar la sincronización del inventario multiplataforma.

La solución incluye los siguientes componentes:

  • cliente de juego
  • servidor de juego
  • aplicación web con una interfaz de usuario de vinculación de cuentas
  • Xsolla Login para proporcionar la cuenta principal y un mecanismo de vinculación
  • Inventario del jugador de Xsolla para almacenar el inventario del usuario

Flujo del usuario

Para vincular una cuenta de plataforma (Steam o EGS) a la cuenta principal, es necesario implementar la identificación de usuario en el juego mediante la cuenta de Xsolla Login o el algoritmo para vincular cuentas en plataformas de videoconsolas.

El algoritmo para vincular la cuenta de videoconsola a la cuenta principal es el siguiente:

  1. El jugador accede por primera vez al juego en la videoconsola de la plataforma.
  2. El juego muestra el mensaje que ofrece vincular la cuenta de la plataforma a la cuenta principal.
  3. Si el jugador confirma la acción:
    1. se le redirige al lado de la aplicación (p. ej., el sitio web del juego o la aplicación móvil), donde puede autenticarse o crear la cuenta principal.
    2. Tras autenticarse correctamente en la aplicación, el jugador recibe un código alfanumérico para vincular las cuentas.
  4. El jugador vuelve a la versión de consola del juego e introduce el código.
  5. Las cuentas principal y de plataforma se vinculan y la consola del juego muestra el mensaje de confirmación.
  6. El inventario del jugador en la plataforma se sincroniza con el inventario vinculado a la cuenta principal.

Nota
La moneda prémium (moneda comprada por dinero real) no se sincroniza en los inventarios. Según la normativa de las plataformas de consola, la moneda prémium adquirida a través de las videoconsolas PlayStation, Xbox y Nintendo Switch no se acumula y se almacena por separado.
Aviso
No se pueden desvincular las cuentas una vez vinculadas. Además, si el usuario se niega a vincular la cuenta al entrar en el juego por primera vez, no podrá vincularlas en el futuro.

¿Quién puede utilizarlo?

Desarrolladores de juegos que planean un lanzamiento multiplataforma de su juego y quieren establecer una base de datos de jugadores fidelizados al proporcionar a los jugadores acceso a sus compras y recompensas en cualquier plataforma.

Nota
La solución solo puede conectarse antes de que el juego salga a la venta en una segunda plataforma de publicación. Por ejemplo, si el juego se ha publicado en una plataforma para PC y se va a lanzar en PlayStation, es necesario conectar el inventario multiplataforma antes de que se lance en PlayStation.

Cómo conseguirlo

Para conectar un inventario multiplataforma:

  1. Conecte el inventario del jugador. Implemente la autenticación de acceso básica para trabajar con los métodos de servidor y la autenticación Xsolla Login basada en el protocolo OAuth 2.0 para trabajar con los métodos de cliente. La autenticación basada en el protocolo OAuth 2.0 también es necesaria para acceder a los métodos API de Login e implementar los métodos de vinculación de cuentas.
  2. Implemente la interfaz de usuario de vinculación de cuentas, incluyendo:
    1. autenticación basada en el servidor del juego y gestión de inventario
    2. autenticación basada en el cliente del juego y gestión de inventario
    3. métodos de vinculación de cuentas

Nota
Si ya ha implementado la sincronización de cuentas en el lado del servidor del juego, establecer el Inventario del jugador será suficiente para la sincronización del inventario del usuario.

Interfaz de usuario de vinculación de cuentas

La interfaz de usuario de vinculación de cuentas debe ofrecer las siguientes opciones:

  • opción de mostrar un mensaje ofreciendo vincular una cuenta de la plataforma a la cuenta principal
  • opción de aceptar o rechazar la vinculación de cuentas
  • opción de enviar el código para vincular cuentas si el usuario acepta vincularlas
  • opción de mostrar la URL de la aplicación móvil o web que se usa para vincular las cuentas

El mecanismo para autenticar usuarios en la cuenta principal es el siguiente:

  1. Integrar el widget de Login con la aplicación.
  2. Se transmite un JWT a la aplicación cuando el usuario se autentica a través del widget. Implementar la capacidad de transmitir un JWT desde la aplicación al método para obtener el código de vinculación y mostrar el código en la interfaz de usuario de la aplicación.
  3. Implementar autenticación mediante el JWT en el lado del servidor del juego.
  4. Implementar la transmisión de un token, user_id en la plataforma de consola, y el ID de la plataforma al método para vincular a la cuenta principal cuando el usuario accede a la versión de consola del videojuego y envía el código para vincular las cuentas.

Nota
Si desea exportar las cuentas existentes al almacenamiento de Xsolla, contacte con su gestor del éxito del cliente o envíe un correo electrónico a csm@xsolla.com.

Autenticación en el servidor del juego

Para acceder a los métodos API de Login para gestionar el inventario del jugador en el servidor del juego, es necesario configurar la autenticación OAuth 2.0 y obtener un token de acceso al servidor.
Nota
Para obtener client_id y client_secret, contacte con su gestor del éxito del cliente o envíe un correo electrónico a csm@xsolla.com.
Solicitud:
Copy
Full screen
Small screen
<?php
$uri = 'https://login.xsolla.com/api/oauth2/token';
$body = [
    'grant_type' => 'client_credentials',
    'client_id' => 1,
    'client_secret' => 'client_secret'
];

$headers = [
    'Content-type: application/x-www-form-urlencoded'
];

$request = curl_init($uri);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POST, true);
curl_setopt($request, CURLOPT_POSTFIELDS, http_build_query($body));

curl_setopt($request, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($request);
print_r($response);

Respuesta:

Copy
Full screen
Small screen

{
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",           
    "token_type":"bearer",
    "expires_in":3600,
    "scope": ""
}

Gestionar el inventario del jugador en el servidor del juego

Los métodos de gestión de inventario incluyen los siguientes métodos de servidor:

Es necesario transmitir el user_id del usuario en la plataforma y el ID de la plataforma a estos métodos.

Autenticación en el cliente del juego

Implementa el método API Auth by custom ID para gestionar el inventario del jugador en el cliente del juego. Transmita los siguientes parámetros en la solicitud:

  • server_custom_id - identificador único de usuario en el juego
  • social_profile.user_id - identificador único de usuario en la plataforma

Solicitud:

Copy
Full screen
Small screen
<?php
$uri = 'https://login.xsolla.com/api/users/login/server_custom_id';
$queryParams = [
    'publisher_project_id' => 44056
];
$queryParamsString = '?' . http_build_query($queryParams);

$body = '
    {
        "server_custom_id": "1234567890asdfghjkl",
        "social_profile": {
          "platform": "xbox_live",
          "user_id": "4352354"
        }
    }
';

$headers = [
    'Content-type: application/json',
    'x-server-authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'
];

$request = curl_init($uri . $queryParamsString);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $body);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($request);

Respuesta:

Copy
Full screen
Small screen

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
}
Nota
También puede usar el método User tokenization para obtener un JWT.

Gestionar el inventario del jugador en el cliente del juego

Los métodos de gestión de inventario incluyen los siguientes métodos de cliente:

Para gestionar el inventario del jugador en las plataformas de consola:

  1. Implemente la transmisión del ID de plataforma a los métodos de cliente para almacenar el saldo de moneda prémium en las plataformas de publicación de consola de acuerdo con la normativa de las plataformas de consola.
  2. Implemente los siguientes pasos en el servidor del juego para gestionar el inventario del usuario en el cliente de consola:
    1. El juego recibe un token de acceso al servidor para la tokenización del usuario.
    2. El juego recibe un JWT por user_id del usuario en la plataforma y por ID de plataforma.
    3. El juego transmite el JWT a los métodos de cliente especificados.

Métodos de vinculación de cuentas

Obtener el código de vinculación

Implementar el método API Create code for linking accountpara obtener el código de vinculación y transmitirlo al usuario.

Solicitud:

Copy
Full screen
Small screen
var data = null;
 var xhr = new XMLHttpRequest();
 xhr.withCredentials = true;
 xhr.addEventListener("readystatechange", function () {
     if (this.readyState === this.DONE) {
         console.log(this.responseText);
     }
 });
 xhr.open("GET", "https://login.xsolla.com/api/users/account/code");
 xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");
 xhr.send(data);
 

Respuesta:

Copy
Full screen
Small screen

 {
   "code": "123456"
 }
 

Vincular a la cuenta principal

Implemente el método API Link accounts by code, en el cual:

  • code - código de vinculación
  • publisher_project_id - ID del proyecto de Cuenta del editor
  • user_id - identificador del usuario en la plataforma

Asegúrese de haber realizado los siguientes pasos antes de llamar al método:

  1. implementó la interfaz para mostrar el código de vinculación de la cuenta y el formulario para introducir el código recibido.
  2. Implementó el método para obtener un token de acceso al servidor.
  3. Implementó el método para obtener el código de vinculación.

Nota
También puede utilizar el método API Connect game account to Xsolla para vincular la cuenta de la plataforma a la cuenta principal.
Solicitud:
Copy
Full screen
Small screen
<?php
$uri = 'https://login.xsolla.com/api/users/account/link';
$body = '
    {
        "code": "234155",
        "platform": "xbox_live",
        "publisher_project_id": "12423354",
        "user_id": "4352354"
    }
';

$headers = [
    'Content-type: application/x-www-form-urlencoded',
    'x-server-authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'
];

$request = curl_init($uri);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $body);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($request);

Respuesta:

Copy
Full screen
Small screen

204 OK

Lista de plataformas

PlataformaID de plataformaComentario
PlayStation Networkplaystation_network-
Xbox Livexbox_live-
PC Standalonepc_standalone-
Nintendo eShopnintendo_shop-
Google Playgoogle_play-
Apple Storeapp_store_ios-
Android Standaloneandroid_standaloneEl juego se publica individualmente fuera de las tiendas.
IOS Standaloneios_standaloneEl juego se publica individualmente fuera de las tiendas.
Android Otherandroid_otherEl juego se publica en una tienda alternativa en PlayMarket.
IOS Otherios_otherEl juego se publica en una tienda alternativa en AppStore.
PC Otherpc_other-
Xsollaxsolla-
¿Te ha resultado útil este artículo?
¡Gracias!
¿Hay algo en lo que podamos mejorar? Mensaje
Lo sentimos
Por favor, cuéntanos por qué no te ha resultado útil este artículo. Mensaje
¡Gracias por tu mensaje!
Nos ayudará a mejorar tu experiencia.
Valore esta página
Valore esta página
¿Hay algo en lo que podamos mejorar?

Prefiero no responder

¡Gracias por tu mensaje!
Última actualización: 22 de Enero de 2024

¿Has encontrado una errata u otro error de texto? Selecciona el texto y pulsa Ctrl+Intro.

Informar de un problema
Nos esforzamos por ofrecer contenido de calidad. Tus comentarios nos ayudan a mejorar.
Déjanos tu correo electrónico para que te podamos responder
¡Gracias por tu mensaje!