Hi all,
So I’ve been working on this tool for a very long time, it’s slowly approaching completion. Just a few more small features to implement around actors and formulas. I wont go into detail about the aim of the tool but I’ll just say it’s not another RPG centric game tool.
Anyway onto why I am here.
Having used several asset store plugins in the past for visual programming I found that 1 is not enough, I find my myself using several different tools when doing everything in code, FSM + BT and in some cases flow’s come in handy (ie. event driven programming).
So I have implemented all 3 in my new tool however I’m having a hard time deciding how the blackboard system should really work. Right now my tool only shows the black board if you have prefab or scene object with a (bt/fsm/flow) controller attached to it that has the blackboard component. This has it’s drawbacks though because you can nest Flows and FSM’s in the BT and you can even execute BT’s from Flows.
So in reality if you select a component that has a BT + nested FSM in it when you navigate to the FSM tab all you wont be able to select from the blackboard dropdown instead you have to type the values in. This does not break anything because once the FSM is attached those inputs turn into drop downs and you can even click a button to generate any missing variables for the blackboard after you import an FSM or Flow.
My idea was to only enable Flow by default in the editor then you right click and import a BT or FSM and you can use a flow event to trigger those. This way there would be much less confusion, this would look like the below outline:
Flow → BT → FSM
Flow → FSM
Flow can execute a BT and BT can execute FSM’s
Flow can also execute an FSM
BT and FSM can not import and execute Flows
Some screen shots:
This is a flow, there are many entry points like keyboard/update/fixedupdate/lateupdate/events and many more.
the idea is you use one of those to execute an FSM or BT, FSM and BT’s are of course re-usable, they are separate scriptable objects.
This is an FSM, They have entry and optional exit points for auto disabling an FSM or when nested in a BT let the BT know that the FSM has finished running. The transitions are conditions and can be stateful or conditional, you set these up by clicking on them.
This is a behaviour tree, as you can see I have a parallel composite that is driving several FSM’s at the same time.
This is what you see when you double click on an FSM or Flow inside the BT, it drills into it and you can edit and select variables from the blackboard, this is where keeping them as separate tabs in the tool breaks down, in this tab I can select the variables because a BT Controller + Blackboard is attached to a prefab, however if I go to the FSM Trees tab and select the Player Shooting FSM those variable drop downs will turn into text, which again breaks nothing because I can create an FSM controller, add this FSM to it and click a button and all the blackboard entries will be generated for me, however I’m not a big fan of this.
Here you can see the variable turns back into a string…
Your idea’s and input would be appreciated
I’d like to get this tool done, I’m so close now… I have a working demo etc all the graphs work well just a few more things to get done then it’s docs and tutorials.
Thanks













