Edgegap Integration KitBeta
v2.0
Matchmaking

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 GroupId with 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

  1. Call CreateGroup with Profile, Attributes (beacon latencies, game preferences), PlayerIp, and bIsReady = false.
  2. From OnSuccess, save GroupId and MemberId from the response.
  3. Share the GroupId with party members through your lobby system.

Step 2 - Members Join And Ready Up

  1. Each member calls CreateGroupMember with the GroupId, their own Profile, Attributes, PlayerIp, and bIsReady = false.
  2. When ready, each player, including the leader, calls UpdateGroupMember with bIsReady = true.
  3. 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

  1. All members poll GetGroupMember with their GroupId and MemberId every 3-5 seconds.
  2. Check Assignment.IsNullOrEmpty. When it is false, the server is ready.
  3. Break the AssignmentStruct for FQDN and GamePort.External to build the connect address.
  4. 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 DeleteGroup to cancel matchmaking for everyone. All members get CANCELLED status.
  • Member calls DeleteGroupMember to 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, then HOST_ASSIGNED.
  • Backfilling is a server-side operation using CreateBackfill.

On this page