The Quest Builder is a powerful tool within the Unreal Engine that enables you to craft engaging, immersive, and dynamic quests for your players. This documentation is your comprehensive guide to mastering the Quest Builder, covering everything from the fundamentals of quest design to creating complex, branching storylines.
To get started, you can get the starter project here :
https://drive.google.com/file/d/1GSJxKYkLEJ9BOm4hNUSgmrTdr9FlR2N-/view?usp=drive_link
You can get the completed project demo that showcasing completed implemented feature of the plugin here:
https://drive.google.com/file/d/16jfVDpv9zpINoJ3aPwcuHExX8pk8XMV4/view?usp=sharing
Download Quest Builder Plugin from the Epic Marketplace and inside the Unreal Engine, enable the plugin by going to Edit→Plugins.
<aside> ❗ Note You can also add the plugin folder to the engine directories by going Program Files > Epic Games > UE_5.xx > Engine > Plugins > Marketplace It should look like this.
Or move it into your project's directories by going YourProject > Plugins (you may have to create this folder).
</aside>
To get started, you need to attach the Player Quest Component to your Player Controller as it will serve as a quest management system, allowing it to oversee and handle the player's quests. you can add this component by opening the player controller and add Player Quest Component to the components list.
This plugin is using Node Graph Editor to keep the information of the quest. you can create a new quest asset by right-clicking in the Content Drawer then select Quest Builder Editor.
Inside the editor, you will see 2 important tabs which is MyQuest, and QuestGraph.
MyQuest is where you can add new quest, edit and handle the quest property.
Simply click the add icon to create a new Quest Graph and you can also click on the quest graph button to see it’s detail on property panel.
Quest Graph is where you can build your quest using nodes. To create a node, you can do it by right-clicking the graph and choose the node you need.
<aside> ❗ Warning Avoid duplicating the Quest Asset, the id will be duplicated and you must set them manually as it will cause some issue to the system.
</aside>
This is how it looks like when you create a new Quest Graph in the property panel. there are some important things to set such as Quest ID, and Conditions.
Quest ID is self-explanatory. Every quest need to have an unique ID.
Description is going to show up on the quest log.
Rewards is the reward data you want to give to player.
Can Quest be Aborted is self-explanatory. Showing the abort button at the quest log.
Auto Activate Quest is to immediately Activate the quest after the condition met.
Condition is where you can set certain condition to only Unlock the quest. At this section, you can choose a condition from the plugin or using the custom condition.
For now, you can just enable the Auto Activate Quest.
<aside> ❗ Note
To rename the Quest ID and Node ID, you can only do it by right-clicking the quest graph on My Quest tab or press F2.
</aside>
In Quest Builder, quests are made of objective nodes and state nodes.
each quest will start from the root node, a sequence of objective nodes and will end with a state node (Complete/Fail).
In order for each node to do a branching , the Quest Builder uses a condition. Every node inside the graph except the root node will have a condition. Every time the node objective that has been completed, the system will check the children node condition.
<aside> ❗ Note The Condition will always prioritize to go for the children node that has a condition. if there is no condition at all, it will go to the first children node.
</aside>
Quest Builder comes with an Objective Node to handle all the task inside the node. You can add multiple task that must be completed by the player.
ID
Description
this variable will be used to show on the widget item.
Events
Blocks of code to run at the start or at the end of node.
Events (If Objective Failed)
Blocks of code to run if your objective node failed. ignoring the Event RunType
Conditions
Conditions to branch to this node.
In order to finish an objective, player are given a series of task that can be created for all kind of purpose. to create a task, you can do it by going to the editor toolbar and select the New Task button.
To add a task you created, simply by going to objective node → Tasks and add your own task.
Task has some default variable that you can use:
Description
this variable will be used to show on the widget item.
Hidden
this variable will hide this task information on the navigated widget. (Useful for the task you don’t want the player to see)
Optional
mark the task as optional and skip this task if the other non-optional task has been completed.
Objective Node
Return the objective node you created.
Also The task has some default function that you can use:
Task Begin (Override)
The first function to be called on your task. you can put some starting logic for the task.
Task Tick (Override)
On Task Completed (Override)
This function will be called when the task has been completed.
Complete Task
This function will mark that the task has been completed and notifies the objective node to be evaluated
Fail Objective
Task also can be used to fail an objective, it will notify the node and launch the Events (If Objective Failed).
<aside> ❗ Tips Task are not always meant to be completed, you can also make some specific task to fail the quest!!
For Example you can make a task with a parameter like this. The Task will Complete the objective and go to the next node if you finish The First Task, but will Fail the objective if you finish The Second Task.
Additionally after the objective node fail, you can use this event at the objective node.
</aside>
OnObjectiveFailed
this function will be called when the objective has failed.
Get Owning Controller
Get Quest Component
Get Owning Quest System
There are some template task that can help you get started:
Task Go To Location
this task will check if you have arrived at a certain destination.