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"
| Setting | Default | Description |
|---|---|---|
enableVipQueueBypass | false | Feature toggle. When false, vipUsers has no effect and no VIP tickets are minted. |
vipUsers | empty | The allowlist, keyed by label. Each entry has an idProvider and an accountId. |
Each vipUsers entry:
| Field | Description |
|---|---|
idProvider | The platform the account belongs to. Must be an exact IdProvider enum name — see the table below. A misspelled value fails the config validation. |
accountId | The 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:
| Value | Platform |
|---|---|
STEAM | Steam |
XBOX | Xbox |
PLAYSTATION | PlayStation |
EPIC | Epic Games |
GOOGLE | |
APPLE | Apple |
UNSAFE | Dev/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 #
| Symptom | Likely cause |
|---|---|
| VIP still queues normally | enableVipQueueBypass 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 queue | They were already waiting in the login queue when whitelisted. Have them restart the login flow. |
| Config push rejected | An invalid idProvider value in any vipUsers row rejects the whole push. Check every row’s provider spelling. |