Friends

Overview

The Friends service allows players to connect socially with other players. This service uses WebSocket to ensure all players get real-time updates about their Friend List. Players can manage their friends in several different ways, including:

  • Request Friend allows players to add another player as a friend using that player’s User ID. Players will be notified when they receive a friend request.
  • Accept Friend Request allows players to accept friend requests they’ve received. After the player accepts the request, the requester will be notified and the two players will be linked as friends.
  • Reject Friend Request allows players to deny a friend request from a player they don’t want to be friends with.
  • Cancel Friend Request allows players to cancel and remove a pending friend request they have sent to another player, in case they have changed their mind or sent the request to the wrong player.
  • Get Friendship Status shows players their friendship status with another player. Possible statuses include:
    • Not Friend indicates that the players are not connected as friends.
    • Outgoing Friend indicates that the friend request sent by the player to another player is still pending.
    • Incoming Friend indicates that the player has received a friend request that is still pending.
    • Friend indicates that the two players are connected as friends.
  • List of Friends shows the player all of the players they’re currently friends with.
  • List of Incoming Friends shows the player a list of players that have requested to be their friend. Players can accept or reject these requests.
  • List of Outgoing Friends shows players the list of pending friend requests they have sent to other players.
  • Unfriend allows players to stop being friends with other players. Unfriending a player will remove that player from their friend list. If the player wants to be friends with an unfriended player, they will have to send that player another friend request.
  • Bulk Synchronization 3rd Party Platform Friends allows players to connect player’s friends from third party platforms to the AccelByte IAM service.

How It Works

Bulk Synchronization 3rd Party Platform Friends

Bulk Synchronization 3rd Party Platform Friends is a process to connect player’s friends from third party platforms to the AccelByte IAM service. The recommended implementation for this feature is:

  • The process should work in the background.
  • The process can be triggered automatically every time the game starts or manually by the interaction between player and the game client.
  • The game UI only displays a list of friends using the AccelByte Friends service.

Players can connect their friends from several third party platforms which are Steam and Xbox. To see how Bulk Synchronization 3rd Party Platform works under each third party platform and how to implement the SDK, you can read from the description below.

Steam

The diagram below gives a basic overview of how the Bulk Sync 3rd Party Platform for Steam works:

friends

  1. The game client requests the total number of the player’s friends at Steam by sending the GetFriendCount call to Steam.
  2. After receiving the total number of the player’s friends, the game client sends the GetFriendByIndex call to Steam to get the list of player’s friends Steam ID.
  3. The game client sends the BulkGetUserByPlatformUserId call to the AccelByte IAM service to get the list of Steam’s friends user ID from the AccelByte IAM service.
  4. Steam’s friends user ID from the AccelByte IAM service will be added to the friend list. To do so, the game client sends the BulkFriendRequest call to the AccelByte Friends service. Friends will be automatically added without confirmation needed.

Xbox

The diagram below gives a basic overview of how the Bulk Sync 3rd Party Platform for Xbox works:

friends

  1. The game client sends the GetSocialRelationshipsAsync() call to Xbox and gets the list of people that the player is having a relationship with on the Xbox.
  2. Once the list of people that the player is having a relationship with on the Xbox is received, the game client sends the BulkGetUserByPlatformUserId call to the AccelByte IAM service to get the list of Xbox’s friends user ID from the AccelByte IAM service.
  3. Xbox’s friends user ID from the AccelByte IAM service will be added to the friend list. To do so, the game client sends the BulkFriendRequest call to the AccelByte Friends service. Friends will be automatically added without confirmation needed.

Tutorials

Search for a Player

You can search for a player’s account information using their Email Address or Display Name as the query. Please refer to the Search User endpoint.

string query = "YourFriendsEmailAddressOrDisplayName";
AccelBytePlugin.GetUser().SearchUsers(query, result =>
{
if (result.IsError)
{
Debug.Log(string.Format("Failed to search user: error code: {0} message: {1}", result.Error.Code, result.Error.Message));
}
else
{
PagedPublicUsersInfo pagedPublicUsers = result.Value;
foreach (var userInfo in pagedPublicUsers.data)
{
Debug.LogFormat("Get User, email: {0}, displayName: {1}, userId: {2}", userInfo.emailAddress, userInfo.displayName, userInfo.userId);
}
}
});

Friend Interactions

Send a Friend Request

The first step in making a friend is to send a friend request to another player.

AccelBytePlugin.GetLobby().Connect();
AccelBytePlugin.GetLobby().RequestFriend(userId, result =>
{
if (result.IsError)
{
Debug.LogFormat("Failed to send a friend request: error code: {0} message: {1}", result.Error.Code, result.Error.Message);
}
else
{
Debug.Log("Successfully send a friend request");
}
});

Accepting and Rejecting Friend Requests

After a friend request has been sent, the player who received the request can either accept or reject it.

AccelBytePlugin.GetLobby().AcceptFriend(userId, result =>
{
if (result.IsError)
{
Debug.LogFormat("Failed to accept a friend request: error code: {0} message: {1}", result.Error.Code, result.Error.Message);
}
else
{
Debug.Log("Successfully accept a friend request");
}
});
AccelBytePlugin.GetLobby().RejectFriend(userId, result =>
{
if (result.IsError)
{
Debug.LogFormat("Failed to reject a friend request: error code: {0} message: {1}", result.Error.Code, result.Error.Message);
}
else
{
Debug.Log("Successfully reject a friend request");
}
});

Retrieve the Friend List

Players can see a list of all of their friends.

AccelBytePlugin.GetLobby().LoadFriendsList(result =>
{
if (result.IsError)
{
Debug.LogFormat("cannot retrieve friend list: error code: {0} message: {1}", result.Error.Code, result.Error.Message);
}
else
{
foreach (var userId in result.Value.friendsId)
{
Debug.LogFormat("Friend userId = {0}", userId);
}
}
});

Retrieve the List of Incoming Friend Requests

Players can see who has sent them friend requests.

AccelBytePlugin.GetLobby().ListIncomingFriends(result =>
{
if (result.IsError)
{
Debug.LogFormat("cannot retrieve list of incoming friend request: error code: {0} message: {1}", result.Error.Code, result.Error.Message);
}
else
{
foreach (var userId in result.Value.friendsId)
{
Debug.LogFormat("Friend userId = {0}", userId);
}
}
});

Retrieve the List of Outgoing Friend Requests

Players can see a list of friend requests they have sent that are still pending.

AccelBytePlugin.GetLobby().ListOutgoingFriends(result =>
{
if (result.IsError)
{
Debug.LogFormat("cannot retrieve list of ongoing/pending friend request: error code: {0} message: {1}", result.Error.Code, result.Error.Message);
}
else
{
foreach (var userId in result.Value.friendsId)
{
Debug.LogFormat("Friend userId = {0}", userId);
}
}
});

Unfriend

Players can remove another player from their friend list.

AccelBytePlugin.GetLobby().Unfriend(userId, result =>
{
if (result.IsError)
{
Debug.LogFormat("failed to unfriend a friend: error code: {0} message: {1}", result.Error.Code, result.Error.Message);
}
else
{
Debug.Log("Successfully unfriend a friend!");
}
});

Bulk Synchronization 3rd Party Platform Implementation SDK

To add your players’ Steam or Xbox friends to your AccelByte friend list, you need to call user.BulkGetUserByOtherPlatformUserIds() and lobby.BulkRequestFriend() consecutively. To specify the platform, please replace the PlatformType with the platform name (Steam or Xbox).

var user = AccelBytePlugin.GetUser();
var lobby = AccelBytePlugin.GetLobby();
string[] friend3rdPtPlatformIds = { "123456789", "987654321" };
Result<BulkPlatformUserIdResponse> getOtherUserDataResult = null;
user.BulkGetUserByOtherPlatformUserIds(PlatformType.PlatformType, friend3rdPtPlatformIds, result =>
{
getOtherUserDataResult = result;
});
List<string> userIds = new List<string>();
foreach (var userData in getOtherUserDataResult.Value.userIdPlatforms)
{
userIds.Add(userData.userId);
}
lobby.BulkRequestFriend(userIds.ToArray(), result =>
{
if(result.IsError)
{
Debug.Log("Error. Code: " + result.Error.Code + ", Reason: " + result.Error.Message);
}
else
{
Debug.Log("Successfully adding friends!");
}
});

What’s Next?

  • Check out the API references for more information on how to implement the Friends service.
  • You can also read more about how to integrate a player account with 3rd party accounts on platforms such as Steam.