API Reference
Table of Contents
- Interfaces
IPulseQuestManagerInterface IPulseQuestSaveInterface IPulseSharedQuestPlayerInterface
- Core Classes
UPulseQuestManager APulseSharedQuestHost UPulseQuest UPulseQuestSet UPulseQuestData UPulseQuestManagerData UPulseQuestObjective UPulseObjectiveTask UPulseQuestDirector UPulseQuestStateTreeDirector UPulseQuestInstance
- Enumerations
EPulseQuestFinishResult EPulseObjectiveCompletionStatus EPulseObjectiveNetMode EPulseQuestDirectorState EPulseQuestFlags (bitmask)
- Structs
FPulseQuestAddParams FPulseQuestObjectiveAddParams FPulseQuestSaveGame FPulseQuestSaveRecord FPulseObjectiveSaveRecord FPulseObjectiveHandle FPulseSharedQuestPlayer
- ViewModels
- StateTree Schemas
- Function Library
UPulseQuestUtils
- Gameplay Tags (Built-in)
Interfaces
IPulseQuestManagerInterface
Central interface implemented by both UPulseQuestManager and APulseSharedQuestHost.
| Member | Description |
StartQuest(Params, OutReason) | Start a quest by tag |
StopQuest(Tag, Result) | Stop a quest immediately |
SendEventToQuest(Tag, Event) | Forward a StateTree event to a running quest |
IsQuestActive(Tag) | Query active status |
GetQuestData(Tag) | Get runtime quest data |
GetActiveQuests(Tags, Data) | Enumerate active quests |
GetNumActiveQuests() | Count of active quests |
StartObjective(Params) | Start an objective directly |
GetObjective(Handle) | Get a running objective by handle |
GetActiveObjectives(Out) | Enumerate all active objectives |
GetObjectivesForQuest(Tag, Out) | Filter objectives by quest |
IsObjectiveActive(Tag, Class) | Check if objective class is running in quest |
GetNumActiveObjectives() | Count of active objectives |
ResetQuestManager(OnComplete) | Stop all and clear all state |
SaveQuestManager(OutSave) | Serialize current state |
LoadQuestManager(SaveData, Failures) | Restore from serialized state |
GetManagerParams() | Read manager configuration |
GetQuestManagerData() | Get runtime manager data object |
GetQuestDirector() | Get the active Director (may be null) |
EnqueueEvent(Event) | Add event to processing queue |
BreakEventQueue(Event, bKeepEvents) | Pause queue processing |
OnQuestStartedEvent() | Native C++ delegate |
OnQuestFinishedEvent() | Native C++ delegate |
OnObjectiveStartedEvent() | Native C++ delegate |
OnObjectiveFinishedEvent() | Native C++ delegate |
OnResetEvent() | Native C++ delegate |
OnSavedEvent() | Native C++ delegate |
OnLoadedEvent() | Native C++ delegate |
IPulseQuestSaveInterface
Implemented by save-participating objects.
| Member | Description |
OnSaveGame(OutBytes) | Serialize custom data |
OnLoadGame(InBytes) | Deserialize custom data |
ShouldSave() | Return false to skip |
GetSaveClassTag() | Return a tag identifying the class version |
IPulseSharedQuestPlayerInterface
Implemented by actors that participate in shared quests.
| Member | Description |
GetPlayerState() | Return associated APlayerState* |
Core Classes
UPulseQuestManager
| Category | Description |
| Base | UGameplayTasksComponent |
| Implements | IPulseQuestManagerInterface |
| Replication | UPulseQuestManagerData, active quests, active objectives: COND_OwnerOnly |
| Key property | ManagerParams : FPulseQuestManagerParams |
| Key property | bAutoManageAvatarActor : bool |
APulseSharedQuestHost
| Category | Description |
| Base | AInfo |
| Implements | IPulseQuestManagerInterface |
| Replication | Active quests and objectives to all relevant clients |
| Key property | ManagerParams : FPulseSharedQuestManagerParams |
UPulseQuest
| Category | Description |
| Base | UPrimaryDataAsset |
| Key property | Tag : FGameplayTag |
| Key property | StateTree : FStateTreeReference |
| Key property | DefaultFlags : int32 |
| Key property | QuestDataClass : TSubclassOf<UPulseQuestData> |
| Key property | MetaData : UObject* |
UPulseQuestSet
| Category | Description |
| Base | UPrimaryDataAsset |
| Key property | Quests : TSet<UPulseQuest*> |
| Key property | QuestSets : TSet<UPulseQuestSet*> |
UPulseQuestData
| Category | Description |
| Base | UObject |
| Replicated | Yes (owner/all depending on manager type) |
| Implements | IPulseQuestSaveInterface |
| Key property | Quest : const UPulseQuest* |
| Key property | FinishState : EPulseQuestFinishResult |
| Key property | QuestFlags : int32 |
UPulseQuestManagerData
| Category | Description |
| Base | UObject |
| Replicated | Yes |
| Implements | IPulseQuestSaveInterface |
| Purpose | Per-manager custom runtime data; subclass and set in ManagerParams |
UPulseQuestObjective
| Category | Description |
| Base | UObject |
| Implements | IPulseQuestSaveInterface |
| Key property | UniqueSaveIdentifier : FName |
| Key property | NetMode : EPulseObjectiveNetMode |
| Key overrides | K2_OnInit, K2_OnStart, K2_OnStop, K2_OnSaveGame, K2_OnLoadGame |
UPulseObjectiveTask
| Category | Description |
| Base | UGameplayTask |
| Purpose | Runs alongside a UPulseQuestObjective to drive progression |
| Key overrides | Activate, OnDestroy, TickTask |
UPulseQuestDirector
| Category | Description |
| Base | UObject |
| Server-only | Yes |
| Key overrides | K2_OnInit, K2_OnStart, K2_OnStop, K2_OnSaveGame, K2_OnLoadGame |
UPulseQuestStateTreeDirector
| Category | Description |
| Base | UPulseQuestDirector |
| Purpose | Drives quest flow via a UStateTree (Director schema) |
| Key property | StateTree : FStateTreeReference |
UPulseQuestInstance
| Category | Description |
| Base | UObject |
| Server-only | Yes |
| Purpose | Wraps StateTree execution for one running quest |
Enumerations
EPulseQuestFinishResult
| Value | Meaning |
None | Quest is still running |
Success | Quest completed successfully |
Failure | Quest failed |
Stopped | Quest was stopped externally |
EPulseObjectiveCompletionStatus
| Value | Meaning |
None | Objective still active |
Completed | Objective succeeded |
Failed | Objective failed |
Stopped | Objective was stopped externally |
EPulseObjectiveNetMode
| Value | Meaning |
ServerOnly | Server only, no replication |
ServerAndOwner | Server + owning client (COND_OwnerOnly) |
ServerAndAll | Server + all relevant clients |
EPulseQuestDirectorState
| Value | Meaning |
Idle | Not yet started |
Running | Actively running |
Stopped | Stopped |
EPulseQuestFlags (bitmask)
| Flag | Value | Meaning |
PQF_NoSave | 1 << 0 | Exclude from save/load |
PQF_NoStartOnLoad | 1 << 1 | Do not auto-restart from save |
Structs
FPulseQuestAddParams
| Field | Description |
QuestTag | Quest to start |
AdditionalFlags | Extra EPulseQuestFlags |
OnAdded | Callback delegate |
FPulseQuestObjectiveAddParams
| Field | Description |
ObjectiveClass | Class to instantiate |
QuestTag | Owning quest |
SaveID | Unique identifier within quest |
NetMode | Replication mode |
TaskClass | Optional Gameplay Task |
ViewModelClass | Optional ViewModel |
StartIfCompletedAtSave | Bitmask for restart-on-load |
FPulseQuestSaveGame
| Field | Description |
QuestRecords | Per-quest save records |
QuestManagerData | Serialized manager data bytes |
DirectorData | Serialized director data bytes |
FPulseQuestSaveRecord
| Field | Description |
QuestTag | Quest identifier |
bIsActive | Was quest active at save time |
Flags | Quest flags at save time |
QuestData | Serialized quest data bytes |
ObjectiveRecords | Map of SaveID → FPulseObjectiveSaveRecord |
FPulseObjectiveSaveRecord
| Field | Description |
SaveID | Objective identifier |
bFinished | Was objective finished |
FinishStatus | How it finished |
ObjectiveData | Serialized objective bytes |
FPulseObjectiveHandle
Opaque handle returned by StartObjective. Use to retrieve or stop a specific objective.
FPulseSharedQuestPlayer
| Field | Description |
PlayerState | Associated APlayerState* |
ViewModels
| Class | Bound to | Key Fields |
UMVVMPulseQuestManager | UPulseQuestManager / APulseSharedQuestHost | ActiveQuests, ActiveObjectives, ManagerData |
UMVVMPulseQuest | UPulseQuestData | QuestTag, DisplayName, FinishState, ActiveObjectives |
UMVVMPulseObjective | UPulseQuestObjective | SaveID, FinishStatus, Progress |
UMVVMPulseQuestManagerData | UPulseQuestManagerData | Custom fields per subclass |
StateTree Schemas
| Schema | For |
UPulseQuestStateTreeSchema | Quest StateTree assets |
UPulseQuestDirectorStateTreeSchema | Director StateTree asset |
Function Library
UPulseQuestUtils
| Function | Description |
GetQuestManagerViewModel(Manager) | Get the MVVM ViewModel for a manager |
GetQuestDataViewModelByTag(Manager, Tag) | Get MVVM ViewModel for a quest by tag |
IsLocalQuestManager(Manager) | True if locally controlled |
IsAuthorityQuestManager(Manager) | True if server authority |
SerializeObjectToBytes(Object, OutBytes) | Serialize a UObject to a byte array |
DeserializeObjectFromBytes(Object, Bytes) | Restore a UObject from a byte array |
| Tag | Used when |
Pulse.Quest.Failure.QuestNotFound | StartQuest can’t find the quest in the set |
Pulse.Quest.Failure.InvalidQuest | StateTree on the quest is invalid or not compiled |
Pulse.Quest.Failure.DuplicateQuest | Quest with that tag is already active |
Pulse.Quest.Failure.AlreadyActive | Another quest is running and bAllowMultipleQuests = false |
Pulse.Quest.Save.Director | Key for director save bytes inside FPulseQuestSaveGame |
Pulse.Quest.Save.ManagerData | Key for manager data save bytes |