CrimsonCommon · Lesson 1 of 4

Meet CrimsonCommon

Beginner2 minOverview

Before you start

  • None — start here
Video coming soon

Chapters

What it is

CrimsonCommon is the shared contracts layer for all Crimson plugins. It defines the interfaces, data types, and base actor classes that let plugins communicate without direct dependencies.

Replaces Epic's modular layer
CrimsonCommon replaces the need for ModularGameplayActors, CommonGame, and CommonUser. All Crimson plugins depend only on this one shared layer.

What it contains

FolderPurpose
TagStacks/Replicated fast-array tag stacks — ammo, charges, currencies, buildup
AbilitySystem/Ability Set data asset + bridge interface for granting abilities across plugins
Interaction/Interfaces and data types the interaction system speaks
ContextMenu/Server-validated context-action contracts (Use / Drop / Open…)
Messaging/Tag-routed message bus — a dependency-free GameplayMessageSubsystem
UI/CommonUI layer stack + UI extension points (replaces CommonGame)
Input/Shared input contracts (chords, sensitivity) so plugins agree without a cross-dep
Teams/Team/faction membership interface
Actors/Modular base actor classes (the part this course uses)
Player/Game Instance, Local Player, base Player Controller, and the user/session layer (CommonUser port)
UtilitiesTag display names, perf-stat enums, the async-load mixin, and the CRIMSON_LOG_* macros

We'll only touch the modular base classes in this course. Everything else here — tag stacks, ability sets, the interaction and context-menu contracts, the message bus, and the UI layer system — is independent and opt-in, and each gets its own How-To and Advanced course.

Why it matters

Because every plugin talks through CrimsonCommon's interfaces instead of referencing each other, you can enable just the plugins you want and they still cooperate. That's why the first step in any Crimson project is getting Common in place.

A toolbox, not a pipeline
CrimsonCommon is a foundation of independent contracts and utilities — none of them are required. Adopt the modular base classes below to anchor your project, then pull in only the pieces you need.