Behaviour trees : why Key Values and Objects?


  • Why are the blackboards/BT using key values instead of actual variables ???..

I have been turning this upside down, this seems to be a totaly useless but yet confusing and teadious paradigm implemented there

  • Why on earth does the BT only support a few Class types ? Why not all available classes like when making blueprints castings ?

especialy if you end up selecting the Class in “Base Class” dropdown just under the “Key Type” drop down ? why is there some sort of blind variable handover (with Object class) that needs to be fixed afterward

the polish lead AI programmer (forgot his name) and his explanation wes quiet confusing

can someone explain this to me ?


Whole point of behavioral trees is that they can be instanced (i think about 200 is kind of soft limit where engine starts misbehaving). So those things are done for speed and performance. Every time you instance reall class, you need to allocate memory for all variables etc. This can take time. I am guessing now but BT allocates memory in one chunk per instance. Thats why those keys are probably just offsets in allocated memory, instead of real variables. When you have that you need some way of telling engine where to look, thus variable keys and all that weird names.

And yes BTs are confusing.

But you can always make your own service blueprints, and process all you need there before feeding to bt.

that dont make much sense, no matter the language, casting is casting, if there is one instance, and pointers to point at them, then no need to add an extra abstraction level in between especialy if it concerns string comparison like in the case of passing a key name instead of the actual value, … that said I havent seen the code so maybe you’re right…

I think the lack of clear documentation is the main issue anyway… but I found some nice people making great videos from time to time