Skip to main content

API Reference

UERPIdentitySubsystem

GameInstance subsystem — server-authoritative identity manager.

Identity Management

FunctionReturnsDescription
CreateIdentity(AccountName, PIN)FERPPlayerIdentity*Create new account
GetIdentity(PlayerGUID)FERPPlayerIdentity*Lookup by GUID
FindIdentityByAccountName(Name)FERPPlayerIdentity*Lookup by account name (case-insensitive)
FindIdentityByExternalID(Platform, ID)FERPPlayerIdentity*Lookup by platform ID
LinkExternalID(GUID, Platform, ID)boolLink platform ID to account
UnlinkExternalID(GUID, Platform)boolRemove platform link

Authentication

FunctionReturnsDescription
AuthenticateWithPIN(AccountName, PIN)boolValidate PIN (checks lockout)
IssueToken(PlayerGUID)FERPSessionTokenGenerate signed session token
ValidateToken(Token)boolVerify HMAC + expiry + GUID exists
SerialiseToken(Token)FStringConvert token to wire format

Recovery

FunctionReturnsDescription
GenerateRecoveryCode(AccountName)FStringCreate 6-char recovery code
RedeemRecoveryCode(AccountName, Code, NewPIN)boolValidate code and reset PIN

Persistence

FunctionReturnsDescription
LoadDatabase()boolLoad all identities from backend
SaveDatabase()boolPersist all identities to backend

Delegates

DelegateSignatureDescription
OnIdentityCreated(FERPPlayerIdentity)New account created
OnDatabaseSaved()Database persisted
OnRecoveryCodeGenerated(AccountName, Code, ExternalIDs)Recovery code ready for delivery

UERPIdentityComponent

Actor component for PlayerController — handles client-server auth handshake.

Server RPCs

FunctionDescription
Server_Authenticate(RawToken)Silent token auth (auto-called on BeginPlay)
Server_Login(AccountName, PIN)Existing account login
Server_Register(AccountName, PIN)New account creation
Server_RequestRecovery(AccountName)Request recovery code
Server_RedeemRecovery(AccountName, Code, NewPIN)Redeem code + set new PIN

Accessors

FunctionReturnsDescription
GetPlayerGUID()FStringAuthenticated GUID (empty if not auth'd)
GetAuthState()ERPAuthStateEnumCurrent auth state
IsAuthenticated()boolConvenience predicate

Delegates

DelegateSignatureDescription
OnAuthStateChanged(ERPAuthStateEnum)Auth state changed
OnLoginRequested(bool bSessionExpired)Server requesting login UI
OnIdentityError(FString ErrorMessage)Server sent error
OnRecoveryCodeDispatched()Recovery code acknowledged

UERPIdentityConfig

Developer Settings — Project Settings → Rogue Paradigm → ElysIdentity.

PropertyTypeDefaultDescription
PersistenceBackendEnumJsonJson, SQLite, or Custom
DatabasePathFString{ProjectSaved}/ElysIdentity/playersDatabase file path
TokenExpiryDaysint3230Session token lifetime
ServerHMACSecretFStringchangeme_in_productionHMAC signing secret
MaxPINAttemptsint325Failed attempts before lockout
PINLockoutSecondsfloat300Lockout duration
RecoveryCodeExpirySecondsfloat900Recovery code lifetime

Data Structures

FERPPlayerIdentity

FieldTypeDescription
PlayerGUIDFStringUUID v4, immutable
AccountNameFStringUnique account name
PINHashFStringSHA-256 hex digest
PINSaltFString16-char hex salt
ExternalIDsTMap<FString, FString>Platform → ID map
CreatedAtFDateTimeUTC creation time
LastSeenAtFDateTimeUTC last auth time

FERPSessionToken

FieldTypeDescription
PlayerGUIDFStringOwner GUID
IssuedAtFDateTimeIssue timestamp
ExpiresAtFDateTimeExpiry timestamp
HMACFStringHMAC-SHA256 signature

Wire format: PlayerGUID|ExpiresAt_ISO8601|HMAC

ERPAuthStateEnum

ValueDescription
PendingNot yet authenticated
AuthenticatedSuccessfully authenticated
RejectedAuthentication failed