CrimsonCommon · Lesson 1 of 7
Meet CrimsonCommon
Before you start
- None — start here
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.
What it contains
| Folder | Purpose |
| 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) |
| Utilities | Tag display names, perf-stat enums, the async-load mixin, and the CRIMSON_LOG_* macros |
This course covers the modular base classes plus the three foundation systems you'll touch in almost every project: tag stacks, messaging, and ability sets. Everything else — the interaction and context-menu contracts and the UI layer system — is independent and opt-in, and each has its own How-To in the docs.
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.