Comment configurer un inventaire multiplateforme

Comment ça marche

L’inventaire multiplateforme permet aux développeurs de jeux de synchroniser l’inventaire d’un utilisateur dans un jeu sur différentes plateformes (Steam, EGS, PlayStation, XBox, etc.), de gérer l’inventaire et le solde des utilisateurs et de collecter des données à leur sujet.

Les étapes suivantes assurent la synchronisation :

  1. Le joueur lie ses comptes de plateforme au compte principal qui est utilisé pour identifier le joueur sur différentes plateformes.
  2. Xsolla fournit le mécanisme pour lier les comptes de plateforme au compte principal et gérer la synchronisation de l’inventaire multiplateforme.

La solution comprend les composants suivants :

  • client de jeu ;
  • serveur de jeu ;
  • application Web avec une interface de liaison de comptes ;
  • Xsolla Login pour fournir le compte principal et un mécanisme de liaison ;
  • Xsolla Player Inventory pour stocker l’inventaire utilisateur.

Flux utilisateur

Pour lier un compte de plateforme (Steam ou EGS) au compte principal, implémentez l’identification utilisateur dans le jeu via le compte Xsolla Login ou l’algorithme de liaison de comptes sur les plateformes de console de jeu.

L’algorithme permettant de lier le compte de console de jeu au compte principal est le suivant :

  1. Le joueur entre pour la première fois dans le jeu sur la plateforme de la console de jeu.
  2. Le jeu affiche le message proposant de lier le compte de la plateforme au compte principal.
  3. Si le joueur confirme l’action :
    1. Il est redirigé vers l’application tierce (par exemple, le site Web du jeu ou l’application mobile), où il peut s’authentifier ou créer le compte principal.
    2. Après une authentification réussie dans l’application, le joueur reçoit un code alphanumérique pour lier les comptes.
  4. Le joueur retourne à la version console du jeu et saisit le code.
  5. Les comptes principal et de plateforme sont liés et la console de jeu affiche le message de confirmation.
  6. L’inventaire du joueur sur la plateforme se synchronise avec l’inventaire lié au compte principal.

Note
La monnaie premium (monnaie achetée contre de l’argent réel) ne se synchronise pas dans les inventaires. Selon la réglementation relative aux plateformes de console, la monnaie premium, achetée via les consoles de jeu PlayStation, Xbox et Nintendo Switch, ne s’empile pas et est stockée séparément.
Avis
Il est impossible de délier les comptes une fois qu’ils sont liés. De plus, si l’utilisateur refuse de lier son compte lorsqu’il entre dans le jeu pour la première fois, il ne pourra plus le faire à l’avenir.

Qui peut l'utiliser

Les développeurs de jeux qui prévoient une sortie multiplateforme de leur jeu et qui souhaitent établir une base de joueurs fidèles en leur donnant accès à leurs achats et à leurs récompenses sur n’importe quelle plateforme.

Note
La solution ne peut être connectée qu’avant la sortie du jeu sur une deuxième plateforme de publication. Par exemple, si le jeu est sorti sur une plateforme PC et va sortir sur PlayStation, vous devez connecter l’inventaire multiplateforme avant que le jeu ne sorte sur PlayStation.

Comment configurer

Pour connecter un inventaire multiplateforme :

  1. Connectez Player Inventory. Implémentez l’authentification d’accès de base pour travailler avec les méthodes serveur, et l’authentification Xsolla Login basée sur le protocole OAuth 2.0 pour travailler avec les méthodes client. L’authentification basée sur le protocole OAuth 2.0 est également requise pour accéder aux méthodes Login API et pour implémenter les méthodes de liaison de comptes.
  2. Implémentez l’interface de liaison de comptes, y compris :
    1. l’authentification côté serveur de jeu et la gestion de l’inventaire ;
    2. l’authentification côté client de jeu et la gestion de l’inventaire ;
    3. les méthodes de liaison de comptes.

Note
Si vous avez déjà implémenté la synchronisation des comptes côté serveur de jeu, la configuration de Player Inventory suffira pour la synchronisation de l’inventaire utilisateur.

Interface de liaison de comptes

L’interface de liaison de comptes doit offrir les possibilités suivantes :

  • affichage du message proposant de lier un compte de plateforme au compte principal ;
  • acceptation ou refus de lier les comptes ;
  • soumission du code permettant de lier les comptes si l’utilisateur accepte de les lier ;
  • affichage de l’URL de l’application mobile ou Web utilisée pour lier les comptes.

Le mécanisme d’authentification de l’utilisateur dans le compte principal est le suivant :

  1. Intégrez le widget Login à l’application.
  2. Un JWT est passé à l’application lorsque l’utilisateur s’authentifie via le widget. Implémentez le passage d’un JWT de l’application à la méthode permettant d’obtenir le code de liaison et d’afficher le code dans l’interface de l’application.
  3. Implémentez l’authentification par JWT côté serveur du jeu.
  4. Implémentez le passage d’un jeton, de user_id sur la plateforme de la console, et de l’ID de la plateforme à la méthode permettant de lier le compte principal lorsque l’utilisateur entre dans la version console du jeu et soumet le code de liaison de comptes.

Note
Pour exporter les comptes existants vers le stockage Xsolla, contactez votre responsable de la réussite client ou envoyez un e-mail à csm@xsolla.com.

Authentification sur le serveur du jeu

Afin d’accéder aux méthodes Login API pour gérer l’inventaire du joueur sur le serveur du jeu, vous devez configurer l’authentification OAuth 2.0 et obtenir un jeton d’accès au serveur.
Note
Pour obtenir client_id et client_secret, contactez votre responsable de la réussite client ou envoyez un e-mail à csm@xsolla.com.
Requête :
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);

Réponse :

Copy
Full screen
Small screen

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

Gestion de l'inventaire du joueur sur le serveur du jeu

Les méthodes de gestion de l’inventaire incluent les méthodes serveur suivantes :

Il est nécessaire de passer à ces méthodes le paramètreuser_id de l’utilisateur sur la plateforme et l’ID de la plateforme.

Authentification sur le client du jeu

Implémentez la méthode API Auth by custom ID pour gérer l’inventaire du joueur dans le client du jeu. Passez les paramètres suivants dans la requête :

  • server_custom_id — identifiant unique de l’utilisateur dans le jeu ;
  • social_profile.user_id — identifiant unique de l’utilisateur sur la plateforme.

Requête :

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

Réponse :

Copy
Full screen
Small screen

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
}
Note
Vous pouvez également utiliser la méthode User tokenization pour obtenir un JWT.

Gestion de l'inventaire du joueur dans le client du jeu

Les méthodes de gestion de l’inventaire comprennent les méthodes client suivantes :

Pour gérer l’inventaire du joueur sur les plateformes de console :

  1. Implémentez le passage de l’ID de la plateforme aux méthodes client afin de se conformer à l’obligation de stocker le solde de la monnaie premium du côté des plateformes de publication de console.
  2. Implémentez les étapes suivantes sur le serveur du jeu pour gérer l’inventaire utilisateur dans le client de la console :
    1. Le jeu reçoit un jeton d’accès au serveur pour la tokénisation de l’utilisateur ;
    2. Le jeu reçoit le JWT par user_id de l’utilisateur sur la plateforme et l’ID de la plateforme ;
    3. Le jeu passe le JWT aux méthodes client spécifiées.

Méthodes de liaison de comptes

Obtention du code de liaison

Implémentez la méthode API Create code for linking accounts pour obtenir le code de liaison et le passer à l’utilisateur.

Requête :

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

Réponse :

Copy
Full screen
Small screen

 {
   "code": "123456"
 }
 

Liaison au compte principal

Implémentez la méthode API Link accounts by code, où :

  • code — code de liaison ;
  • publisher_project_id — ID de projet issu du Compte éditeur ;
  • user_id — ID de l’utilisateur sur la plateforme.

Assurez-vous d’avoir effectué les étapes suivantes avant d’appeler la méthode :

  1. Implémentation de l’interface d’affichage du code de liaison de comptes et du formulaire de saisie du code reçu.
  2. Implémentation de la méthode d’obtention d’un jeton d’accès au serveur.
  3. Implémentation de la méthode d’obtention du code de liaison.

Note
Vous pouvez également utiliser la méthode API Connect game account to Xsolla pour lier le compte de plateforme au compte principal.
Requête :
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);

Réponse :

Copy
Full screen
Small screen

204 OK

Liste des platesformes

PlateformeID de plateformeCommentaire
PlayStation Networkplaystation_network-
Xbox Livexbox_live-
PC (standalone)pc_standalone-
Nintendo eShopnintendo_shop-
Google Playgoogle_play-
Apple Storeapp_store_ios-
Android (standalone)android_standaloneLe jeu est publié individuellement en dehors des magasins.
iOS (standalone)ios_standaloneLe jeu est publié individuellement en dehors des magasins.
Android (boutique alternative)android_otherLe jeu est publié dans un magasin alternatif sur PlayMarket.
iOS (boutique alternative)ios_otherLe jeu est publié dans un magasin alternatif sur l’AppStore.
PC (boutique alternative)pc_other-
Xsollaxsolla-
Cet article vous a été utile ?
Merci !
Que pouvons-nous améliorer ? Message
Nous sommes désolés de l'apprendre
Dites-nous pourquoi vous n'avez pas trouvé cet article utile. Message
Merci pour votre commentaire !
Nous examinerons votre message et l'utiliserons pour améliorer votre expérience.
Évaluer cette page
Évaluer cette page
Que pouvons-nous améliorer ?

Préfère ne pas répondre

Merci pour votre commentaire !
Dernière mise à jour: 22 Janvier 2024

Faute de frappe ou autre erreur dans le texte ? Sélectionnez le texte concerné et appuyez sur Ctrl+Entée.

Signaler un problème
Nous améliorons continuellement notre contenu grâce à vos commentaires.
Indiquez votre adresse e-mail pour un suivi
Merci pour votre commentaire !