> 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.md).

# Modular Experience System

**Plugin Type:** Runtime + Editor\
**Engine:** Unreal Engine 5.7\
**Dependencies:** GameFeatures (Engine), ModularGameplay (Engine)

***

## Overview

{% embed url="<https://www.youtube.com/watch?v=cJtEvOa6Ttk>" %}

**Modular Experience System (MES)** is a **generic, game-agnostic experience loading framework** designed for Unreal Engine projects. Using a data-driven approach, it lets you define which pawn spawns, which HUD is displayed, which abilities are loaded, and more — all through a single **Experience Definition** asset.

MES can operate without any custom GameMode or GameState. Thanks to its **Auto Setup** mode, even default Unreal actors are automatically prepared for component injection.

### What Does It Do?

* Defines gameplay settings as data through **Experience Definitions**
* Adds modular, composable behaviors using the **GameFeatureAction** pattern
* Layers experiences together via **Parent Experience** chaining
* Hides the loading process from the player with **Loading Screen** integration
* Works with zero configuration using **Auto Setup** — no custom GameMode required
* Provides a presentation layer for menu/lobby systems through **User Facing Experiences**

### Module Structure

| Module                            | Type        | Description                                                       |
| --------------------------------- | ----------- | ----------------------------------------------------------------- |
| **ModularExperienceSystem**       | Runtime     | Core experience system — definitions, manager, subsystem, actions |
| **ModularExperienceFramework**    | Runtime     | Modular actor base classes (GameMode, GameState, Character, etc.) |
| **ModularExperienceSystemEditor** | Editor      | Asset factories, editor style, project setup checker              |
| **ModularLoadingScreen**          | Runtime     | Loading screen manager and interface                              |
| **ModularStartupLoadingScreen**   | Client Only | Pre-load screen shown during engine startup                       |

***

## Modules Sourced from Lyra

This plugin is composed of **three distinct sources**:

### 1. ModularLoadingScreen & ModularStartupLoadingScreen

These two modules are **sourced from Epic Games' Lyra sample project**. The code is essentially unchanged — it has only been moved into the MES plugin. To review the original behavior, refer to the `CommonLoadingScreen` module in the Lyra project.

These modules provide:

* `IModularLoadingProcessInterface` — Interface that determines whether the loading screen should be shown
* `UModularLoadingScreenManager` — GameInstance subsystem that queries all loading processes every frame
* `UModularLoadingProcessTask` — Lightweight task class for creating custom loading states
* Pre-load engine loading screen widget

### 2. ModularExperienceFramework

This module is also **sourced from Lyra's `ModularGameplayActors` plugin**. Class names have been renamed with the `MES_` and `AMES_` prefixes, but the internal behavior is identical. To see the original, refer to Lyra's `ModularGameplayActors` plugin.

This module provides actor base classes integrated with `GameFrameworkComponentManager`:

* `AMES_GameModeBase` / `AMES_GameMode`
* `AMES_GameStateBase` / `AMES_GameState`
* `AMES_Character` / `AMES_Pawn`
* `AMES_PlayerController` / `AMES_PlayerState`
* `AMES_AIController`

### 3. ModularExperienceSystem (The Core System)

**This is the original code.** The experience definition, loading pipeline, action system, auto-setup, user-facing experience, async actions, subsystem, and function library — all written from scratch for this plugin. While inspired by Lyra, it is an entirely different and extended architecture.

***

## Quick Start

For detailed setup and usage:

* [Getting Started](/dante-docs/modular-experience-system/getting-started.md) — Creating your first experience
* [Architecture](/dante-docs/modular-experience-system/architecture.md) — System architecture and loading pipeline
* [Configuration](/dante-docs/modular-experience-system/getting-started/configuration.md) — Developer Settings and WorldSettings
* [Modular Experience Definition](/dante-docs/modular-experience-system/modular-experience-definition.md) — Experience definition details
* [Modular Experience Manager Component](/dante-docs/modular-experience-system/modular-experience-manager-component.md) — Manager component reference
* [Modular Game Feature Actions](/dante-docs/modular-experience-system/modular-game-feature-actions.md) — Action system
* [Modular User Facing Experience](/dante-docs/modular-experience-system/modular-user-facing-experience.md) — Menu/lobby presentation layer
* [Modular Framework Classes](/dante-docs/modular-experience-system/modular-framework-classes.md) — Modular actor base classes
* [Modular Loading Screen](/dante-docs/modular-experience-system/modular-loading-screen.md) — Loading screen system
* [Blueprint Reference](/dante-docs/modular-experience-system/blueprint-reference.md) — Blueprint nodes and async actions
* [API Reference](/dante-docs/modular-experience-system/api-reference.md) — Full class and method reference
