Nice to have quality of life changes

DirtyHippy

New member
Note: 2018.4.13

1) Fix tooltips so they don't get clipped on the left side. This happens on both my primary and secondary monitor.

1577593073422.png

2) Remember the location in an external tree (in each tree) that you were last looking at rather than resetting to the default position if you inspect something else and then come back.

3) Add bookmarks for large trees. Right now I use external trees even for things that aren't reusable simply because it makes it easy to jump right to the subset I want when editing. It would be nice at run-time for these to work too somehow. It gets very tedious debugging behaviour trees and having to scroll each time to where you want to look especially for larger trees with hundreds of nodes.

4) Add free-form commenting to the trees including changing the font size (so I could put, for example, a larger header next to each subtree so when I am debugging the full tree I can look at the headers as I try to find what I am looking for).

5) Add comment frame (i.e. let me drag a box out around a subset of functionality so I can frame it). No need to worry about nested nodes in that frame (and moving them with it). Just something simple for framing commenting or logical boundaries.

6) I would love the ability to add a comment for tree variables - basically just some meta in case I forgot what it was used for.

7) Move the shared variable tasks out of the "Unity" category. This is just an opinionated nitpick. They aren't unity specific tasks. They are behaviour designer specific tasks. I search most of the time anyway so for me it doesn't matter much.

8) I've wished several times I could run a node before a conditional abort pulls me out of a subtree. Some kind of reset that allows me to say "oh, I'm being aborted, I better do some stuff before I bail out to reset my state". I can envision how aborts are implemented, and I know this isn't how the tree logic works. But still - it would be pretty sweet.

9) Layout is weird. I'm guessing there are issues with pixel rounding, but if you are zoomed out it doesn't give you as much granularity placing nodes as when zoomed in which can lead to weird inconsistencies (unless you do all node placement fully zoomed in, which I have gotten into the habit of doing).

In any event, excellent tool. Really clean and powerful!
 

Justin

Administrator
Staff member
Thanks for posting this! I am currently working on version 2 of Behavior Designer and some of these I already had on my list :) I've added the other ones!
 

DirtyHippy

New member
Two more:

1) Show if a variable is not used in the tree in the variable list (with the red icon you use now for nodes with shared variable mappings that were removed). As trees get large this gets more important as sometimes you don't even remember who uses the variable or why it exists. The workaround is you can delete the variable - and see which nodes show an error - and then revert in source control but clearly this is not ideal.

2) Some way of searching on node types. I.e. if you want to delete a task node's source because you don't need it anymore - or rename it - whatever, you need to see if you use that node anywhere first. I'm assuming I could write an editor script to do this, but it would be nice to be able to see if a node is even being used. Maybe have a search box and highlight the nodes if found (and probably show a count - so on big trees if it is 0 you don't have to scroll through it looking for nodes manually).
 

DirtyHippy

New member
Another:

Specify conditional abort status triggers that cause an abort. I.e. by default aborts trigger whenever status changes from success -> failure and vice versa. Sometimes you might want to trigger an abort only when it goes from false to true (or true to false). Basically three choices -> both (default - as it is now), changed to success, changed to failure.
 

Tanman555

New member
This past week, I've really started getting familiar with Behavior Designer, and loving how easy it is to manage states in my game. I've already ported a few of my character systems to use Behavior Designer, and my Behavior Tree is already getting out of control.

BlueSillyPants BehaviorScreenshot 2.png


This is only a fraction of the functionality I want to add to my characters. I know you can create external BTs and reference them in another BT. But everytime the game plays, the external gets lazily loaded and all the nodes fall right on top of each other with no organization at all. So I prefer to put everything in one tree.

And the only way to navigation through trees is by holding down the middle mouse button, which gets pretty uncomfortable when navigating to the bottom of my targeting functionality.


I'd like to propose a few solutions. First thing is you should allow users the flexibility to modify the input keys. Not everyone is comfortable navigating with the middle mouse button.


Second, I'd like to be able to create comments by selecting a group of nodes, and pressing C (similar to NodeCanvas)


Third, I'd like the option to keep behavior tree reference nodes collapsed, so it doesn't clutter the main behavior tree. Maybe also allow the option to only navigate to the reference tree (without showing all the other nodes), so I can focus on a small part of the tree logic easier.

I've also like a way to group nodes in a Behavior Tree into a local reusable macro. This could allow users to simplify their code without having to create external behavior trees and recreating variables they'll need. Maybe users could create local variables inside these macros, similar to methods in visual scripting solutions.

I know you are working hard on Behavior Designer 2, hopefully you'll have these features in mind when you are recreating the Editor in UI Elements. If you could find a way to put these features into the current version of Behavior Designer, that would make this asset a lot better.
 
Last edited:

Tanman555

New member
I just created another thread with similar feature requests. There should be the option to minimize External Behavior Tree References at runtime (when debugging) and only jump to that portion of the behavior tree if you desire (maybe double clicking or a navigate to button). NodeCanvas already has those free form comments that you mentioned. BD should also have these, because they make large pieces of code much easier to conceptualize. I'd also like the option to navigate trees with the right mouse button instead of the middle mouse button.
 

Justin

Administrator
Staff member
I'd like to propose a few solutions. First thing is you should allow users the flexibility to modify the input keys. Not everyone is comfortable navigating with the middle mouse button.
On the top right of the editor there is a preferences button which you can change the function of the middle mouse button so it scrolls the graph view instead of zooming. From your other post it looks like you want the right click to pan - in that case would you not have any of the original right click functionality?

Second, I'd like to be able to create comments by selecting a group of nodes, and pressing C (similar to NodeCanvas)
This is definitely one that I plan on adding to version 2.

Third, I'd like the option to keep behavior tree reference nodes collapsed, so it doesn't clutter the main behavior tree. Maybe also allow the option to only navigate to the reference tree (without showing all the other nodes), so I can focus on a small part of the tree logic easier.
If you collapse the behavior tree reference task it'll keep the children collapsed when the external tree loads.

I've also like a way to group nodes in a Behavior Tree into a local reusable macro. This could allow users to simplify their code without having to create external behavior trees and recreating variables they'll need. Maybe users could create local variables inside these macros, similar to methods in visual scripting solutions.
So are you thinking sort of have a separate root note that you can then reference from within the main tree?
 

Justin

Administrator
Staff member
I just created another thread with similar feature requests. There should be the option to minimize External Behavior Tree References at runtime (when debugging) and only jump to that portion of the behavior tree if you desire (maybe double clicking or a navigate to button). NodeCanvas already has those free form comments that you mentioned. BD should also have these, because they make large pieces of code much easier to conceptualize. I'd also like the option to navigate trees with the right mouse button instead of the middle mouse button.
Merging threads to make it easier to find.
 

Tanman555

New member
On the top right of the editor there is a preferences button which you can change the function of the middle mouse button so it scrolls the graph view instead of zooming. From your other post it looks like you want the right click to pan - in that case would you not have any of the original right click functionality?
That's nice, but my mouse scroll wheel currently doesn't work. I definitely need a new mouse.

I currently have to press and hold the middle mouse button to scroll, and it gets pretty tedious when I have a large graph. Not to mention there's no zoom in/out button in the panel, or any other way to scroll (like using alt+right mouse button+moving mouse up or down). The functionality you mentioned for the right mouse can easily be replaced by the search functionality (space) and the task menu. It would be nice to be able to bind that functionality with another key. I'm a big fan of customization. But I'd prefer scrolling with the right mouse button over the middle button any day.

This is definitely one that I plan on adding to version 2.
Awesome!

If you collapse the behavior tree reference task it'll keep the children collapsed when the external tree loads.
Yes I've tried this, and the child nodes that are loaded into the tree are indeed minimized. But when I un-minimize the node, I see the same problem I mentioned. The nodes are lazily placed on top of other nodes in my tree with no organization at all. This makes debugging a hassle. I'd much rather be able to jump into the external behavior tree, similar to how I can double click the behavior tree reference node and instantly jump into that specific tree. I'd like to be able to debug a game, and have the same functionality, with the external behavior reference being the only tree I see if I select it.

So are you thinking sort of have a separate root note that you can then reference from within the main tree?
Possibly. Blueprints in Unreal Engine 4 allows the user to take a portion of nodes in a graph, and create a function out of it. This minimizes all the nodes into a function, where you can view the code by double clicking on the function node. You can view all the functions in your graph on the left panel, and you can even create local variables and pass parameters, just like traditional programming.

I'd like to see Behavior Designer have a similar programming paradigm, whether it's called functions, methods, macros, or simply external behaviors. It would be a separate root node, but it wouldn't exist in the same graph as the main entry point. You would double click on the macro on a side panel, and the separate root node would load into view, with the main root node being in a separate tab or window.

I know you can just create external behavior trees and reference them, but it's not the same. You have to recreate the variables, and the external tree nodes are loaded into the main graph on play. All the external logic should be inside it's own graph viewport, where you can jump in and out of the graph without having the main graph getting in the way.
 

DirtyHippy

New member
...I know you can create external BTs and reference them in another BT. But everytime the game plays, the external gets lazily loaded and all the nodes fall right on top of each other with no organization at all. So I prefer to put everything in one tree.
In my post above I mention I use external BTs. What you mention is the downside of using them. Layout is awful. Basically what I do is sometimes I do a pass at layout and spread stuff out, hit play, see what still overlaps, and spread it out more, which is tedious. That being said, I am not sure how Justin could fix this. Autolayout would probably be a hard problem, and it might confuse things.

I have also re-used several external trees within the same BT now - which has been very useful. For large trees I have found flow control hard at times and I have had to use multiple external tree references to make it work. The downside is that external trees are basically just "copied" into the main tree on construction (I assume) or lazy loaded and are not really a first class reusable concept. But it is faaaar better than copy and pasting the same tree multiple places :)
 

Tanman555

New member
In my post above I mention I use external BTs. What you mention is the downside of using them. Layout is awful. Basically what I do is sometimes I do a pass at layout and spread stuff out, hit play, see what still overlaps, and spread it out more, which is tedious. That being said, I am not sure how Justin could fix this. Autolayout would probably be a hard problem, and it might confuse things.
I've recently converted my large BT into several smaller external BTs, and I have to spread out the BT reference nodes like you mentioned. I think auto-layout would be a good idea, but I do understand how it would be confusing.

1) Show if a variable is not used in the tree in the variable list (with the red icon you use now for nodes with shared variable mappings that were removed). As trees get large this gets more important as sometimes you don't even remember who uses the variable or why it exists. The workaround is you can delete the variable - and see which nodes show an error - and then revert in source control but clearly this is not ideal.
There should be a find all references button for every blackboard variable. My tree is getting so large that I'm starting to have a hard time finding where I'm using my variables. This would make life much easier.

I've also experience a weird bug with Unity 2019.3 where clicking on a blackboard variable won't expand the menu options. I'll sometimes create a temporary variable, and then the variable menu will expand as normal. Hopefully this will get fixed.
 
Top