MarZ Rising will have a 20 level single player campaign and we are currently working on our end level *yay*! Mission 20 will take some time, because it is a bit more complex due to our story.
Regarding the story part we needed an easy but non destructive way to implement ingame scripting and dialogs in each level. So in this post I’d like to give you some details about implementing our story by developing our own tool Flowreactor.
Flowreactor started as a simple node tool to test some dialog stuff, but ended up being a very flexible tool in which we actually can create behaviour trees, state machines, dialog trees etc. It is very intuitive to use: Create node classes and connect them. A node class can perform any action you’d like. It’s like creating a component class in unity with the option to move on to another class after it is finished.
For MarZ Rising I mainly use it as an ingame sequencing tool for dialogs and tutorials: If user reaches a certain point in game, do an action, wait some time, do another action and so forth.
So you may ask, why I didn’t use one of the available node editor / visual scripting / behaviour tools? Well, I always want to stay flexible in terms of bug fixing and I like to keep things clean and simple. Most of the tools I tested were bloated with features I didn’t need, were too complex or just too restrictive. The fact I really dislike is that you need 10 nodes to do something very simple which could be achieved with 5 lines of code.
In Flowreactor nodes have only one input but they can have multiple outputs. There’s no input for any sort of properties. The properties are defined in the node class itself and can then be accessed in the inspector just like a normal component in Unity. Global properties can be accessed by a blackboard. Flowreactor supports serial or parallel sequencing. And thanks to generics, it’s possible to send values to the next node directly which can be further processed afterwards. This way the canvas remains very clean and tidy. For MarZ Rising I have created a set of nodes which are very specific for the game, so they fit exactly into the current workflow.
It’s very fascinating how flexible Unity is in terms of creating your own tools, which can absolutely speed up your productivity. We plan to release Flowreactor as an asset in the Unity Asset Store. But it will need some time for polishing first to make a complete product out of it. Time, we want to invest in our game first ;)