CrimsonQuestSystem
CrimsonQuestSystem tracks quest progress for every player on the server and replicates it to the owner. A quest (UCrimsonQuestDefinition) is a graph of stages; each stage holds events (objectives), entry and exit actions, and conditional transitions. Your gameplay reports what happened through UCrimsonQuestSubsystem::ReportEvent, and the quest system reports back through its own delegates, so it plugs into any combat, inventory or dialogue system.
What's included
| System | Key types | Purpose |
|---|---|---|
| Quest data | UCrimsonQuestDefinition, UCrimsonQuestStage, UCrimsonQuestChain | Authored in the quest graph editor |
| Runtime | UCrimsonQuestProgressionComponent, UCrimsonQuestSubsystem, ACrimsonQuestWorldDirector | Per-player state machine, definition lookup and event ingress, party aggregation |
| Events | Kill, Collect Items, Interact, Reach Location, Talk To NPC, Fact Set, Timer Elapsed, Channel Reported | Objectives driven by reported events |
| Actions / conditions / rewards | UCrimsonQuestAction_*, UCrimsonQuestCondition_*, UCrimsonQuestReward_* | Side effects, predicates, rewards |
| Facts | UCrimsonFactDatabase, UCrimsonFactRegistry | Per-player typed key-value store |
| Hotfix | FCrimsonQuestDefinitionOverlay, ICrimsonQuestDataSource | Patch quests without recooking |
| Editor | Quest graph editor, Crimson Quest Dev Tools (Crimson.Quest.DevTools) | Author and debug in PIE |
Plugin dependencies
| Group | Dependencies |
|---|---|
| Crimson plugins | None - fully standalone |
| Engine modules (runtime) | Core, CoreUObject, Engine, GameplayTags, GameplayAbilities, NetCore, UMG, DeveloperSettings (public); IrisCore, Json, JsonUtilities (private) |
| Engine plugins | GameplayAbilities, SlateIM, GameplayTagsEditor |
Which path do I choose?
New to the plugin? Quick Start. Wiring your combat or inventory code in? How-To: Report Gameplay Events. Building a quest log? How-To: React to Quest Changes.
Using with other Crimson plugins
This plugin works alone: gameplay reports events through
UCrimsonQuestSubsystem::ReportEvent and listens to the quest delegates. When you own the other Crimson plugins, CrimsonCore contains the full-suite wiring in Source/CrimsonCore/{Public,Private}/Integration/QuestSystem/: UCrimsonCoreQuestMessageBridge forwards gameplay channels into ReportEvent and re-broadcasts quest state, reward and message delegates, and UCrimsonCoreQuestEvent_MessageReceived is a quest event driven by any broadcast message. To wire it yourself, see CrimsonCommon -> Concept: Connecting Crimson Plugins; for what CrimsonCore installs, see CrimsonCore -> Concept: The Integration Layer.