Quest Indicators
UE5 Quest System Version: 2.0What are Quest Indicators?
Quest indicators are used to inform the player about Quest Actors (actors relevant to their quests). These actors may include those where quests are started from, completed, or used as quest objectives.
When a relevant quest actor is detected near the player (based on settings), an indicator mesh is displayed above the actor. The color and mesh of this indicator symbolizes the Quest State, the Quest Type or the Quest Objective type.
Quest indicators are controlled (specifically on the client side in multiplayer) through the AC_QuestSystem_PlayerController component. These indicators undergo re-evaluation at a frequency determined by the indicator scan speed you define on the AC_QuestSystem_PlayerControllercomponent attached to your player controller (see Settings below).
During each re-evaluation, a scan is conducted for relevant actors associated with each active quest. An active quest is one where the Quest State is either Available, In Progress, or Ready to Turn In). If an actor is detected and within the player's range (also a configurable setting), the corresponding indicator is displayed. To maintain performance, the system also handles the removal of indicators that are out of range of the player.
It's important to note that this indicator scan operates independently of the scan that searches for new quest-related actors in your level (handled in the World Quest Helper blueprint on the server), as well as the scan used to check for newly available quests based on prerequisites (this one is handled inside the AC_QuestSystem_PlayerState).
Most Common Questions
There are a number of moving parts for our quest indicator.
For both Quest & Objective Indicators ...
- Make sure you actually set the tag in both your data table, and your actor. For accept at use QuestAcceptAt, for complete at use QuestCompleteAt. For objectives use the Tag TargetData.
- If you set any quest prerequisites, they may be stopping it from showing.
- Make sure your indicator distance settings on the AC_QuestSystem_PlayerController are properly set to show the indicator within the distance you are expecting.
- If you made changes to the meshes or materials of indicators you should reevaluate your changes in the BP_Quest_Indicator.
- If you can see the indicator in singleplayer but not in multiplayer and you are manually adding tags at runtime, see the next question.
For Objective Indicators ...
- If you are using the Require Previous objective options make sure your previous objective are actually completed.
- Check the objective prerequisites to see if one is keeping the objective from being available.
- Check the Objective Options and make sure you did not enable the Hide Indicator.
- If you are not using a custom objective indicator, make sure the field for custom indicator is empty.
If you manually add / change your actor tags at runtime and you can see them in singleplayer but not in multiplayer then this means your actor tags are not replicating to the client. By default actor tags do not replicate (I don't know why).
If you are adding them manually at runtime and running into this issue you should first consider embedding them in to your blueprint actor instead, this way they will be available on the clients.
If this is not an option you can alternatively use a little helper component I included called AC_ReplicateActorTags which you can add to your actor after adding your tags, and it will handle replicating them for you. You should only use this as a last resort, if you absolutely can not add the tags to the blueprint. You can find this component in the Blueprints/Components/ folder.
You are also going to need to re-check in your actor (or use the rescan features) after each change of your tags.
If you see the indicator but the actor is not acting like a Quest Actor (where you can't interact with it or it does not give credit), then this means your actor did not check in with the Quest World Helper, which is how they are associated with quests. We go over how to check in an actor on the Quest Actors page.
If you do not check in your actor you can alternatively use the rescanning options. For accept and complete at actors the rescan option can be found in the Quest Options section. For quest objectives the rescan option can be found in the Objective Options.
These rescanning options are expensive to use, so you should use them sparingly (or not at all). Instead of using rescanning I recommend instead calling the checkInActor on the Quest World Helper for the highest level of performance (learn more about checking in on the quest actors page.). This has the exact same effect but instead of the quest system constantly searching for new actors, you are just telling the quest system about the new actor when it is spawned.
Indicator Settings
Go to the AC_QuestSystem_PlayerControllercomponent you attached to your player controller and look at the Quest System Configuration area in the details panel. We already covered what each setting does in the Configuration part of the Installation chapter, but let's go over the settings related to indicators again:
Indicator Static Meshes
Open the BP_Quest_Indicator blueprint, found in the Blueprints/QuestIndicators folder. From here you can change the static meshes used for quest indicators. This is handled through 3 different variables depending on the use case:
To understand how these variables are applied, check out the RefreshIndicatorStyle function inside of this blueprint.
Indicator Materials (Colors)
In the BP_Quest_Indicator blueprint, which you'll find in the Blueprints/QuestIndicators/ folder, the getQuestTheme function determines the materials for the static meshes of the indicators. When you open this function, you'll see the use of map variables to implement various color themes, which are chosen based on the quest's state and type through switch and select nodes. If you want to customize the colors and create your own styles, you can copy one of the existing style variables, modify the materials, and then integrate your new variable into the appropriate place within this function.
You will find the following themes included: goldTheme is used to style Main Story and Side Quest indicators when the quest is not in progress, silverTheme serves as the in-progress material used for all quest types, redTheme is for Failed Quest States, blueTheme indicates Repeatable Quests, and greenTheme is used for the Unique Quests.
The theme used is mainly based on the quest's state, with considerable overlap across different quest types. For instance, all 'Ready to Turn In' states use the Gold Theme, while all 'Failed' states use the Red Theme.
In the case of objectives, the theme is determined within the refreshIndicatorStyle function, where we apply colors based on the quest type. For example, objectives for repeatable quests are blue, and those for unique quests are green.
Animations
There are 3 animation modes which control how the animation is played, if played at all. The animation mode is a setting we configure on the AC_QuestSystem_PlayerControllercomponent. The 3 included animation modes are:
Animation Profile
The animation effect that is played is determined based on the state of the quest. You can change which effects are used by modifying the QuestStateAnimations variable found in the BP_Quest_Indicator blueprint. Each key in this map is the state, and the value is the animation's profile.
The animation profile provides options to customize the animation effect. When you choose the Timeline animation mode, you can use all these settings. However, if you select the Timer animation mode, some settings won't apply. If a setting is exclusive to the Timeline animation mode, it will be noted below. Here's a list of the available options for each of your animation profiles:
Objective Indicator Override
Each objective can also have its own custom Objective Indicator, a feature available through the Quest Objective Options. This should be reserved for special occasions and used sparingly. Overuse can hurt the player ueser experience (less is more).
Actor Specific Indicator Overrides
The BPI_Quest_ActorOptions, when added to your actor, offers the ability to provide a location, rotation, and scale additive, giving you more control on the positioning and visibility of the quest indicators shown on that specific actor. We go over this in the Quest Actors section (next chapter).