Skip to main content

Setup Guide

Installation

From FAB Marketplace

  1. Purchase and download ElysIdentity from the FAB Marketplace
  2. Enable the plugin in your project's .uproject file or via Edit → Plugins
  3. Restart the editor

Manual Installation

Copy the ElysIdentity folder to your project's Plugins/ directory and rebuild.

Prerequisites

  • Unreal Engine 5.6+
  • SQLiteCore plugin enabled (included with UE, used for SQLite backend)

Quick Setup

1. Add the Identity Component

Add UERPIdentityComponent to your PlayerController Blueprint or C++:

// In your PlayerController header
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
UERPIdentityComponent* IdentityComponent;

// In constructor
IdentityComponent = CreateDefaultSubobject<UERPIdentityComponent>(TEXT("IdentityComponent"));

Or simply add it as a component in your PlayerController Blueprint.

2. Configure Plugin Settings

Open Project Settings → Rogue Paradigm → ElysIdentity and configure:

SettingDefaultDescription
PersistenceBackendJsonJson for prototyping, SQLite for production
DatabasePath{ProjectSaved}/ElysIdentity/playersPath to database file (.json or .db appended automatically)
TokenExpiryDays30Session token lifetime in days
ServerHMACSecretchangeme_in_productionMust change for production! HMAC signing secret
MaxPINAttempts5Failed PIN attempts before lockout
PINLockoutSeconds300Lockout duration in seconds
RecoveryCodeExpirySeconds900Recovery code lifetime (15 minutes)
warning

Always change ServerHMACSecret before shipping. The default value is intentionally insecure.

3. Build Your Login UI

Listen for the OnLoginRequested delegate on UERPIdentityComponent:

IdentityComponent->OnLoginRequested.AddDynamic(this, &AMyPC::ShowLoginWidget);

Your widget should call:

  • Server_Login(AccountName, PIN) for existing accounts
  • Server_Register(AccountName, PIN) for new accounts
  • Server_RequestRecovery(AccountName) for forgotten PINs

4. Handle Authentication Success

IdentityComponent->OnAuthStateChanged.AddDynamic(this, &AMyPC::OnAuthChanged);

void AMyPC::OnAuthChanged(ERPAuthStateEnum NewState)
{
if (NewState == ERPAuthStateEnum::Authenticated)
{
FString PlayerGUID = IdentityComponent->GetPlayerGUID();
// Player is authenticated, proceed to gameplay
}
}

Authentication Flows

Returning Player (Silent)

When a player reconnects, the component automatically reads the stored session token and authenticates silently — no login widget needed.

New Player / Expired Token

The component fires OnLoginRequested, signaling your UI to show a login/register form.

PIN Recovery

  1. Player calls Server_RequestRecovery(AccountName)
  2. Server generates a 6-character code and fires OnRecoveryCodeGenerated (deliver via Discord bot, webhook, etc.)
  3. Player enters code + new PIN via Server_RedeemRecovery(AccountName, Code, NewPIN)