Login queue bypass #

The VIP login queue bypass lets specific, pre-approved accounts (developers, community managers, partners, streamers) skip the login queue and log in immediately.

  • VIP membership is a backend config allowlist. Adding or removing a VIP requires no client build or code change.
  • The feature is off by default and gated behind a feature toggle config.
  • Updates to the VIP list don’t apply retroactively to players already in queue or logged in. If a user is added to the VIP list after they are already in the queue, they will need to relaunch the client to pick up the change.
  • VIP users are allowed to log in when CCU is at capacity, even if the capacity is set to 0.

Enable the feature #

Configure the game backend’s LoginQueueServiceConfig. Key each vipUsers entry by a human-readable label — the label is for operators, not the system.

game:
  serviceConfigs:
    LoginQueueServiceConfig:
      enableVipQueueBypass: true
      vipUsers:
        janeFromCommunity:
          idProvider: STEAM
          accountId: "76561190000000001"
        bobPartnerSteam:
          idProvider: STEAM
          accountId: "76561190000000002"
SettingDefaultDescription
enableVipQueueBypassfalseFeature toggle. When false, vipUsers has no effect and no VIP tickets are minted.
vipUsersemptyThe allowlist, keyed by label. Each entry has an idProvider and an accountId.

Each vipUsers entry:

FieldDescription
idProviderThe platform the account belongs to. Must be an exact IdProvider enum name — see the table below. A misspelled value fails the config validation.
accountIdThe provider account Id — for example the 17-digit SteamId64. Quote it so it stays a string. Matching is trimmed and case-insensitive.

Common idProvider values:

ValuePlatform
STEAMSteam
XBOXXbox
PLAYSTATIONPlayStation
EPICEpic Games
GOOGLEGoogle
APPLEApple
UNSAFEDev/test logins only

The full list is the IdProvider enum in accountRpc.proto.

Send the player identity from the client #

Set the player’s platform account Id on the login options before logging in. This is supported in the Unreal SDK. See Authenticate with Steam for how to build GetProviderToken.

#include "PragmaPlayer.h"

//...

FPragmaLoginOptions LoginOptions;
// The player's own platform account Id, e.g. their SteamID64.
LoginOptions.IdProviderAccountId = LocalPlayerSteamId;

// GetProviderToken fetches the Steam ticket once the player clears the queue.
Player->LogIn(EPragma_Account_IdProvider::STEAM, GetProviderToken, LoginOptions, OnComplete);

When IdProviderAccountId is set, the SDK joins the queue with a POST request that includes the provider and account Id. When it’s empty, the SDK uses the original GET request, so older clients keep working.

You can set IdProviderAccountId for every player. Accounts not on the list queue normally. For a VIP, the account Id is checked against the identity the platform provider validates at login, and the login is rejected if they don’t match, so a client can’t claim another player’s VIP entry.

Troubleshooting #

SymptomLikely cause
VIP still queues normallyenableVipQueueBypass is false; the entry’s idProvider isn’t the exact enum name; the accountId doesn’t match the player’s actual provider account Id; the client didn’t set IdProviderAccountId; or config hasn’t propagated to all nodes yet.
Newly added VIP is stuck in the queueThey were already waiting in the login queue when whitelisted. Have them restart the login flow.
Config push rejectedAn invalid idProvider value in any vipUsers row rejects the whole push. Check every row’s provider spelling.