I need help understanding the intended use cases for Lobby, Party and Entity Groups features. There seems to be some overlap between them. What are the main differences? Where should we use which one?
PlayFab Lobby is a service to create a temporary grouping mechanism for players to play games together. You can create a lobby and invite your friends to join, then you can matchmaking together. The Entity groups can simultaneously serve many purposes within your game. It can be utilized by your game to create guild and clan (which can be long-standing) interactions within your game. For more detail, you can refer to Entity groups Examples. Azure PlayFab Party is a low-latency chat and data communication solution for cross-platform and cross-device multiplayer games. You can refer to Party Features for more detail. Please note that, if you want to use Party, you need to download Playfab Party SDKs first. You can choose to use them depending on the specific functionality you want to implement.
Since entity groups can serve many purposes, why should I use Lobby?
Fundamentally, entity groups have been created as a solution for guilds. And the Lobby is used to create a temporary grouping mechanism for players to play games together. It is used seamlessly with PlayFab LiveOps and backend services. This includes PlayFab Matchmaking, PlayFab Multiplayer Servers. You can refer to Use Lobby and Matchmaking Together for more detail. So, the Lobby is more suitable for temporary grouping mechanism than entity groups.
Also, doesn't Lobby also support chat through realtime messaging?
If you mean the real-time notifications, it doesn't provide chat function. When there are updates to Matchmaking or Lobby resources in the cloud, the client SDK will forward notifications in real-time to all connected clients subscribed to those resources. For more detail, please refer to Lobby and Matchmaking real-time notifications.
I'm pretty sure most games require chat in their lobbies. And if Lobby does support chat, what's the purpose of Party then?
Currently, PlayFab Lobby doesn't Provide such function. Therefore, you can use PlayFab Lobby with Party together. And party not only includes chat functions, it can also be used for data communication and other functions.
Then what about something like sending data for changes to a lobby member's in-game character, for example? They equip a new weapon or skill or skin and the other players in lobby should see this. Is it intended to use Party SDK for this purpose?
You can use the API UpdateLobby(modify MemberData)to complete it. Other players in lobby can use GetLobby to see the change. And the Multiplayer SDK has real-time notifications to let players know the lobby changes. When the event PlayFabMultiplayer.OnLobbyUpdated is raised, they can use Lobby.GetMemberProperties to check the change in member. Also, you can use PlayFab Party to tell other players that something has changed.
I also see that in "Update Lobby" there are properties for "member data." Is this intended to be called by lobby owner only or does it support being called by multiple member entities? (As in, every member updating their own member data simultaneously)
The MemberData can only be updated by its owner. The lobby owner can't modify other players' MemberData. The members can update their own MemberData simultaneously. Also, when players are ready to join the lobby via API JoinLobby, they can already modify their MemberData.
30 People are following this question.