Account-System mit PlayFab

Gefällt Dir der Artikel? Dann teile ihn doch, um diese Informationen auch anderen zugänglich zu machen!

Seiteninhalt

In dieser Videoreihe zeige ich dir wie du in dein Spiel Benutzerkonten integrieren kannst. Du lernst also wie sich deine User Registrieren und Anmelden können, wie du Informationen aus den einzelnen Accounts ausliest, eine Rangliste erstellst und das Inventar mit Gegenständen und einer InGame Währung verwaltest. Also los gehts.

Wie geht das in Unity überhaupt?

Zu Beginn stellt sich die Frage ob wir das alles selbst programmieren sollen, also über einen eigenen Server beispielsweise per MySQL oder auf einen Dienst zurückzugreifen der genau dies Funktionen in Form einer Cloud anbietet. Persönliche empfehle ich dir erst einmal auf einen Dienst zurückzugreifen, denn sonst musst du alles selbst programmieren und das ist nicht nur zeitaufwendig sondern bringt auch viele Hürden mit sich. Zwei der bekanntesten Dienste sind PlayFab und Gamesparks. In dieser Videoreihe werde ich dir PlayFab zeigen, da es sich sehr gut mit der Multiplayer-Erweiterung verknüpfen lässt.

Der „essentials“-Plan von PlayFab ist vollkommen kostenfrei. Dieser reicht eigentlich auch für das was wir vorhaben. Einen genauen Vergleich findest du unter: https://playfab.com/pricing/#plan-essentials-desktop

Erstelle dir zuerst ein eigenes Benutzerkonto bei PlayFab über den Sign-Up-Button.

Vervollständige deine Daten und erstelle dir über den Button ein Studio. Deinem Studio werden dann all deine PlayFab Projekte zugeordnet. Bedeutet also, dass du dir für jedes Projekt in das du PlayFab integrieren möchtest einen Titel innerhalb des Studios erstellst. Klicke dazu auf das Zahnrad bei deinem Studio und auf “New Title”. Okay, der neue Titel ist angelegt und jetzt befindest du dich auf dem Dashboard deines Titels innerhalb des Studios. Hier findest du alle Informationen über dein Projekt und kannst auch deine User verwalten. Im nächsten Abschnitt zeige ich dir wie du PlayFab für Unity installieren kannst.

PlayFab in Unity installieren

In diesem Abschnitt integrieren wir PlayFab in Unity und verlinken das Unity-Projekt mit dem PlayFab Titel. Lade dir zuerst die PlayFab Editor Extension herunter. Du findest diese unter: https://api.playfab.com/sdks/unity

Klicke auf Download Editor Extension und schon hast du auf deinem Computer die Erweiterung in Form eines unitypackages. Diese Datei ziehst du jetzt in dein Unity Projekt. Wichtig, solltest du ein bestehendes Projekt haben, dann überprüfe ob du dein Projekt auch gesichert hast. Mit dem Importieren von Erweiterungen kann es nämlich ab und an zu crashes kommen, es ist also sinnvoll wenn du dein Projekt zusätzlich noch sicherst.

Sobald die Erweiterung in dein Projekt importiert ist, erhältst du ein neues Fenster angezeigt. Sollte es bei dir nicht zu finden sein, dann klicke in der Menüleiste auf Window > PlayFab > Editor Extension.

Der Willkommensbildschirm ermöglicht dir das Erstellen eines neuen Kontos. Da wir im letzten Video bereits ein Konto erstellt haben klicken wir direkt auf Log In. Melde dich mit deinen Daten an und bestätige über den Log In Button. Jetzt erscheint die Meldung, dass das PlayFab Software Development Kit noch nicht installiert ist. Das kannst du auch gleich einmal machen, klicke auf den Button Install PlayFab SDK. Nach der Installation erhälst du einen Hinweis mit der aktuellen Version, die Einrichtung ist noch nicht komplett fertig, denn bisher hast du nur dein Benutzerkonto hinterlegt, aber noch keinen Projekt-Titel. In der letzten Folge hast du dir ja schon einen Titel angelegt innerhalb des PlayFab Dashboards. Klicke in der EditorExtension auf Set My Title.

Selektiere das Studio und den Titel. Damit ist die Konfiguration abgeschlossen und dein Unity Projekt ist nun mit deinem PlayFab Projekt verbunden. Alle Anmeldungen und Zugriffe auf PlayFab in diesem Unity Projekt werden dir dann auf deinem PlayFab Dashboard angezeigt. Im nächsten Abschnitt starten wir dann mit der ersten Anfrage an den Server und kommen damit der Registrierung unserer Spieler immer näher.

Deine erste Anfrage an PlayFab

Nachdem du nun dein Unity Projekt mit PlayFab verlinkt hast, wirst du jetzt lernen wie du eine Anfrage an den PlayFab Server stellen kannst. Dazu ist es wichtig, dass du erst einmal verstehst wie dein Unity Projekt mit dem PlayFab Server kommunizieren kann. Die Lösung hier ist eine API – Application Programming Interface, also eine Programmierschnittstelle.

Es gibt also spezifische Befehle über diese kannst du sowohl Daten an den Server von PlayFab senden als auch holen. Lege dir hierfür ein neues C#-Skript an, ich nenne dies PlayFabLoginScript und öffne es auch direkt in deinem Code-Editor. Nun erstellst du innerhalb der Start-Methode deinen API Request an den PlayFab Server. An der Autovervollständigung erkennst du, dass die einzelnen PlayFab-Methoden nicht erkannt werden.

Dies liegt daran weil der Namespace noch nicht importiert wurde. Klicke mit der auf die Glühbirne um das Problem zu beheben und importiere dadurch den Namespace PlayFab.ClientModels und PlayFab

				
					using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using PlayFab.ClientModels;
using PlayFab;

public class PlayFabScript : MonoBehaviour {

   // Use this for initialization
   void Start () {

        var request = new LoginWithCustomIDRequest { CustomId = "GettingStartedGuide" };
        PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure);
    }

    private void OnLoginSuccess(LoginResult result)
    {
        Debug.Log("Congratulations, you made your first successful API call!");
    }

    private void OnLoginFailure(PlayFabError error)
    {
        Debug.LogWarning("Something went wrong with your first API call.  :(");
    }

}
				
			

Anfragen an die API benötigen zumeist Übergabeparameter, denn der Server muss ja auch wissen welche Daten verarbeitet werden sollen. Welche Parameter das genau sind zeigt dir die Autovervollständigung. In unserem Beispiel mit der Methode LoginWithCustomID müssen drei Parameter übergeben werden: request, callback für Erfolg, callback.für Fehler. Heißt also du übergibst hier die Daten aus deinem LoginWithCustomIDRequest-Objekt und legst zwei neue Callback-Methoden an. Eine dieser beiden Methoden wird dann in Abhängigkeit zu den Daten die wir vom Server zurückbekommen aufgerufen. Es ist also sinnvoll, dass du in diesen Callback-Methoden auch immer etwas stehen hast, also eine Ausgabe für dich auf der Konsole um festzustellen was im Hintergrund denn überhaupt genau passiert ist.

Die Callback-Methode für den erfolgreichen Aufruf erhalten wir ein Ergebnis zurück, da wir hier eine Login-Methode verwenden bekommen wir ein Objekt der Klasse LoginResult zurück.Schlägt das ganze fehl, so wird uns ein Objekt der Klasse PlayFabError zurückgegeben.

Super, damit hast du deinen ersten API-Request, die erste Anfrage an den PlayFab Server in Form eines C#-Skripts. Teste dies doch gleich einmal. Dazu selektierst du dein Skript und ziehst es auf ein aktives game object in deiner Szene. Da sich unser Code für den API Request in der Start() Methode befindet wird diese auch gleich zum Start des Projekt, also sobald du auf den Play-Button drückst aufgerufen. Überprüfe danach gleich deine Unity-Konsole welche Ausgabe du erhalten hast. Bei mir steht jetzt hier, dass es funktioniert hat. Sollte das bei dir nicht der Fall sein, dann überprüfe noch einmal deine Konfiguration in der PlayFab EditorExtension bezüglich dem Studio und dem Titel.

Soviel also zu deiner ersten Anfrage an den PlayFab-Server aus Unity. Im nächsten Abschnitt legen wir uns ein Skript an damit sich Spieler auf dem Server registrieren können.

Registrierung von Spielern programmieren

Willkommen zurück. Da du nun erfolgreich deine erste Anfrage an den PlayFab-Server getätigt hast, kannst du einen Schritt weiter gehen und dich um die Logik für die Registrierung von Spielern kümmern. Das Ziel in diesem Video ist es, dass du verstehst wie du per Skript einen Benutzer erstellst und diesen dann auch im Dashboard dir anzeigen lassen kannst.

Erstelle dir dazu in deinem Skript eine neue Methode für die Registrierung deiner Nutzer. Innerhalb der neu angelegten Methoden erstellst du dir einen neuen Request, dieser wird dann wie schon in der letzten Folge gezeigt, per API-Request an den PlayFab-Server übergeben. Welche Klasse musst du hierfür aber jetzt verwenden? Schauen uns dazu doch die Client API von PlayFab genauer an. Unter dem Buchstaben R findest du eine Klasse die heißt RegisterPlayFabUser.

Das hört sich doch zuversichtlich an und könnte genau das von uns gesuchte sein. Also zurück in dein Skript und in die Register-Methode. Hier schreibst du nun:

				
					public void Register() 
{ 
  var request = new RegisterPlayFabUserRequest() 
  { 
    TitleId = PlayFabSettings.TitleId, 
    RequireBothUsernameAndEmail = false, 
    Email = "michael.mark@gmx.net", 
    Username = "michael", 
    Password = "123456" 
  }; 
}
				
			

Damit die neue Klasse erstellt werden kann benötigst du ein paar Informationen. TitleId, RequireBothUsernameAndEmail, email, username, password. Danach kannst du die angelegte Variable request, die auf dein RegisterPlayFabUserRequest verlinkt per API übergeben. Schreibe hierzu:

PlayFabClientAPI.RegisterPlayFabUser (request, OnRegisterResult, OnPlayFabError); }

Auch hier benötigst du wieder einen Callback-Methode für Result und für Error.

Das hätten wir schon einmal. Nun musst du die neue Methode Register in deinem Skript noch aufrufen, denn derzeit hätten die Änderungen keinen Einfluss auf dein Projekt. Eine Oberfläche habe ich noch nicht, daher lege ich jetzt einen Button über die Hierarchie UI > Button an. Dieser Button soll der Auslöser für das Register sein. Natürlich werden wir später nicht einfach die Daten eines Spielers in unserem Skript haben. Um die Registrierung eines Spielers aber zu testen ist dieses Vorgehen durchaus sinnvoll. Achte also darauf, dass deine Register-Methode den Modifier public trägt und verlinke das Skript bzw. die Methode Register() mit der OnClick-Funktion deines Buttons.

Starte nun dein Projekt über den Play-Button in Unity und betätige den Button. Überprüfe deine Konsole, was wird nun ausgegeben? Wie du siehst zeigt es bei mir das Ergebnis der Anfrage an. Durch die Anfrage im Skript hast du jetzt einen neuen Benutzer auf dem Pla