API Reference

Table of Contents

  1. Interfaces
    1. IPulseQuestManagerInterface
    2. IPulseQuestSaveInterface
    3. IPulseSharedQuestPlayerInterface
  2. Core Classes
    1. UPulseQuestManager
    2. APulseSharedQuestHost
    3. UPulseQuest
    4. UPulseQuestSet
    5. UPulseQuestData
    6. UPulseQuestManagerData
    7. UPulseQuestObjective
    8. UPulseObjectiveTask
    9. UPulseQuestDirector
    10. UPulseQuestStateTreeDirector
    11. UPulseQuestInstance
  3. Enumerations
    1. EPulseQuestFinishResult
    2. EPulseObjectiveCompletionStatus
    3. EPulseObjectiveNetMode
    4. EPulseQuestDirectorState
    5. EPulseQuestFlags (bitmask)
  4. Structs
    1. FPulseQuestAddParams
    2. FPulseQuestObjectiveAddParams
    3. FPulseQuestSaveGame
    4. FPulseQuestSaveRecord
    5. FPulseObjectiveSaveRecord
    6. FPulseObjectiveHandle
    7. FPulseSharedQuestPlayer
  5. ViewModels
  6. StateTree Schemas
  7. Function Library
    1. UPulseQuestUtils
  8. 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

Gameplay Tags (Built-in)

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

Back to top

Copyright © 2026 LuQ Studios. Distributed under the MIT License.

This site uses Just the Docs, a documentation theme for Jekyll.