Adventure

About


Adventure is a dynamic, fast, customizable quest editor with entire Blueprint API and C++ support. No quest is too complex to create.


It works in multiplayer by default and was used in Outpost: Glacier.


Soon going to be published in the marketplace. Currently working on documentation & polish.


Github Repository

About the Graph


The Adventure graph takes a scripting approach to the quest creation process. Adventure can handle both simple and very advanced quests with unlimited different endings.


Adventure makes it easy to create branching quests with your project's API.

Blueprint & C++ API


The whole graph has Blueprint support. The developer can create a basic generic quest class and then make child quests that populate the parent with information.


The plugin exposes a lot to Blueprint, so you don't need to write a line of C++. If you want to create your quests in C++, that is also supported.


You can even expose variables for when you start a new quest for more dynamic results, as seen in the image above.


Simple quest with objectives

Branching quest with different endings

Adventure Tasks


Adventure Tasks is a separate module responsible for making latent nodes for Blueprint, related to Adventure.


They are the core of the quest editor and make it much faster to iterate and prototype complex quests.


Any developer with C++ experience can add custom Adventure Tasks by creating a new class derived from UAdventureTask.


The developer can choose if they should only be callable within the quest editor or anywhere in Blueprint.


For example, adding objectives to an Adventure is an Adventure Task. Adding objectives is easy and intuitive. You can add both singles and multiples. You can even switch the node's input to an array, as seen below.

Name & GameplayTag Support


Each objective has an argument to identify itself to the Adventure system. The plugin supports both FName & Gameplay Tag as an argument.


By default, the plugin uses FName for arguments. To use Gameplay Tag as an argument, you have to set "Use Gameplay Tag As Default" to true in the Adventure Settings in project settings, and all the nodes will switch to using Gameplay Tag instead.

You now need to update objectives with this function

Shared & Private Quests Support


Adventure supports both shared and private quests. They're split into two components for multiplayer, but it doesn't matter which one you choose in local co-op.


Example of a shared quest: Kill the dragon

Example of a private quest: Eat food to regenerate hunger.


The shared component shares the quests with all clients and is recommended to place on the Game State. In contrast, the private one shares quests with the component's owner and should be placed on the Player State.

Save & Load Support


Save and load the player's progress in just two nodes. It also saves any variables marked as SaveGame inside your quests and Adventure Component.


And as with everything else, it works in multiplayer! You can choose between storing it on the server, or client.


If you choose a client, the plugin will help you to send the save file to the server, and apply the save file.


If you need to save some extra variables, make a child of AdventureSaveObject and assign the class in the plugin's settings in project settings, and do as the image below to save.