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.
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.
[/Script/CrimsonQuestSystem.CrimsonQuestSettings]+PrimaryAssetScanPaths=(Path="/Game/Quests")
3. Give each player a progression component
Open your PlayerState Blueprint and Add Component -> Crimson Quest Progression Component.
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).
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.
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).
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.