> For the complete documentation index, see [llms.txt](https://dante-3.gitbook.io/dante-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dante-3.gitbook.io/dante-docs/modular-experience-system/getting-started/setup.md).

# Setup

## Automatic Setup

<figure><img src="https://4216330531-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYsGXprPiDJ68FN8HnOaN%2Fuploads%2FliFRKzIGk9mvY0e1HjeT%2Fimage.png?alt=media&amp;token=2ebfad5a-3221-4c8d-b82c-8ceecd9f5092" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4216330531-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYsGXprPiDJ68FN8HnOaN%2Fuploads%2FlISbO4W76DhIMGSE4gwR%2Fimage.png?alt=media&amp;token=dde9c671-4954-4e49-99a1-bd9955e8649e" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4216330531-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYsGXprPiDJ68FN8HnOaN%2Fuploads%2Fn3MDb5owVHFIXhZBveek%2Fimage.png?alt=media&amp;token=8d6b558f-e0e8-4831-9b77-f04a0efdb042" alt=""><figcaption></figcaption></figure>

### Half Manual Setup

{% stepper %}
{% step %}

### Configure Asset Manager

Add the following entries to your `DefaultGame.ini` (or use `MES_ProjectSetupChecker`'s automatic configuration):

<figure><img src="https://4216330531-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYsGXprPiDJ68FN8HnOaN%2Fuploads%2FF3W8y4tZs4xsvykpkHxi%2Fimage.png?alt=media&amp;token=587e80a0-1049-43dc-b0ef-c8d83a96ee7d" alt=""><figcaption></figcaption></figure>

```ini
[/Script/Engine.AssetManagerSettings]
-PrimaryAssetTypesToScan=(PrimaryAssetType="ModularExperienceDefinition",AssetBaseClass="/Script/ModularExperienceSystem.ModularExperienceDefinition",bHasBlueprintClasses=True,bIsEditorOnly=False,Directories=((Path="/Game")),SpecificAssets=(),Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=Unknown))
+PrimaryAssetTypesToScan=(PrimaryAssetType="ModularExperienceDefinition",AssetBaseClass="/Script/ModularExperienceSystem.ModularExperienceDefinition",bHasBlueprintClasses=True,bIsEditorOnly=False,Directories=((Path="/Game")),SpecificAssets=(),Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=AlwaysCook))
-PrimaryAssetTypesToScan=(PrimaryAssetType="MES_UserFacingExperience",AssetBaseClass="/Script/ModularExperienceSystem.MES_UserFacingExperience",bHasBlueprintClasses=False,bIsEditorOnly=False,Directories=((Path="/Game")),SpecificAssets=(),Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=Unknown))
+PrimaryAssetTypesToScan=(PrimaryAssetType="MES_UserFacingExperience",AssetBaseClass="/Script/ModularExperienceSystem.MES_UserFacingExperience",bHasBlueprintClasses=False,bIsEditorOnly=False,Directories=((Path="/Game")),SpecificAssets=(),Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=AlwaysCook))
```

{% hint style="info" %}
When you first open the editor, `MES_ProjectSetupChecker` detects missing settings and offers an "Apply & Restart" button for automatic configuration.
{% endhint %}
{% endstep %}

{% step %}

### Set the WorldSettings Class

Add to your `DefaultEngine.ini`:

<figure><img src="https://4216330531-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYsGXprPiDJ68FN8HnOaN%2Fuploads%2FTypbER797ADHtAl8z7i0%2Fimage.png?alt=media&amp;token=fee0fd5f-e567-4e41-b933-a68661e60078" alt=""><figcaption></figcaption></figure>

```ini
[/Script/Engine.Engine]
WorldSettingsClassName=/Script/ModularExperienceSystem.MES_WorldSettings
```

This enables the **Default Gameplay Experience** field in the World Settings panel of every map.
{% endstep %}

{% step %}

### Set the Asset Manager Class (Optional)

If you want custom asset loading and caching behavior:

<figure><img src="https://4216330531-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYsGXprPiDJ68FN8HnOaN%2Fuploads%2FVpdixLuhJKyfsd1VLOsJ%2Fimage.png?alt=media&amp;token=024b7d3c-1838-4551-a9eb-c0a62e6227b1" alt=""><figcaption></figcaption></figure>

```ini
[/Script/Engine.Engine]
AssetManagerClassName=/Script/ModularExperienceSystem.MES_AssetManager
```

{% endstep %}

{% step %}

### Create Your First Experience Definition

1. Right-click in the Content Browser → **Miscellaneous** → **Modular Experience Definition**![](https://4216330531-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYsGXprPiDJ68FN8HnOaN%2Fuploads%2FOust5TuZ6Ih7Q6SO27qe%2Fimage.png?alt=media\&token=d9e07afc-a323-40a5-a7a2-16670593fed1)
2. Name your Blueprint (e.g., `B_DefaultExperience`)
3. Open it and add actions to the **Actions** array:

   * **Modular Game Feature Action** — customizable via Blueprint
   * Or a C++ `UGameFeatureAction` subclass

   <figure><img src="https://4216330531-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYsGXprPiDJ68FN8HnOaN%2Fuploads%2FNIlAZDTzEjtjAeqUN2TX%2Fimage.png?alt=media&amp;token=82ae892b-c198-48ec-96ec-d36ba13719bb" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
To create your first action in Blueprint, see the [Game Feature Actions](/dante-docs/modular-experience-system/modular-game-feature-actions.md) guide.
{% endhint %}
{% endstep %}

{% step %}

### Assign the Experience to a Map

#### Method A: WorldSettings (Recommended)

1. Open the **World Settings** panel in your map

   <figure><img src="https://4216330531-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYsGXprPiDJ68FN8HnOaN%2Fuploads%2FLesRoGG9HkZZJcZSWmqU%2Fimage.png?alt=media&amp;token=6ea61911-c10e-45f3-9c84-8c05388caa39" alt=""><figcaption></figcaption></figure>
2. Select your experience in the **Default Gameplay Experience** field

#### Method B: URL Options

Append to the URL during map travel:

```
/Game/Maps/MyMap?Experience=ModularExperienceDefinition:B_DefaultExperience
```

#### Method C: Developer Settings (Editor-Only)

Editor → Preferences → Project → **Modular Experience System** → **Experience Override**

This lets you test different experiences without modifying the map.

<figure><img src="https://4216330531-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYsGXprPiDJ68FN8HnOaN%2Fuploads%2FaLwQKeW5GT4gMd61z3w5%2Fimage.png?alt=media&amp;token=0157b181-af15-412c-97c8-71449ca90b08" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Play

**Auto Setup** mode is enabled by default. This means:

* ✅ You **don't need** to write a custom GameMode — the subsystem auto-adds `UModularExperienceManagerComponent` to the GameState
* ✅ You **don't need** a custom GameState — `MES_` base classes or Auto Setup receiver registration is used
* ✅ The experience is auto-resolved in order: WorldSettings → URL → CommandLine

Press Play in PIE — the experience loads, actions activate, and the loading screen is handled automatically.
{% endstep %}
{% endstepper %}

### Manual Setup

If you want more control, set `bAutoSetup = false` and:

1. Derive from `AMES_GameMode` or `AMES_GameModeBase`
2. Derive from `AMES_GameState` and add `UModularExperienceManagerComponent`
3. Override `InitGameState()` and call `ChangeCurrentExperience()`
4. Derive other actors from the `AMES_` base classes
