Group Up
Recommended client-safe group matchmaking flow for parties
Edgegap Matchmaker is in active development with frequent updates. For the latest configuration examples, group lifecycle details, and API changes, see the official Edgegap Matchmaking docs and Group Up guide.
Why Group Up
Group Up ensures friends join the same team and server. It replaces legacy ticket and group-ticket flows with a cleaner party/member readiness model.
- Leader creates a group, shares the
GroupIdwith friends through a lobby, invite, or platform party. - Members join using the
GroupId. - Once everyone marks ready, matchmaking starts automatically.
- All members receive the same server assignment.
Step 1 - Leader Creates Group
- Call
CreateGroupwithProfile,Attributes(beacon latencies, game preferences),PlayerIp, andbIsReady = false. - From
OnSuccess, saveGroupIdandMemberIdfrom the response. - Share the
GroupIdwith party members through your lobby system.
Step 2 - Members Join And Ready Up
- Each member calls
CreateGroupMemberwith theGroupId, their ownProfile,Attributes,PlayerIp, andbIsReady = false. - When ready, each player, including the leader, calls
UpdateGroupMemberwithbIsReady = true. - Matchmaking starts automatically once all members are ready.
Once matchmaking starts, no one can join the group. If you need to add someone, the leader must DeleteGroup, create a new one, and have everyone rejoin.
Group size is validated against your profile's max_team_size. New members will be rejected if the group is already full.
Step 3 - Poll For Assignment And Connect
- All members poll
GetGroupMemberwith theirGroupIdandMemberIdevery 3-5 seconds. - Check
Assignment.IsNullOrEmpty. When it isfalse, the server is ready. - Break the
AssignmentStructforFQDNandGamePort.Externalto build the connect address. - Connect immediately with
open {FQDN}:{ExternalPort}.
Save GroupId and MemberId persistently (e.g. SaveGame). If the game crashes mid-queue, players can resume polling without losing their spot.
Cancel Queue
- Leader calls
DeleteGroupto cancel matchmaking for everyone. All members getCANCELLEDstatus. - Member calls
DeleteGroupMemberto leave the group. If matchmaking already started, this cancels the whole group. - After
HOST_ASSIGNED, the group can't be deleted (409 Conflict). It is cleaned up automatically.
C++ Example (Leader)
#include "GroupUp/EGIK_CreateGroup.h"
FEGIK_CreateGroupRequest Req;
Req.Profile = TEXT("ranked-2v2");
Req.Attributes = TEXT("{\"beacons\":{\"Montreal\":15.2}}");
Req.bIsReady = false;
// Req.MatchmakingURL/AuthToken optional; leave empty to use plugin settings.
auto* Node = UEGIK_CreateGroup::CreateGroup(Req);
Node->OnSuccess.AddDynamic(this, &UMySubsystem::OnGroupCreated);
Node->Activate();C++ Example (Ready Toggle)
#include "GroupUp/EGIK_UpdateGroupMember.h"
FEGIK_UpdateGroupMemberRequest Req;
Req.GroupId = GroupId;
Req.MemberId = MemberId;
Req.bIsReady = true;
auto* Node = UEGIK_UpdateGroupMember::UpdateGroupMember(Req);
Node->OnSuccess.AddDynamic(this, &UMySubsystem::OnMemberUpdated);
Node->Activate();Notes
- URL/token fields are optional per request; empty means plugin settings/environment fallback.
- Group member status follows the matchmaker lifecycle:
SEARCHING,TEAM_FOUND,MATCH_FOUND, thenHOST_ASSIGNED. - Backfilling is a server-side operation using
CreateBackfill.