Quick Start

Track a kill quest for a player, in single player and multiplayer.

1. Enable the plugin

Open Edit -> Plugins, search for Crimson, tick CrimsonQuestSystem and restart. C++ projects add "CrimsonQuestSystem" and "GameplayTags" to PublicDependencyModuleNames.

Verify
Project Settings -> Crimson -> Crimson Quest System exists.

2. Tell the plugin where quests live

Add your quest folder to Project Settings -> Crimson -> Crimson Quest System -> Primary Asset Scan Paths. Quests are found by primary asset id, which the cooker does not follow; without a scan path GetQuest returns null and packaged builds ship no quests.

ini
[/Script/CrimsonQuestSystem.CrimsonQuestSettings]
+PrimaryAssetScanPaths=(Path="/Game/Quests")
Verify
On the next editor start the Output Log reports the registered quest asset types.

3. Give each player a progression component

Open your PlayerState Blueprint and Add Component -> Crimson Quest Progression Component.

Verify
The component shows on the PlayerState in the Details panel.

4. Spawn the world director

In your GameMode: Event BeginPlay -> Switch Has Authority (Authority) -> Get For World (Crimson Quest World Director) -> Is Valid (not) -> Spawn Actor (Crimson Quest World Director).

Verify
Play: the World Outliner lists one CrimsonQuestWorldDirector.

5. Author a quest

In your scanned folder create a quest asset: Content Browser -> right-click -> the Crimson quest menu, or Miscellaneous -> Data Asset -> Crimson Quest Definition. Open it, add a stage, add a Kill Event (Target Tags = Enemy.Wolf, Required Kills = 3) and a transition to a completing stage. Save.

Verify
The quest opens in the quest graph editor and validates without errors.

6. Accept it and report kills

On the server: Get Player State -> Get Component By Class (Crimson Quest Progression Component) -> Accept Quest (your quest id). When an enemy dies, on the server: Get For World (Crimson Quest Subsystem) -> Report Unit Killed (Killer, Victim, Victim Tags = Enemy.Wolf).

Verify
After three kills Get Quest State returns Completed. In Play As Client the client's progression component shows the same state (it replicates owner-only), while kills are reported on the server.