Como configurar o inventário multiplataforma

Como funciona

O Iinventário multiplataforma permite que os desenvolvedores de jogos sincronizem um inventário de usuário dentro de um jogo em diferentes plataformas (Steam, EGS, PlayStation, Xbox, etc.), gerenciem o inventário e o saldo de usuários e coletem dados sobre eles.

As etapas a seguir garantem a sincronização:

  1. O jogador vincula suas contas de plataforma à conta principal que é usada para identificar o jogador em diferentes plataformas.
  2. A Xsolla fornece o mecanismo para vincular contas de plataforma à conta principal e gerenciar a sincronização de inventário entre plataformas.

A solução inclui os seguintes componentes:

  • cliente de jogo
  • servidor de jogos
  • aplicativo da web com uma interface de vinculação de conta
  • Xsolla Login para fornecer a conta principal e um mecanismo de vinculação
  • Xsolla Player Inventory para armazenar o inventário do usuário

Fluxo do usuário

Para vincular uma conta de plataforma (Steam ou EGS) à conta principal, você precisa implementar a identificação do usuário no jogo usando a conta Xsolla Login ou o algoritmo para vincular contas em plataformas de console de jogos.

O algoritmo para vincular a conta do console de jogo à conta principal é o seguinte:

  1. O jogador entra no jogo na plataforma do console de jogos pela primeira vez.
  2. O jogo mostra a mensagem que oferece vincular a conta da plataforma à conta principal.
  3. Se o jogador confirmar a ação:
    1. Ele é redirecionado para o aplicativo secundário (por exemplo, o site do jogo ou aplicativo móvel), onde ele pode autenticar ou criar a conta principal.
    2. Após a autenticação bem-sucedida no aplicativo, o jogador recebe um código alfanumérico para vincular as contas.
  4. O jogador retorna para a versão de console do jogo e insere o código.
  5. O link das contas principal e da plataforma e o console de jogos mostram a mensagem de confirmação.
  6. O inventário do jogador na plataforma sincroniza com o inventário vinculado à conta principal.

Observação
A moeda premium (moeda comprada por dinheiro real) não é sincronizada nos inventários. De acordo com os regulamentos das plataformas de consoles, as moedas premium compradas via PlayStation, Xbox e Nintendo Switch não se acumulam e são armazenadas separadamente.
Aviso
Não é possível desvincular as contas depois que elas estiverem vinculadas. Além disso, se o usuário se recusar a vincular a conta ao entrar no jogo pela primeira vez, ele não poderá vinculá-la no futuro.

Quem pode usar

Desenvolvedores de jogos que planejam um lançamento multiplataforma de seu jogo e querem estabelecer uma base fiel de jogadores, dando aos jogadores acesso a suas compras e recompensas em qualquer plataforma.

Observação
A solução pode ser conectada apenas antes do jogo ser lançado em uma segunda plataforma de distribuição. Por exemplo, se o jogo foi lançado no PC e vai ser lançado no PlayStation, você precisa conectar o inventário multiplataforma antes do lançamento no PlayStation.

Como obtê-lo

Para conectar um inventário de plataforma cruzada:

  1. Conecte o Player Inventory. Implemente a autenticação de acesso básica para trabalhar com os métodos de servidor e a autenticação Xsolla Login com base no protocolo OAuth 2.0 para trabalhar com os métodos de cliente. A autenticação baseada no protocolo OAuth 2.0 também é necessária para acessar os métodos da Login API e implementar os métodos de vinculação de conta.
  2. Implemente a interface de vinculação de conta, incluindo:
    1. autenticação baseada em servidor de jogo e gerenciamento de inventário
    2. autenticação com base no cliente de jogo e gerenciamento de inventário
    3. métodos de vinculação de conta

Observação
Se você já tiver implementado a sincronização de conta no lado do servidor do jogo, a configuração do Player Inventory será suficiente para a sincronização do inventário do usuário.

Interface de vinculação de conta

A interface de vinculação de conta deve fornecer as seguintes habilidades:

  • capacidade de mostrar uma mensagem oferecendo vincular uma conta de plataforma à conta principal
  • capacidade de concordar ou recusar vincular as contas
  • capacidade de enviar o código para vincular as contas se o usuário concordar em vinculá-las
  • capacidade de exibir o URL para o aplicativo móvel ou da web que é usado para vincular as contas

O mecanismo para autenticar usuários na conta principal é o seguinte:

  1. Integre o widget de Login com o aplicativo.
  2. Um JWT é passado para o aplicativo quando o usuário se autentica por meio do widget. Implemente a capacidade de passar um JWT do aplicativo para o método para obter o código de vinculação e exibir o código na interface do aplicativo.
  3. Implemente a autenticação através do JWT no lado do servidor do jogo.
  4. Implemente a passagem de um token, user_id na plataforma do console, e o ID da plataforma para o método de vinculação à conta principal quando o usuário entrar na versão console do jogo e enviar o código para vincular as contas.

Observação
Se quiser exportar as contas existentes para o armazenamento Xsolla, contacte o seu Gerente de Sucesso do Cliente ou envie um e-mail para csm@xsolla.com.

Autenticação no servidor do jogo

Para acessar os métodos da Login API para gerenciar o inventário do jogador no servidor do jogo, você precisa configurar a autenticação OAuth 2.0 e obter um token de acesso ao servidor.
Observação
Para obter client_id e client_secret, entre em contato com seu Gerente de Sucesso do Cliente ou envie um e-mail para csm@xsolla.com.
Solicitação:
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);

Resposta:

Copy
Full screen
Small screen

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

Gerenciamento do inventário do jogador no servidor do jogo

Os métodos de gerenciamento de inventário incluem os seguintes métodos de servidor:

É necessário passar o user_id do usuário na plataforma e o ID da plataforma para esses métodos.

Autenticação no cliente do jogo

Implemente o método de API Auth by custom ID para gerenciar o inventário do jogador no cliente do jogo. Passe os seguintes parâmetros na solicitação:

  • server_custom_id — identificador de usuário exclusivo no jogo
  • social_profile.user_id — identificador de usuário exclusivo na plataforma

Solicitação:

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);

Resposta:

Copy
Full screen
Small screen

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
}
Observação
Você também pode usar o método User tokenization de usuário para obter um JWT.

Gerenciamento do inventário do jogador no cliente do jogo

Os métodos de gerenciamento de inventário incluem os seguintes métodos de cliente:

Para gerenciar o inventário do jogador em plataformas de console:

  1. Implemente a passagem do ID da plataforma aos métodos de cliente para armazenar o saldo de moeda premium nas plataformas de distribuição de console de acordo com os regulamentos das plataformas de console.
  2. Implemente as seguintes etapas no servidor do jogo para gerenciar o inventário do usuário no cliente do console:
    1. O jogo recebe um token de acesso ao servidor para tokenização do usuário.
    2. O jogo recebe o JWT do usuário pelo user_id na plataforma e o ID da plataforma.
    3. O jogo passa o JWT para os métodos de cliente especificados.

Métodos de vinculação de conta

Obtenção do código de vinculação

Implemente o método de API Create code for linking accounts para obter o código de vinculação e passá-lo para o usuário.

Solicitação:

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);
 

Resposta:

Copy
Full screen
Small screen

 {
   "code": "123456"
 }
 

Vinculação à conta principal

Implemente o método de API Link accounts by code, onde:

  • code — código de vinculação
  • publisher_project_id — ID do projeto da Conta de Distribuidor
  • user_id — identificador de usuário na plataforma

Certifique-se de concluir as seguintes etapas antes de chamar o método:

  1. Implementar a interface para exibir o código de vinculação da conta e o formulário para inserir o código recebido.
  2. Implementar o método para obter um token de acesso ao servidor.
  3. Implementar o método para obter o código de vinculação.

Observação
Você também pode usar o método de API Connect game account to Xsolla para vincular a conta da plataforma à conta principal.
Solicitação:
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);

Resposta:

Copy
Full screen
Small screen

204 OK

Lista de plataformas

PlataformaID da plataformaComentário
PlayStation Networkplaystation_network-
Xbox Livexbox_live-
PC Autônomopc_standalone-
Nintendo eShopnintendo_shop-
Google Playgoogle_play-
Apple Storeapp_store_ios-
Android Autônomoandroid_standaloneO jogo é publicado individualmente fora das lojas.
iOS Autônomoios_standaloneO jogo é publicado individualmente fora das lojas.
Android Outrosandroid_otherO jogo é publicado em uma loja alternativa no PlayMarket.
iOS Outrosios_otherO jogo é publicado em uma loja alternativa na AppStore.
PC Outrospc_other-
Xsollaxsolla-
Este artigo foi útil?
Obrigado!
Podemos melhorar alguma coisa? Mensagem
Que pena ouvir isso
Explique porque este artigo não foi útil para você. Mensagem
Obrigado pelo seu feedback!
Avaliaremos sua mensagem e a usaremos para melhorar sua experiência.
Avalie esta página
Avalie esta página
Podemos melhorar alguma coisa?

Não quero responder

Obrigado pelo seu feedback!
Última atualização: 22 de Janeiro de 2024

Encontrou um erro de texto ou digitação? Selecione o texto e pressione Ctrl+Enter.

Relatar um problema
Nós sempre avaliamos nossos conteúdos. Seu feedback nos ajuda a melhorá-los.
Forneça um e-mail para que possamos responder
Obrigado pelo seu feedback!