Quick Start
Get one experience loading in a level, from nothing. At the end a Print String fires when the experience is live and the log shows the state machine reaching Loaded.
1. Enable the plugin
Open Edit -> Plugins, type Crimson in the search box, tick CrimsonExperience's checkbox, and restart when prompted. GameFeatures and ModularGameplay come in as declared dependencies - there is nothing to tick separately. For a Blueprint project that is the whole installation; you never hand-edit the .uproject.
2. Point the plugin at your experience folders, and set the policy
The plugin registers its three primary asset types itself, as soon as the asset manager exists, and marks them AlwaysCook - you only tell it which folders to scan. Set them in Project Settings -> Crimson -> Crimson Experience -> Asset Discovery -> Primary Asset Scan Paths, using the mount path the Content Browser's Copy Reference gives you for that folder. The panel writes Config/DefaultCrimsonExperience.ini. The Game Features subsystem still has to be told which policy class to use, and that one lives in Config/DefaultGame.ini.
; Config/DefaultCrimsonExperience.ini (written for you by the Project Settings panel)[/Script/CrimsonExperience.CrimsonExperienceSettings]+PrimaryAssetScanPaths=(Path="<your experience folder>"); Config/DefaultGame.ini (add this by hand)[/Script/GameFeatures.GameFeaturesSubsystemSettings]GameFeaturesManagerClassName=/Script/CrimsonExperience.CrimsonGameFeaturePolicy
FPrimaryAssetId, which the cooker does not follow. The plugin marks the types AlwaysCook, but it can only do that for folders you name here - an experience outside them loads in the editor and is missing from the package. You do not need PrimaryAssetTypesToScan entries in DefaultGame.ini; leaving old ones there as well would register each type twice.3. Create an Experience asset
UCrimsonExperienceDefinition is Const and Blueprintable: create a Blueprint Class deriving from it, not a data asset instance. Name it ExpDef_MyMode and put it in the directory you scanned.
| Property | What to put in it |
|---|---|
GameFeaturesToEnable | Names of Game Feature plugins to activate. Leave empty for now. |
Actions | Instanced UGameFeatureActions run for this experience only. Leave empty for now. |
ActionSets | Reusable bundles - see How-To: Share Actions with an Action Set. |
DefaultPawnData | Optional. A UCrimsonPawnDataBase subclass your game mode reads back. |
LoadingScreen | Optional presentation for loads while this experience is current. |
Actions array is valid - a null entry in it is not.4. Host the manager component on your GameState
UCrimsonExperienceManagerComponent is a UGameStateComponent and must live on the game state, because that is what replicates the current experience to clients.
Open your GameState Blueprint -> Add Component -> Crimson Experience Manager Component. No configuration on the component itself; the game mode drives it.
5. Tell the game mode which experience to load
SetCurrentExperience is server only and takes an FPrimaryAssetId. Call it once, after the game state exists - InitGame is too early, so defer a tick.
SetCurrentExperience is C++ only, because FPrimaryAssetId resolution and the authority gate are not things to hand-roll in a graph. Use the C++ tab for this step; everything after it is available in Blueprint.
Failed to identify experience error means the FPrimaryAssetId did not resolve - re-check the type name and asset name against step 2.6. React when it is ready
Anything that builds on what the experience set up waits for it rather than assuming BeginPlay ordering.
In any actor: Event BeginPlay -> Wait For Experience Ready -> (On Ready) -> Print String. The node fires immediately if the experience already loaded, so it is safe regardless of ordering.