Implementation
1 - Initialization
1.1 - Call init function Firstly, call "Init Modular Quest System" function from the default subsystem (you can also create your Own Subsystem), at the begin play for exemple, but you'll need to give a reference to your save, so make sure to init save before. Returns true if system has been initialized properly. |
1.2 - Be careful ⚠️You'll need to use the same subsystem as the one you initialized. |
2 - Use your own savegame object
2.1 - Add Interface Add Interface "ModularQuestsInterface" to your savegame object. |
2.2 - Override save function
Double click on "Save Quest" function to implement it (this is a function from the BPI). |
2.3 - Promote to variable Right click on SaveData -> "Promote to Variable" (this is the variable where quests data will be stored). |
2.4 - Override load function Double click on "Load Quests" function to implement it. |
2.5 - Use quest's variable Use the promoted variable of quest saves as return value. |
Quests
1 - How to create a quest
1.1 - Create a Primary Quest Right click in content browser, select Modular Quests -> Primary Quest. |
1.2 - Select quest class Choose your base class for this quest. You can create your Own Quest Type or use basic one. |
1.3 - Quest Name & Description Optional, can be used for widget or something else.
|
1.4 - Quest steps Each Steps of your quest. You can use default one or create yours if you need more accessibility (like doing something on step initialization, on tick, ...). 4 Events available:
|
1.5 - Quest rewards Each Rewards of you quest. Given when whole quest in completed. 1 Event available:
|
2 - Unlock Quest & Events
2.1 - Unlock Quest Returns true if unlocked, false otherwiser. Fails if quest is already unlocked. |
2.2 - On Quest Unlocked Triggers when a new quest is unlocked. Returns quest's Data Asset reference. |
2.3 - On Quest Fail Triggers when FailQuest (Fail Action) is called, or when Fail Quest is called. Returns quest's Data Asset reference.
|
2.4 - On Quest Step Finished Triggers when a step has been validated (with validation objective or with auto validation). Returns quest's Data Asset reference and the index of the validated step. |
2.5 - On Quest Finished Triggers when all steps of the quest are validated. Returns quest's Data Asset reference. |
3 - Functions
3.1 - Getters Getter functions used to get quest infos entered in the Quest. |
3.2 - Helpers "Get Step at Index" is basically a get array from getter "Get Quest Steps", but it's more... compact. |
Quest Type
How to create your own Quest Type
1 - Create a Quest Type Right click in content browser, select Modular Quests -> Quest Type. |
2 - Do your stuff You can now implement your logic. Event Initialize is called when quest is unlocked. |
3 - Your Quest Type as Primary Quest Class You can now select your new Quest Type as Primary Quest Class!
|
Steps
1 - How to create & use a quest step
1.1 - Create Step Right click in content browser, select Modular Quests -> Step. |
1.2 - Do your stuff You can now implement your logic.
|
1.3 - Select Step Type By default, Modular Quests Step is selected. You can use it if you don't need custom logic inside step. |
1.4 - Custom variables Any variable you created inside your custom Step Type will be displayed here. You can override its defaults on each steps. |
1.5 - Step Name & Description Optional, can be used for widget or something else. |
1.6 - Tick interval If checked, Event Tick will triggers each "Tick Interval" or each tick if Tick Interval <= 0. If unchecked, Tick will not triggers. |
1.7 - Step Objectives Each Objectives of your quest. Required Objectives Count to Validate Step:
4 Events available:
|
1.8 - Validation Objective Same as Objectives. If checked, selected Validation Objective will be used for step validation. Auto validates instead. 4 Events available:
|
1.9 - Step Rewards Each Rewards of this step. Given when this step in completed. 1 Event available:
|
1.10 - Fail Actions Each Fail Actions of this step. Triggered when this step fails (when FailStep is called). 1 Event available:
|
2 - Functions
2.1 - Getters Getter functions used to get step infos entered in the Quest. |
2.2 - Helpers Returns the size of corresponding array. |
Objectives
1 - How to create & use a step objective
1.1 - Create Step Right click in content browser, select Modular Quests -> Step. |
1.2 - Do your stuff You can now implement your logic. Call SetIsSuccess to update objective success state.
|
1.3 - System functions Main function is SetIsSuccess. You must call it so the system can handle step validation.
💡For exemple, you can test on the tick if GetPlayerCharacter->GetActorLocation is nearly equal to a custom vector variable with an interval specified on a custom float variable. Call SetIsSuccess to the value of this test. Inside Primary Quest, you can use this objective module multiple times in differents steps (and/or different quests) with different values! And tadaa! This objective will succeeded when your player reach specified position! |
1.4 - Select Objective Type You can use your objectives Types in Step Objectives aswell as Validation Objective. 1.5 - Custom variables Any variable you created inside your Objective Type will be displayed here. You can override its defaults on each objectives. 1.6 - Objective Name & Description Optional, can be used for widget or something else.
1.7 - Tick interval If checked, Event Tick will triggers each "Tick Interval" or each tick if Tick Interval <= 0. If unchecked, Tick will not triggers. |
2 - Getters
Getter functions used to get objective infos entered in the Primary Quest or get the current objective progress count. |
Rewards
1 - How to create & use a quest reward
1.1 - Create Reward Right click in content browser, select Modular Quests -> Reward. |
1.2 - Do your stuff You can now implement your logic.
|
1.3 - Select Reward Type Can be used for Quest rewards as well as Step rewards. |
1.4 - Custom variables Any variable you created inside your custom Reward Type will be displayed here. You can override its defaults on each rewards. |
Fail Actions
1 - How to create & use a quest Fail Action
1.1 - Create Reward Right click in content browser, select Modular Quests -> Fail Action. |
1.2 - Do your stuff You can now implement your logic.
|
1.3 - Select Reward Type Action called when step fails. There are 2 pre-created fail actions:
|
1.4 - Custom variables Any variable you created inside your custom Fail Action Type will be displayed here. You can override its defaults on each fail action. |
Quest Subsystem
How to create your own Quest Subsystem
1 - Create a Quest Subsystem Right click in content browser, select Modular Quests -> Quest Subsystem. |
2 - Events You have many events that will help you realize your desires. |
3 - Accessibility You can now access the subsystem from anywhere. |
4 - Function You can also get your subsystem by class like so. Output pin type will autmatically match input class pin. |