Skip to main content

Presence

Last updated on

Overview

AccelByte Cloud's Presence service enables players to see what other players are doing. Presence can show players if their friends are online or offline, and if they're available to play together. We use WebSocket to ensure that a player's presence status is updated in real-time. This service includes two main features:

  • Set User Presence allows clients to set a player's availability and activity. There are four availability status options: Offline, Available, Busy, and Invisible. Activity status is customizable and can include Playing a Game, In Lobby, In a Match, or In Party Looking For Members.

  • Get Friend Presence allows clients to show players what their friends are doing. Clients can display a player's availability and activity status to their friends, so that players can invite friends that aren't busy to play together.

If the service is successful, when a client sets a player's availability code and status, that status will be visible to that player's friends.

Implement Presence with the Client SDKs

Set Player Status

A player's presence can be set by a game. This function is how to update the status of the player that is going to change the status.

Availability Availability = Availability::Availabe;
FString Activity = FString("My New Activity");

FRegistry::Lobby.Connect();
FRegistry::Lobby.SendSetPresenceStatus(Availability, Activity);
}));

FString UserActivity = TEXT("Playing Game");
AccelByte::FRegistry::Lobby.SendSetPresenceStatus(Availability::Busy, UserActivity);

View a Friend's Status

This allows the player's friends to see when the player is online and what they are doing.

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetUserPresenceNotifDelegate(AccelByte::Api::Lobby::FFriendStatusNotif::CreateLambda([](const FAccelByteModelsUsersPresenceNotice& Result)
{
// Do something if UserPresenceNotifDelegate has been successful
}));

Retrieve a List of Friends' Statuses

Players can also see a list of all of their friends' statuses.

FRegistry::Lobby.Connect();
FRegistry::Lobby.SetGetOnlineFriendsPresenceResponseDelegate(AccelByte::Api::Lobby::FGetAllFriendsStatusResponse::CreateLambda([](const FAccelByteModelsGetOnlineUsersResponse& Result)
{
if (Result.Code == "0")
{
// Do something if GetOnlineFriendsPresenceResponseDelegate has been successful
}
else
{
// Do something if GetOnlineFriendsPresenceResponseDelegate has an error
}
}));

FRegistry::Lobby.SendGetOnlineFriendPresenceRequest();

Bulk Users' Presence

Retrieve player's presence information in bulk. This will also count the number of users based on their presence status, such as online, busy, invisible, or offline. You can also set the countOnly parameter to true to fetch the count without fetching the users' account data.

TArray<FString> UserIds = {FString("12345abcd"), FString("abcd12345")};
bool CountOnly = true;

FRegistry::Lobby.Connect();
FRegistry::Lobby.BulkGetUserPresence(UserIds, THandler<FAccelByteModelsBulkUserStatusNotif>::CreateLambda([](const FAccelByteModelsBulkUserStatusNotif& Result)
{
// Do something if BulkGetUserPresence has been successful
}), FErrorHandler::CreateLambda([](int32 ErrorCode, const FString& ErrorMessage)
{
// Do something if BulkGetUserPresence has an error
UE_LOG(LogTemp, Log, TEXT("Error BulkGetUserPresence, Error Code: %d Error Message: %s"), ErrorCode, *ErrorMessage);
}), CountOnly);
  • Check out the API references for more information on the Presence service.
  • Check out our Friend documentation to see how to add a new friend and check the visibility presence from the player's friend.
  • Check out our Chat documentation to see how to send a message to another player.
  • Check out our Party documentation to see how to invite friends or players that are already online into the game.
  • Read about our Player Portal and Launcher that can both be used to host your game.