Modular Actors & Player Layer
CrimsonCommon folds the useful parts of three Epic sample plugins into one optional plugin: ModularGameplayActors (Game Feature extensible framework classes), CommonGame (player classes) and CommonUser (login and sessions). No Crimson plugin requires them; a plugin whose Game Feature actions add components only needs your actors to be ModularGameplay component receivers, which these classes are.
Modular framework classes
Each ACrimsonModular* class derives from its Epic equivalent and adds the Game Feature / Modular Gameplay registration hooks, so Game Features and plugins can attach components and abilities to them at runtime. They add no gameplay state of their own - game-specific state belongs in your subclasses or in feature components.
| Class | Base | Role |
|---|---|---|
ACrimsonModularCharacter / ACrimsonModularPawn | ACharacter / APawn | GFP-extensible player/AI bodies |
ACrimsonModularPlayerController / ACrimsonModularPlayerState | APlayerController / APlayerState | GFP-extensible controller and per-player state |
ACrimsonModularGameMode[Base] / ACrimsonModularGameState[Base] | AGameMode[Base] / AGameState[Base] | GFP-extensible match rules and shared state |
ACrimsonModularAIController | AAIController | GFP-extensible AI controller |
Player layer
Above the framework classes sits the player/session layer. UCrimsonCommonGameInstance tracks the primary player and exposes an OnPrimaryPlayerSet hook; UCrimsonCommonLocalPlayer broadcasts player-side delegates; ACrimsonCommonPlayerController bridges controller to local player. The online side - UCrimsonUserSubsystem (login, privileges, online context) and UCrimsonSessionSubsystem (host/join/matchmaking, beacons) - is a complete, self-contained port of Epic's CommonUser (both OSSv1 and OSSv2 paths), with every type renamed to the Crimson prefix.
ACrimsonModularCharacter and ignore UCrimsonSessionSubsystem entirely.