Quest System Pro
Quest System Pro is an extremely flexible quest, achievement and dialogue / conversation trees system.
Quests (can) consist of multiple tasks. Each task can be progressed through the built-in components, your own code, or using a FSM like PlayMaker. Using this, you can create ANY type of quest.
Quests can have a set of tasks. These tasks can be defined in an editor (WIP)
Set up dialogue conversations
Realtime debugging and editing
Create conditions. Example: You can only use the conversation tree below IF you have an active quest (all set up using editors). (The red box is the edge condition, it will show a red box if the conditions aren’t met and green if they’re met).
Which will look like this:
The UI can be completely modified to your liking and new nodes can be added to create your own behaviors, just in case you want to do something unique
There’s also a more traditional quest window for the RPG fans
(UI Will be improved…)
By default there are the following quest types:
Gather quests
Delivery quests
Discovery quests
Kill quests
Talk quests
Escort quests
User input (example: Enter a password phrase)
Timed quests (set a time limit to quest will auto. be cancelled if you run out of time).
Or any of these combinations. A quest can have any number of tasks and each task can be set separately.
API:
Interfaces, generics and polymorphic types are serialized, using this you can create restrictions based on your own game. For example, maybe you only want the user to be able to start a quest IF they’re the right level. Using the following code you can do so
public class MyPlayerCondition : IEdgeCondition
{
public int minimalLevel = 3; // You can assign this in the custom inspectors.
/// <summary>
/// Can the end node this edge is pointing to be seen (viewed by player)?
/// </summary>
public bool CanViewEndNode()
{
return CanUse();
}
/// <summary>
/// Can this edge be used? If not it's action will become inactive.
/// </summary>
public bool CanUse()
{
return MyPlayer.level >= minimalLevel;
}
/// <summary>
/// A short string visualizing the intent of this condition.
/// </summary>
public string FormattedString()
{
if(CanUse() == false)
{
return "Your player level is to low";
}
return string.Empty;
}
}
Integrations
Already done:
Inventory Pro
PlayMaker
Rewired input
SALSA (lip sync) (V0.2)
Easy Save 2 (V0.2)
Love/Hate (V1.0)
LipSync (pro) (V1.0.1)
Certain:
Behavior Designer
Maybe (somewhat likely)
The Dialogue system
Node Canvas
(Feel free to suggest more :p)
Maybe - To look into
ICE Creature Control
Third Person Controller Template (Invector)
Cinema Director
On the TODO List:
- Update UI visuals
- More inventory Pro combination examples
- Sci-FI UI Design
- More dialogue camera control (crossfade, movement, interpolation, etc) - 3rd party asset
If you have any questions let me know