友達リスト

友達リストは、プレイヤーの socialize を向上させるのに最適な機能です。 操作は簡単です。また、スコアボードをより魅力的なものにすることができます。

前提条件

SDK: Unity

  • タイトル ID は、 PlayFabSharedSettingsオブジェクトに設定されます。
  • プロジェクトでは、ユーザーを正常にログインできます。
  • タイトルには、少なくとも2つの登録済みユーザーが含まれています。

友達について

タイトル内のプレイヤーは、タイトル内の他のプレイヤーとの友人になっている可能性があります。 特に、PlayFab での友人としては、一方向の道があります。

Albertによってボブが友達として追加された場合、 bobの承認プロセスはありません。 実際、 Bobは気付かない場合があります。

ボブは、 Albert相互に友人を追加する必要があります。 Reciprocity のルールを設定する必要がある場合は、必要に応じて、カスタムゲームサーバーまたは CloudScript ロジックを使用してこれらの条件を適用する必要があります。

プレイヤーが蒸気、Facebook、または Xbox Live アカウントにリンクしている場合は、それらのメンバーもタイトルを再生している場合は、そのプラットフォーム固有の友達も表示できます。

友達を作る

このコード例では、 DisplayFriends()関数とDisplayError(string error) 、アプリの UI のプロキシとして使用しています。 これらをエディターに貼り付けると、余分な作業がなくても動作します。または、独自のコードを使って通話を置き換えることができます。

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. プレイヤーがログインすると、お友達の UI にアクセスできます。 通常、この機能には、少なくとも友達の追加、削除、表示が含まれます。
  2. プレイヤーの現在のフレンドリストを取得するには、 GetFriendsList API の呼び出しを使います。
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);
}

GetFriendsListの結果には、 FriendInfoオブジェクトの一覧である、"友人" というパラメーターが含まれています。

  1. プレイヤーのフレンドリストに友達を追加するには、 addfriend API の呼び出しを使います。
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. プレイヤーの友達リストからプレイヤーを削除するには、 RemoveFriend API 通話を使用します。
// 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);
}

さらに詳しい情報

他にも、追加、削除、表示以外の操作を行うことができます。

友達へのタグ付け

GetFriendsListから取得したFriendInfoオブジェクトには、友人のタグの一覧が含まれます。 リストを更新する場合は、このリストから追加して削除し、次に示すように API 呼び出しに含めます。

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

タグを使用してマッチメイキングに通知することができます (たとえば、プレーヤーが "友人のタグ付き2tuffを使っていません")。友人グループを実装したり、必要なリレーションシップに関連付けられたメタデータを保存したりすることができます。

重要な注意点は、現在、PlayFab では、これらのタグのインデックスが作成されていないことを意味します。 GetFriendsListは、ローカルで実行する必要があるため、それらに基づいてフィルター処理することはできません。

このシステムのパフォーマンスへの影響を考慮するときは、この点に注意してください。