Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

caphhe

3
Posts
5
Followers
1
Following
A member registered Mar 26, 2020

Creator of

Recent community posts

I totally understand that building a new graph system is scary and a big time investment. There are also some assetstore/git packages that do similar things to our system you could check out.
In case you have any more questions on our approach, just ask away.

I just noticed that I missed the core of your question, because I thought it was explained in the article:
We have node players that take the data of a node and do something with it. For example the dialog node player takes  the text and the character stored in the dialog node data and spawns a speech bubble with the text.

The players are called as a coroutine by a big loop. 

Quick Pseudo code:

IEnumerator PlayQuest (stratNodeData) {

var nextNodeData = startNodeData;

while (nextNodeData != null){

      var nodePlayer = GetNodePlayerByNodeDataType (nextNodeData);

     yield return nodePlaye.PlayNode(nextNodeData);

     nextNodeData = nodePlayer.GetNextNode(nextNodeData); // returns null if nothing is connected

}

}

Hi,

that's a good question. We have bools as exposed properties, that can be set with a node in the quest flow. Those bools can either be local to the quest or global. Global bools have a simple scriptableobject (SO) as reference. So any script that has a reference to the SO can lookup the current value of the bool in our model. The model stores a dictionary from SO to bool value. 

We don't use those bools very often to manipulate gameobjects. Their main purpose is to store progress in quests and allow us to check the progress in quest A from quest B by checking the bools of quest A with a condition node. It can also be set from other scripts to change the quest flow. For example whether the player has done something or pressed a button in the tutorial.

A different option to manipulate a scene from a quest is to have a node that does specifically what you want. We have emotion nodes for example, that play a emotion animation on a given character. Or for special tutorial stuff we have a node where we can select a enum value in the node and the node player calls a function depending on the enum value. This function can then do anything in the scene. 


I hope this helps you. If you still have questions just ask here or join our discord.