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 the legacy CreateGroupTicket with a cleaner party/member readiness model.
- Leader creates a group, shares the
GroupIdwith friends (via lobby, Discord, etc.) - 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 & Ready Up
- Each member calls
CreateGroupMemberwith theGroupId, their ownProfile,Attributes,PlayerIp, andbIsReady = false. - When ready, each player (including 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 & Connect
- All members poll
GetGroupMemberwith theirGroupIdandMemberIdevery 3-5 seconds. - Check
Assignment.IsNullOrEmpty— whenfalse, the server is ready. - Break the
AssignmentStructforFQDNandGamePort.Externalto build the connect address. - Connect immediately —
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
DeleteGroup— cancels matchmaking for everyone, all members getCANCELLEDstatus. - Member calls
DeleteGroupMember— leaves the group. If matchmaking already started, this cancels the whole group. - After
HOST_ASSIGNED, the group can't be deleted (409 Conflict). It's 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.
- The same ticket status flow applies: SEARCHING → TEAM_FOUND → MATCH_FOUND → HOST_ASSIGNED.
- For backfilling (replacing leavers mid-match), see the Backfill nodes — this is a server-side operation using
CreateBackfill.