UE5 Quest System
This page is part of the documentaiton for my UE5 Quest System

System Overview

UE5 Quest System Version: 2.0

    Actor Components

    Here is a breakdown of the main components found in the Blueprints/Components/ folder, inside these components you can find most of the processes and handlers for the quest system:

    Just a heads up, I plan to expand on this section of the documentation in the near future to include an outline of the public functions for these key actor components.
    AC_QuestSystem_PlayerController - This component handles player interactions, quest indicators and the UI (this is where you can get a reference to questHUD, which is the hud for the quest system, the UI_QuestSystem_HUD blueprint). We also use this component to attach the player state component (see next) as well as spawn the World Quest Helper if it is not detected in our level on initialization. This player controller component is the one we added to the player controller during installation.
    AC_QuestSystem_PlayerState - This component is responsible for everything related to managing quest data specific to the player. This component is added to your player state automatically by the AC_QuestSystem_PlayerController during initialization and also attempted (if needed) when your possessed pawn changes (for server travel).
    AC_QuestSystem_Actor - This component is responsible for managing objectives specific to the quest actor it is attached to. It will detect the player (from the server) and let them know they can interact with the actor, to either complete a Quest Objective or show a quest window. This component also handles completing the Travel To objective, as well as keeping track of which players should receive credit for Destroy Target objectives. This is the component the World Quest Helper adds to actors it detects in your world related to quests automatically during its actor scan and when manually checked in. This component will add a sphere collision to your actor to help assist in handling the overlap related tasks it is responsible for.
    AC_ReplicateActorTags - While this is not used by the system, it is there to help you if you need it. By default actor tags that are added dynamically at runtime don't replicate. Unfortunately we need these tags on the client for our indicators. If you are dynamically adding tags at runtime instead of embedding them into your blueprints, and you are not manually replicating them yourself you can add this component to the actor after adding your tags and it will handle replicating them to the client for you. Keep in mind this will enable replication on your actor if needed.

    Event Dispatchers

    The AC_QuestSystem_PlayerState component is where all the event dispatchers related to quest data and objectives can be found.

    For each player state event there is a matching event with the prefix UI_. In multiplayer the events with the UI_ prefix will only run on the client, whereas the ones without this prefix will only run on the server.

    In addition to the QuestRowName, each of these events will provide additional relevant data.


    PlayerState Event Dispatchers

    UI_QuestSystemLoaded - Called when the quest system is done loading. You can check the value of isQuestSystemLoaded? before using this event dispatcher to see if it is already loaded.
    UI_NoQuestsInLevel - Called when the quest system is done loading and no levels were found in the current level.
    UI_QuestAutoAccepted - Called when a quest is auto accepted, using the Quest Options Auto Accept Quest? setting.
    UI_QuestAutoCompleted - Called when a quest is auto completed, using the Quest Options Auto Complete Quest? setting.
    UI_QuestStateChanged - Called when a quest state changes.
    UI_QuestRepeatableReset - Called when a repeatable quest type resets.
    UI_QuestAbandoned - Called when a quest is abandoned (dropped by the player).
    UI_QuestObjectiveComplete - Called when a quest objective for the quest is completed.
    UI_QuestObjectiveCountChange - Called when a quest objective's count progress changes.
    UI_QuestActorIgnoreListUpdated - Called when a quest actor is added to the ignore list for the player.
    UI_QuestTurninMissingItems - Called when the player attempts to turn in items, for the turn in objective, but does not have all the required items.
    UI_QuestTrackingChanged - Called whenever the tracked quests change.

    PlayerController Event Dispatchers

    The AC_QuestSystem_PlayerController has a few more event dispatchers related to the UI side of quest interaction, and when a quest is shared. With the exception of InteractedWithSomething, these events are specific to the client only (only the UI_ version is available).

    UI_InteractedWithSomething - Called when the player interacts with something. This event is the only one on the controller that runs on both server and client, all other events below are client only.
    UI_TryingToInteract - Called (on the client only) when the player is trying to interact with something.
    UI_NothingToInteract - Called (on the client only) when the player attempts to interact but has nothing to interact with.
    UI_ShowInteractNotice - Called (on the client only) when the quest system detects a nearby interactable quest actor.
    UI_HideInteractNotice - Called (on the client only) when the quest system clears the currently detected interactable quest actor.
    UI_QuestShared - Called (on the client only) when a quest is shared. This is called on the client who is receiving the shared quest.

    Function Library

    The function library is very simple in this version. It includes just 3 functions:

    replicationError - A print string helper, used throughout the project to notify the developer if they are attempting to handle something from the client that should only be handled from the server in a multiplayer game.
    auditLoop - A function used to audit the speed of loops, this is only used when audit mode is enabled (see next function).
    isAuditMode? - False by default, but when true will run the audit loops and print string the results. The loops that are audited are related to actor scanning (on server) and indicator scanning (on client).

    Blueprint Interfaces

    There are a number of interfaces included with this system, most are used internally however BPI_Quest_Actor_Options and BPI_Quest_ConnectedSystems are intended for your use, and you can learn more about the actor one on the Quest Actors page, and the Connected Systems one on the Connected Systems page.

    Data Tables

    There is only one data table, DT_Quests, and it can be found in the Blueprints/Variables/DataTables folder. This data table is used to store all of our information about our quests. The structure for this data table F_Quest can be found in the Blueprints/Variables/Structures/ folder.

    A break down of each variable found in this table can be found on the How to Make a Quest page.

    Structures

    Structures can be found in the Blueprints/Variables/Structures/ folder.

    Enums

    Enumerations can be found in the Blueprints/Variables/Enums/ folder.

    WARNING: DO NOT DELETE OR MOVE ITEMS AROUND IN THE PROVIDED ENUMS!

    THE UE5 EDITOR IS SENSITIVE AND WILL BREAK THINGS SAVED LIKE VALUES IN VARIABLES AND DATA IN THE DATA TABLE. IF THERE IS SOMETHING YOU DON'T PLAN ON USING IN ONE OF THESE ENUMS JUST IGNORE IT.

    UIs

    All UIs for this quest system can be found in the UIs/ folder. A break down of each UI can be found on the User Interfaces page.

    This documentation and asset version are new. If you encounter any bugs or if anything doesn't make sense, please let me know.