Quick Start
1. Enable the plugin
Open Edit → Plugins, type Crimson in the search box, tick CrimsonOnlineSubsystem's checkbox (and CrimsonCommon, its dependency), and restart the editor when prompted. For a Blueprint project that's the entire install — you never hand-edit the .uproject or any .Build.cs.
Screenshot pending
Images/CrimsonOnlineSubsystem/qs-enable-plugin.pngBlueprint-only project?
Enabling the plugin in Edit → Plugins is the whole installation — there is no
.uproject or .Build.cs to edit. The editor writes the plugin entry for you. The C++ step below is needed only when you reference CrimsonOnlineSubsystem types from your own C++ code.C++ projects: after enabling the plugin above, add its module to your build file so your game code can use its types:
// YourGame.Build.csPublicDependencyModuleNames.Add("CrimsonOnlineSubsystem");
2 — Configure DefaultEngine.ini
[OnlineSubsystem]DefaultPlatformService=Steam[OnlineSubsystemSteam]bEnabled=trueSteamDevAppId=480
3 — Configure Project Settings
Open Project Settings → Crimson → Online Subsystem. Set the DLCMappingTable DataTable asset, toggle bEnableCloudSave, and set DebugPlatformOverride for PIE testing.
4 — Login at game start (C++)
// In your GameInstance or UGameInstanceSubsystem::Initializeif (UCrimsonOnlineSubsystemGI* OSS = UCrimsonOnlineSubsystemGI::Get(this)){OSS->GetIdentityService()->Login(0, FCrimsonOnlineLoginCompleteDelegate::CreateLambda([](int32 LocalPlayerIndex, bool bSuccess, const FString& Error){if (!bSuccess) { /* handle */ }}));}
5 — Blueprint async login
Use the Async Login Blueprint node (UCrimsonAsyncAction_Login). Connect On Success and On Failure pins. The node automatically obtains the UCrimsonOnlineSubsystemGI from the World context.
Never cache GetOSS()
Every service exposes
GetOSS() for direct OSS access. Never store the returned pointer across frames — PIE restarts invalidate OSS pointers. Always call GetOSS() fresh each use.