Freundeslisten

Freundeslisten sind ein großartiges Feature, um die Fähigkeit Ihrer Spieler zu verbessern, Kontakte zu knüpfen. Sie sind einfach zu bearbeiten und können Bestenlisten für Ihre Benutzer attraktiver machen.

Voraussetzungen

SDK: Unity

  • Die Titel-ID wird im PlayFabSharedSettings -Objekt festgelegt.
  • Das Projekt kann sich erfolgreich bei einem Benutzer anmelden.
  • Der Titel verfügt über mindestens zwei registrierte Benutzer.

Über Freunde

Jeder Spieler in Ihrem Titel kann mit jedem anderen Spieler in Ihrem Titel befreundet sein. Die Freundschaft auf PlayFab ist eine Einbahnstraße.

Wenn AlbertBob als Freund hinzufügt, gibt es keinen Genehmigungsprozess für Bob. Tatsächlich ist Bob möglicherweise nicht bewusst.

Bob muss Albert separat hinzufügen, damit die Freundschaft gegenseitig ist. Wenn Du Reziprozitätsregeln wünschen, liegt es in der Verantwortung deines Titels, diese Bedingungen ggf. mit einem benutzerdefinierten Spielserver oder einer CloudScript-Logik durchzusetzen.

Für den Fall, dass ein Spieler sein Steam-, Facebook- oder Xbox Live-Konto verknüpft hat, können auch seine plattformspezifischen Freunde angezeigt werden, wenn diese Freunde auch Ihren Titel spielen.

Freunde werden

Der Beispielcode verwendet die Funktionen DisplayFriends(), und DisplayError(string error) als Proxy der Benutzeroberfläche Ihrer App. Sie fügen diese in Ihren Editor ein, damit es ohne zusätzlichen Aufwand funktioniert , oder ersetzen Sie die Aufrufe durch Ihren eigenen Code.

void DisplayFriends(List<FriendInfo> friendsCache) { friendsCache.ForEach(f => Debug.Log(f.FriendPlayFabId)); }
void DisplayPlayFabError(PlayFabError error) { Debug.Log(error.GenerateErrorReport()); }
void DisplayError(string error) { Debug.LogError(error); }
  1. Sobald sich ein Spieler anmeldet, kann er auf die Benutzeroberfläche für Freunde zugreifen. Die Funktionalität umfasst in der Regel mindestens das Hinzufügen, Entfernen und Anzeigen von Freunden.
  2. Um die aktuelle Freundesliste des Spielers abzurufen, verwenden Sie den Api-Aufruf GetFriendsList .
List<FriendInfo> _friends = null;

void GetFriends() {
    PlayFabClientAPI.GetFriendsList(new GetFriendsListRequest {
        IncludeSteamFriends = false,
        IncludeFacebookFriends = false,
        XboxToken = null
    }, result => {
        _friends = result.Friends;
        DisplayFriends(_friends); // triggers your UI
    }, DisplayPlayFabError);
}

Das GetFriendsList-Ergebnis enthält einen Friends-Parameter, bei dem es sich um eine Liste von FriendInfo-Objekten handelt.

  1. Um einen Freund zur Freundesliste des Spielers hinzuzufügen, verwenden Sie den AddFriend-API-Aufruf.
enum FriendIdType { PlayFabId, Username, Email, DisplayName };

void AddFriend(FriendIdType idType, string friendId) {
    var request = new AddFriendRequest();
    switch (idType) {
        case FriendIdType.PlayFabId:
            request.FriendPlayFabId = friendId;
            break;
        case FriendIdType.Username:
            request.FriendUsername = friendId;
            break;
        case FriendIdType.Email:
            request.FriendEmail = friendId;
            break;
        case FriendIdType.DisplayName:
            request.FriendTitleDisplayName = friendId;
            break;
    }
    // Execute request and update friends when we are done
    PlayFabClientAPI.AddFriend(request, result => {
        Debug.Log("Friend added successfully!");
    }, DisplayPlayFabError);
}
  1. Um einen Spieler aus der Freundesliste eines Spielers zu entfernen, verwenden Sie den Api-Aufruf RemoveFriend .
// unlike AddFriend, RemoveFriend only takes a PlayFab ID
// you can get this from the FriendInfo object under FriendPlayFabId
void RemoveFriend(FriendInfo friendInfo) {
    PlayFabClientAPI.RemoveFriend(new RemoveFriendRequest {
        FriendPlayFabId = friendInfo.FriendPlayFabId
    }, result => {
        _friends.Remove(friendInfo);
    }, DisplayPlayFabError);
}

Weiter geht's

Es gibt noch andere Dinge, die Sie mit Freunden tun können, neben dem Hinzufügen, Entfernen und Anzeigen.

Markieren von Freunden

Das FriendInfo-Objekt , das aus GetFriendsList abgerufen wird, enthält eine Liste von Tags für den Freund. Wenn Sie die Liste aktualisieren, sollten Sie diese Liste hinzufügen und daraus entfernen und in den API-Aufruf einschließen (wie unten dargestellt).

// this REPLACES the list of tags on the server
// for updates, make sure this includes the original tag list
void SetFriendTags(FriendInfo friend, List<string> newTags)
{
    // update the tags with the edited list
    PlayFabClientAPI.SetFriendTags(new SetFriendTagsRequest
    {
        FriendPlayFabId = friend.FriendPlayFabId,
        Tags = newTags
    }, tagresult => {
        // Make sure to save new tags locally. That way you do not have to hard-update friendlist
        friend.Tags = newTags;
    }, DisplayPlayFabError);
}

Sie können Tags verwenden, um die Matchmaking zu informieren (z. B. möchte der Spieler nicht mit Freunden spielen, die mit 2tuff bei schwierigen Schwierigkeiten markiert sind), Freundesgruppen implementieren oder sie einfach verwenden, um alle Metadaten zu speichern, die einer benötigten Beziehung zugeordnet sind.

Ein wichtiger Hinweis ist, dass PlayFab diese Tags derzeit in keiner Weise indiziert. GetFriendsList kann nicht basierend auf ihnen filtern, sodass dies lokal erfolgen muss.

Beachten Sie dies, wenn Sie die Auswirkungen auf die Leistung berücksichtigen, die sich aus diesem System ergeben.