So richten Sie das plattformübergreifende Inventar ein

So funktioniert's

Das plattformübergreifende Inventar ermöglicht es Spieleentwicklern, ein Benutzerinventar innerhalb eines Spiels auf verschiedenen Plattformen (Steam, EGS, PlayStation, XBox usw.) zu synchronisieren, das Benutzerinventar und -guthaben zu verwalten sowie Daten darüber zu sammeln.

Die folgenden Schritt gewährleisten die Synchronisierung:

  1. Der Spieler verknüpft seine Plattformkonten mit dem Hauptkonto, welches der Identifizierung des Spielers auf den verschiedenen Plattformen dient.
  2. Xsolla stellt den Mechanismus für das Verknüpfen von Plattformkonten mit dem Hauptkonto und das Verwalten der plattformübergreifenden Inventarsynchronisierung bereit.

Die Lösung umfasst folgende Komponenten:

  • Spiel-Client
  • Spielserver
  • Web-Anwendung samt Benutzeroberfläche für die Kontoverknüpfung
  • Xsolla-Login zum Bereitstellen des Hauptkontos und eines Verknüpfungsmechanismus
  • Xsolla-Spielerinventar zum Speichern des Benutzerinventars

Ablauf für den Nutzer

Sie müssen die Benutzeridentifikation im Spiel implementieren, um ein Plattformkonto (Steam oder EGS) mit dem Hauptkonto zu verknüpfen. Nutzen Sie dazu das Xsolla-Login-Konto oder den Algorithmus der Spielkonsolenplattformen für das Verknüpfen von Konten.

Der Algorithmus für das Verknüpfen des Spielekonsolenkontos mit dem Hauptkonto gestaltet sich wie folgt:

  1. Der Spieler startet das Spiel zum ersten Mal auf der Spielkonsolenplattform.
  2. Das Spiel zeigt eine Nachricht an, in der angeboten wird, das Plattformkonto mit dem Hauptkonto zu verknüpfen.
  3. Bei Zustimmung des Spielers:
    1. erfolgt die Weiterleitung zur Anwendung (z. B. Spiel-Website oder App). Dort kann sich der Spieler authentifizieren oder das Hauptkonto erstellen.
    2. Nach erfolgreicher Authentifizierung in der Anwendung erhält der Spieler einen alphanumerischen Code zum Verknüpfen der Konten.
  4. Der Spieler kehrt zur Konsolenversion des Spiels zurück und gibt den Code ein.
  5. Das Hauptkonto wird mit dem Plattformkonto verknüpft und die Spielkonsole zeigt eine Nachricht als Bestätigung an.
  6. Das Spielerinventar auf der Plattform wird mit dem Inventar, welches mit dem Hauptkonto verknüpft ist, synchronisiert.

Note
Premiumwährung (d. h gegen echtes Geld erworbene Währung) wird in den Inventaren nicht synchronisiert. Gemäß den Vorschriften der Konsolenplattformen ist die über PlayStation, Xbox und Nintendo Switch gekaufte Premiumwährung nicht stapelbar und wird separat gespeichert.
Notice
Sobald die Konten verknüpft sind, kann die Verknüpfung nicht mehr getrennt werden. Sollte der Benutzer beim erstmaligen Start des Spiels das Verknüpfen des Kontos ablehnen, kann er das Konto auch in Zukunft nicht verknüpfen.

Für wen ist es

Spieleentwickler, die ihr Spiel auf mehreren Plattform veröffentlichen wollen und eine treue Gamer-Community aufbauen möchten, indem sie den Spielern auf jeder Plattform Zugang zu ihren Käufen und Belohnungen gewähren.

Note
Die Lösung kann nur vor dem Release des Spiels auf einer zweiten Publishing-Plattform verknüpft werden. Wenn das Spiel beispielsweise für den PC veröffentlicht wurde und für PlayStation veröffentlicht werden soll, müssen Sie das plattformübergreifende Inventar vor dem Release auf der PlayStation verknüpfen.

Wie komme ich dazu

So verknüpfen Sie ein plattformübergreifendes Inventar:

  1. Verknüpfen Sie Spielerinventar. Implementieren Sie die Basisauthentifizierung für die Zusammenarbeit mit den Servermethoden und die auf dem OAuth 2.0-Protokoll basierende Xsolla-Login-Authentifizierung für die Zusammenarbeit mit den Client-Methoden. Die auf dem OAuth 2.0-Protokoll basierende Authentifizierung ist außerdem für den Zugriff auf die Login API-Methoden und die Implementierung der Methoden zur Kontoverknüpfung erforderlich.
  2. Implementieren Sie die Benutzeroberfläche für die Kontoverknüpfung, inklusive folgendem:
    1. Spielserverbasierte Authentifizierung und Inventarverwaltung
    2. Spiel-Client-basierte Authentifizierung und Inventarverwaltung
    3. Methoden zur Kontoverknüpfung

Note
Wenn Sie bereits die Kontosynchronisierung aufseiten des Spielservers integriert haben, ist die Einrichtung von Spielerinventar für die Synchronisierung des Benutzerinventars ausreichend.

Benutzeroberfläche für die Kontoverknüpfung

Die Benutzeroberfläche für die Kontoverknüpfung sollte folgendes bieten:

  • Möglichkeit, eine Nachricht anzuzeigen, in der angeboten wird, ein Plattformkonto mit dem Hauptkonto zu verknüpfen
  • Möglichkeit, die Verknüpfung der Konten zu akzeptieren oder abzulehnen
  • Möglichkeit, den Code für die Verknüpfung der Konten zu senden, wenn der Benutzer der Verknüpfung zustimmt
  • Möglichkeit, die URL in der zum Verknüpfen der Konten genutzten Mobilgeräte-App oder Web-Anwendung anzuzeigen

Der Mechanismus zur Authentifizierung von Benutzern im Hauptkonto ist folgender:

  1. Integrieren Sie das Login-Widget in die App.
  2. Wenn sich der Benutzer über das Widget authentifiziert, wird ein JWT an die App übermittelt. Implementieren Sie die Möglichkeit, einen JWT aus der App an die Methode zum Abrufen des Verknüpfungscode zu übermitteln und den Code in der App-Benutzeroberfläche anzuzeigen.
  3. Implementieren Sie die Authentifizierung über JWT aufseiten des Spielservers.
  4. Implementieren Sie die Übermittlung eines Tokens, user_id auf der Konsolenplattform sowie die Übermittlung der Plattform-ID an die Methode zur Verknüpfung mit dem Hauptkonto, wenn der Benutzer die Konsolenversion des Spiels eingibt und den Code zum Verknüpfen der Konten sendet.

Note
Wenn Sie die bestehenden Konten in den Xsolla-Speicher exportieren möchten, wenden Sie sich an den Account Manager Ihres Projekts oder senden Sie uns eine E-Mail an am@xsolla.com.

Authentifizierung auf dem Spielserver

Um auf die Login API-Methoden für das Verwalten des Spielerinventars auf dem Spielserver zugreifen zu können, müssen Sie die OAuth 2.0-Authentifizierung einrichten und einen Serverzugriffstoken abrufen.

Note
Wenden Sie sich zum Abrufen von client_id und client_secret an den Account Manager Ihres Projekts oder senden Sie uns eine E-Mail an am@xsolla.com.

Anfrage

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

Antwort

Copy
Full screen
Small screen
{
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",           
    "token_type":"bearer",
    "expires_in":3600,
    "scope": ""
}

Verwaltung des Spielerinventars auf dem Spielserver

Zu den Methoden für die Inventarverwaltung zählen folgende Servermethoden:

Eine Übermittlung der user_id des Benutzers auf der Plattform und eine Übermittlung der Plattform-ID an diese Methoden ist zwingend erforderlich.

Authentifizierung auf dem Spiel-Client

Implementieren Sie die API-Methode Auth by custom ID, um das Spielerinventar im Spiel-Client zu verwalten. Übermitteln Sie die folgenden Parameter in der Anfrage:

  • server_custom_id — individuelle Benutzerkennung im Spiel
  • social_profile->user_id — individuelle Benutzerkennung auf der Plattform

Anfrage

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

Antwort

Copy
Full screen
Small screen
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
}

Note
Sie können außerdem die Methode User tokenization zum Abrufen eines JWT nutzen.

Verwaltung des Spielerinventars im Spiel-Client

Zu den Methoden für die Inventarverwaltung zählen folgende Client-Methoden:

So verwalten Sie das Spielerinventar auf Konsolenplattformen:

  1. Implementieren Sie die Übermittlung der Plattform-ID an die Client-Methoden, um Premiumwährungsguthaben auf den Konsolen-Publishing-Plattformen gemäß den Bestimmungen der Konsolenplattformen zu speichern.
  2. Implementieren Sie folgende Schritte auf dem Spielserver, um das Inventar des Benutzers im Konsolen-Client zu verwalten:
    1. Das Spiel empfängt einen Serverzugriffstoken für die Benutzertokenisierung.
    2. Das Spiel empfängt JWT durch die user_id des Benutzers auf der Plattform sowie die Plattform-ID.
    3. Das Spiel übermittelt JWT an die angegebenen Client-Methoden.

Methoden zur Kontoverknüpfung

Verknüpfungscode abrufen

Implementieren Sie die API-Methode Create code for linking accounts, um den Verknüpfungscode abzurufen und an den Benutzer zu übermitteln.

Anfrage

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

Antwort

Copy
Full screen
Small screen
{
  "code": "123456"
}

Verknüpfung mit dem Hauptkonto

Implementieren Sie die API-Methode Link accounts by code. Dabei gelten folgende Entsprechungen:

  • code – Verknüpfungscode
  • publisher_project_id – Projekt-ID aus dem Kundenportal
  • user_id – Benutzerkennung auf der Plattform

Sie müssen vor dem Aufrufen der Methode die folgenden Schritte abschließen:

  1. Implementieren Sie die Benutzeroberfläche für die Anzeige des Kontoverknüpfungscodes und des Formulars zur Eingabe des erhaltenen Codes.
  2. Implementieren Sie die Methode zum Abrufen eines Serverzugriffstokens.
  3. Implementieren Sie die Methode zum Abrufen des Verknüpfungscodes.

Note
Sie können außerdem die API-Methode Connect game account to Xsolla verwenden, um das Plattformkonto mit dem Hauptkonto zu verknüpfen.

Anfrage

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

Antwort

Copy
Full screen
Small screen
204 OK

Plattformliste

PlattformPlattform-IDAnmerkung
PlayStation Networkplaystation_network-
XBox Livexbox_live-
PC, Standalonepc_standalone-
Nintendo eShopnintendo_shop-
Google Playgoogle_play-
Apple Storeapp_store_ios-
Android, Standaloneandroid_standaloneDas Spiel wird außerhalb der Online-Shops separat veröffentlicht.
iOS, Standaloneios_standaloneDas Spiel wird außerhalb der Online-Shops separat veröffentlicht.
Android, sonstigeandroid_otherDas Spiel wird in einem alternativen Online-Shop auf PlayMarket veröffentlicht.
iOS, sonstigeios_otherDas Spiel wird in einem alternativen Online-Shop im AppStore veröffentlicht.
PC, sonstigepc_other-
Xsollaxsolla-
War dieser Artikel hilfreich?
Vielen Dank!
Gibt es etwas, das wir verbessern können? Nachricht
Das tut uns leid
Bitte erläutern Sie, weshalb dieser Artikel nicht hilfreich ist. Nachricht
Vielen Dank für Ihr Feedback!
Wir werden Ihr Feedback aufgreifen und dazu nutzen, Ihr Erlebnis verbessern.