I have been trying to use a FSM – BT hybrid for my AI. Basically, the FSM is the topmost decision-making Layer, and the BT’s are everything else. It has been so fun, and this asset is probably the best one for the job, considering the way the blackboards are implemented, and how you can use conditions both for FSM transitions and BT conditions. And the Actions are interchangeable as well. Just a great piece of design overall. And the SubBehaviourTree nodes are a key part of it, of course.
There’s just one problem: it gets kind of claustrophobic when you are debugging a Sub-Tree, which could be transitioned out of at any moment, and when it gets transitioned out of you can’t know what is going on outside of it unless you exit to an upper graph, but now you gotta enter another into another Sub-Tree, but by the time you got here a bunch of things already happened… All of that gets even worse if those Sub-Trees have their own Sub-Trees and so on. Basically, what I’m trying to say is it’s hard to get a full picture of what’s going on with just one window. An option to “Open sub-graph in new window” would be an absolute lifesaver. It doesn’t even need to be a fully-featured window, just something I can dock and take a look at when I’m interested in what’s going on in Sub-Tree X or another window for Sub-Tree Y.
Again, absolutely love the asset, just think this might bring the workflow to a higher level.
Thank you very much for your kind words and I am glad you find the workflow fits this design. Having an FSM root and sub-BTs within is also my favorite way of organizing graphs as well. Would something like a new type of an “overview” editor window (instead of a fully featured graph editor) be adequate? Something more in similarity to how the minimap looks for example (maybe slightly more informative). This way it will be lightweight and not take up resources by having multiple such type of overview windows open.
Let me know what you think.
Join us on Discord: https://discord.gg/97q2Rjh
I don’t think it’s necessary for the overview window to be a fully featured graph editor. The only necessary controls I can think of are zoom and pan. I’ve been thinking about this feature, and I imagined it working like this:
If you have an FSM owner with an asset FSM attached, and the FSM has sub-behaviour trees A and B, you could open one of them using breadcrumb navigation and then somehow create a new window to watch that sub-graph. Now, at runtime, that window would display the state of the nodes in that sub-graph for the currently selected graph owner, and if you change the selected graph owner, that window would display the same sub-graph, but for the new graph owner(who might have other nodes running). So you can debug any agent in the same way. Now, this raises an issue: what if you select a graph owner that doesn’t have the same FSM asset attached? Maybe display a message in the window that the currently selected graph isn’t appropriate? That seems a bit specific to that kind of workflow.
Another variant would be a window that displays the currently active sub-graph(if any) of the currently selected graph. So you could just select the FSM owner and see the BT that is currently relevant. But that is also quite specific to the workflow that the two of us are using. Also, what if multiple sub-graphs are currently active?
Let me know what you think about these ideas. How would you approach these problems?
When it comes to the GUI I would like it to look the same as in the main graph editor, for consistency’s sake and also because the graphs in the canvas window look absolutely beautiful. This is the most aesthetically pleasing tool in the Asset Store, even above Amplify shader editor. I just want to plaster my whole screen with different graphs. IMO, it looks better than a lot of the 2D and 3D assets in the store too. 🙂 I do understand your concern with performance though, and I can respect it. I would like it to present more information than the minimap(overriding the info property has been really handy for making the graphs more readable, so at least displaying that would be nice). Whatever design decision you make, I trust that it will be a good one, considering your work so far.
Also, If you don’t mind me asking a bonus question in the same thread:
Do you have any experiences in the industry that have inspired you to create such a practical and well-designed tool?
Hello again and sorry for the late reply!
Thank you for the information and suggestions. Indeed making this kind of automated (picking sub-graphs) rises questions and potential problems. Initially, I was thinking about some button in the GraphEditor toolbar for example, that let us manually click it and open the current graph of the editor in a separate minimal “overview” window, and that we would of course be able to open as many such “overview” windows as we would like and they would stay open until we manually close them. This would let us have multiple overview graphs open that are not necessarily sub-graph, but could rather be simply different graphs.
Another idea is for the “overview” windows to contain all sub-graphs altogether like a super minimap, even though I am afraid that would be way to cluttered 🙂 In either case, I will start creating something along those lines and maybe some other new idea pops up!
Way back, I used to work in some small game studios as well as my own never-released games and the inspiration for the tools mostly stems from what I would have liked to have back then 🙂
Join us on Discord: https://discord.gg/97q2Rjh
I like those ideas! The super minimap sounds especially ambitious, but I agree that it might end up quite messy in the end.
Thanks and good luck with creating it!