Changelog¶
All notable changes to FWQuestSystem are documented on this page.
Version 3.0¶
Release type: Major | Engine: UE 5.3+
Added¶
- Party synchronization modes.
EFWQuestPartyModewith four modes:None,ShareOnly,SyncProgress,RequireAll. Party members can now share quest progress based on proximity and quest configuration. - Daily and weekly reset system.
EFWQuestRepeatType::DailyandEFWQuestRepeatType::Weeklywith configurable reset times managed byUFWQuestStateSubsystem. Automatic reset scheduling with server-authoritative time tracking. - Quest priority system.
EFWQuestPriority(Low, Normal, High, Urgent) for UI sorting and notification filtering. - Expanded quest categories. Added
World,Dungeon,Guild,Event,Profession, andChallengetoEFWQuestCategory. - UFWQuestStateSubsystem. New World Subsystem that manages quest state persistence, reset scheduling, and cross-player coordination at the world level.
- JSON serialization. Full quest state serialization via
SaveQuestStateandLoadQuestStateon the state subsystem. Versioned JSON format with active quests, completed history, and reset timestamps. - Completion count tracking.
FFWQuestInstance::CompletionCounttracks how many times a repeatable quest has been completed. - New condition types.
FWCondition_Time(time window checks),FWCondition_And(boolean AND combinator),FWCondition_Or(boolean OR combinator),FWCondition_Custom(Blueprint-defined). - New reward types.
FWReward_SkillXP(skill-specific XP),FWReward_Currency(configurable currency types),FWReward_Unlock(content unlocks),FWReward_Custom(Blueprint-defined). - UFWTask_Timer. Time-limited task type that auto-fails the quest when the timer expires.
- UFWTask_Custom. Blueprint-extensible task type with overridable
ProcessEvent. GetFailureReasonon conditions. Returns user-facing text explaining why a condition is not met, for better UI feedback.GetIconon rewards. Optional icon texture for reward display in UI.GetQuestsByCategoryon both database and manager. Filter quests by category for journal organization.OnQuestStateChangeddelegate. Fires on any state transition with both old and new states.MaxCompletionHistorysetting. Configurable limit on completed quest history to control memory usage.
Changed¶
- Quest definitions are now
UPrimaryDataAsset. Upgraded fromUDataAssetto enable Asset Manager integration, async loading, and bundle management. - Tasks, conditions, and rewards are instanced. All sub-objects use
EditInlineNew+DefaultToInstancedspecifiers, allowing per-quest configuration without shared state issues. ProcessQuestEventis the primary event entry point. All convenience methods (OnEnemyKilled,OnLocationReached,OnNPCInteracted) now route throughProcessQuestEventwith standardizedFFWQuestEventpayloads.- Task matching uses
MatchesTaginstead of exact match. A task targetingEnemy.Wolfnow matches events taggedEnemy.Wolf.ForestorEnemy.Wolf.Alpha, enabling tag hierarchy-based matching. - Condition evaluation passes the quest manager.
Evaluatenow receives aconst UFWQuestManagerComponent*parameter, allowing conditions to query quest state (e.g.,FWCondition_QuestComplete). - Reward
GrantreceivesAActor*instead ofAPlayerController*. This supports granting rewards to non-player actors in AI or NPC quest scenarios.
Removed¶
FFWQuestProgressstruct. Replaced byFFWQuestInstanceandFFWQuestTaskInstancefor clearer separation of quest-level and task-level state.UQuestSubsystem(Game Instance subsystem). Replaced byUFWQuestStateSubsystem(World Subsystem) for proper per-world isolation in PIE and server scenarios.- Hard-coded condition checks. All conditions are now data-driven via
UFWQuestConditionBasesubclasses. The previousMinLevelandRequiredQuestIdproperties on the quest definition have been removed in favor of composable condition objects.
Migration Guide¶
Breaking Changes
Version 3.0 changes the quest definition format, state management, and event processing pipeline. Manual migration is required.
Key migration steps:
-
Convert quest definitions to
UPrimaryDataAsset. Re-create quest definition assets or use the Asset Manager's re-parenting tool. MoveMinLevelandRequiredQuestIdproperties into condition objects (FWCondition_Level,FWCondition_QuestComplete). -
Update task references. Tasks are now instanced sub-objects. If you had shared task assets, create instanced copies in each quest definition.
-
Replace
FFWQuestProgressusage. UseGetQuestInstanceto retrieveFFWQuestInstanceand accessTaskInstancesfor per-task progress. -
Replace
UQuestSubsystemreferences. UseGetWorld()->GetSubsystem<UFWQuestStateSubsystem>()instead of the Game Instance subsystem. -
Update event dispatching. Replace direct task-type event calls with
ProcessQuestEvent(FFWQuestEvent)for consistency. The convenience methods still exist but now wrapProcessQuestEvent. -
Update condition evaluation. If you had custom condition subclasses, update
Evaluateto acceptconst UFWQuestManagerComponent*instead ofAPlayerController*. -
Update reward application. If you had custom reward subclasses, update
Grantto acceptAActor*instead ofAPlayerController*. Cast toAPlayerControllerinternally if needed.
Version 2.0¶
Release type: Major | Engine: UE 5.2+
Added¶
- DataAsset-based quest definitions. Complete rewrite from Blueprint-only quest classes to
UDataAsset-based definitions. - Instanced task system.
UFWQuestTaskBasewith built-inFWTask_Slay,FWTask_Travel,FWTask_Interact,FWTask_TalkTo,FWTask_Collect. - Condition system.
UFWQuestConditionBasewithFWCondition_QuestComplete,FWCondition_Level,FWCondition_HasItem,FWCondition_Reputation. - Reward system.
UFWQuestRewardBasewithFWReward_Experience,FWReward_Item,FWReward_Reputation. UFWQuestDatabase. Central collection of quest definitions.OnTaskProgressChangeddelegate. Per-task progress reporting.EFWQuestRepeatType::CooldownandUnlimited. Basic repeatable quest support.EFWQuestCategory. MainStory, Side, Daily, Weekly categories.
Changed¶
UFWQuestManagerComponentcompletely rewritten with event-driven architecture.
Removed¶
- Blueprint-only quest classes. Replaced by DataAsset definitions.
Version 1.0¶
Release type: Initial | Engine: UE 5.1+
Added¶
- Initial release of FWQuestSystem.
UFWQuestManagerComponentfor quest acceptance and tracking.- Blueprint-only quest definition classes.
- Basic kill and collect task tracking.
OnQuestAcceptedandOnQuestCompleteddelegates.- Simple quest state machine (Available, Active, Completed).