Pragma Engine enables cross-play, cross-progression, and cross-platform experiences by supporting multiple identity providers with account linking. This allows players to start on one platform and link their account when switching to another platform.
Identity providers are linked to a Pragma Account and used for authentication and platform-specific social integration. These accounts are isolated from player and social data to enable seamless cross-platform experiences.
The Pragma Engine test provider uses the name Unsafe Provider to indicate that it’s only for internal and testing use cases and should not be enabled in production. It can also be used in load testing to allow the creation of millions of test accounts.
When run in development mode, the platform will populate the Test Provider with default accounts (test01 - test20). Below is an example of how to enable the Unsafe Identity Provider:
Pragma Engine is highly configurable. You can enable additional plugins and custom services via the config files located in the 5-ext/config directory. Add the relevant configuration code blocks to local-dev.yml (for testing) or common.yml (for production) under the social section.
For identity providers not listed, studios can implement a custom Identity Provider Plugin. See the Custom Identity Provider concepts page for more information.
Steam configuration
value
description
appId
Steam numerical value used to identify a game on Steam
steamWebAPIKey
authorization key used to connect with the Steam Web API
restrictByAppOwnership
optional
boolean determining whether to reject users if they don’t own the app or are on a timed trial
restrictByAccountBan
optional
boolean determining whether to reject users who have been developer banned or VAC banned
playerLoginEnabled
optional
boolean determining whether to establish a player session with this identity provider
operatorLoginEnabled
optional
boolean determining whether to establish an operator session with this identity provider
accountLinkingEnabled
optional
boolean determining whether you can link accounts with this identity provider
showPortalLoginButton
optional
boolean determining whether this login method is available on the portal login page
visibleToOtherPlayers
optional
boolean determining whether Steam account information is visible to other players
Discord OAuth ID that identifies developer’s Discord app while making authorization requests.
clientSecret
Encrypted OAuth secret for the Discord app referenced by the clientId property.
redirectUri
optional
Backend authorization endpoint that Discord uses to validate OAuth handshakes.
botToken
optional
Unique ID for Discord server bots.
guildId
optional
Discord-defined guild identifier.
allowedRoleIds
optional
Map of user roles that are allowed to authenticate. Discord rate limits requests using these values to 5 per second. See Discord’s Rate limits documentation for details.
playerLoginEnabled
optional
Boolean determining whether to establish a player session with this identity provider.
operatorLoginEnabled
optional
Boolean determining whether to establish an operator session with this identity provider.
accountLinkingEnabled
optional
Boolean determining whether you can link accounts with this identity provider.
showPortalLoginButton
optional
Boolean determining whether this login method is available on the portal login page.
visibleToOtherPlayers
optional
Boolean determining whether Discord account information is visible to other players.
The examples for the Player Portal authentication and account linking use the Pragma default port of 11000. If you are using the standard port 443 instead you can omit the port numbers in these URIs.
IdProviderAccount contains third party user identification information that Pragma uses to create and authenticate accounts.
property
description
idProvider
enum of the identity provider. See the Identity Provider table for details.
accountId
string Unique identitifer that the third party uses to associate a player with their account.
displayName
string Display name that the third party provider has for a user on their interface.
discriminator
string Unique characters added to the end of an account name to identify them. If the third party does not use a distriminator, set as an empty string.
Identity provider is not configured in Pragma Engine.
AccountService_InvalidIdProvider
Identity provider enum type does not exist in IdProvider or ExtIdProvider enums.
AccountService_IdProviderLinkingDisabled
accountLinkingEnabled config value is set to false for this identity provider.
AccountService_IdProviderAlreadyAssociated
Identity provider account is already linked to an existing Pragma Account.
Ex: The same Steam account can not be linked to two separate Pragma Accounts.
AccountService_AccountAlreadyBoundToProviderType
A Pragma Account can not simultaneously be linked to the same identity provider type more than once.
Ex: Two Steam accounts can not be linked to the same Pragma Account at the same time.
AccountService_CannotUnlinkOnlyIdProvider
Identity provider is the last one linked to Pragma Account. Every Pragma Account needs at least one identity provider associated with it to be reachable.
AccountService_IdProviderAuthenticationDisabled
playerLoginEnabled or operatorLoginEnabled config value is set to false for this identity provider.
AccountService_Unauthorized
User does not meet authorization requirements for identity provider.
Ex: Only users with a specific email domain can log in.
AccountService_Unverified
User’s account has not been verified.
Ex: email verification
AccountService_IdProviderUnexpectedResponse
Pragma Engine received a response from the identity provider’s API that was unexpected.
Accounts can be filtered in Operator Portal by identity provider. This includes identity providers that are no longer used or disabled. For example, even if login is disabled for Steam, accounts will still appear when you filter by Steam in Operator Portal.
We use cookies to analyze our traffic. We also share information about your use of our site with our analytics partners who may combine it with other information that you’ve provided to them or that they’ve collected from your use of their services.