Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411423 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 18, 2024, 11:58:23 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)owl-bt : behavior tree editor
Pages: [1]
Print
Author Topic: owl-bt : behavior tree editor  (Read 3787 times)
cepnox
Level 0
***



View Profile
« on: April 26, 2017, 10:34:35 AM »

Hi, today we have released our editor for behavior trees as open-source. You can check it out here.

It has been inspired by Unreal engine behavior trees in a way, that it supports special node items like decorators and services. This makes trees smaller and much more readable.

We are using it for our game Tendril: Echo Received, where it is used to define behaviors for NPCs.

For example with following tree:



We define, that NPC should move between points on its patrol path. On each point, it must wait for 2-2.5 sec. If it spots the player, it must wait for a short time before losing all its wits and start panicking.

And it looks like this:




Tree items



  • Node - represents a single task that can be executed at once or in multiple ticks. Composite nodes may contain child nodes.
  • Decorator - node sub item, that guards access to its node and transforms node's return value.
    • It is possible to mark decorator as periodic - represents, that the decorator should be reevaluated each tick, if its node is on the execution path.
  • Service - node sub item, that executes a specific task at given times, if its node is on the execution path.

Features
  • Automatic layout - In order to focus only on content creation, there is no option for manually layout the tree. Tree is laid out automatically
  • Keyboard control - Almost entire tree can be created and edited using just keyboard. owl-bt contains command palette as in Sumblime Text. It can be accessed through ctrl+shift+p



  • Hot project reload - each change to project file is instantly updated in running editor instance. Therefore it is easy to define or update node items without reloading tree, that is currently being edited.



  • Undo/redo - owl-bt supports undo/redo for all actions
  • Json format - trees and project are stored as simple json files, which makes it easy to integrate with more or less any game engine
« Last Edit: April 26, 2017, 11:00:00 AM by cepnox » Logged

Zireael
Level 4
****


View Profile
« Reply #1 on: April 27, 2017, 08:47:41 AM »

Wow, looks awesome, I'll probably try to use it in my projects.
Logged
Photon
Level 4
****


View Profile
« Reply #2 on: May 01, 2017, 01:21:19 PM »

Interesting. Most of my experience up to this point has been with FSM's, but I can see some of the benefits to doing things this way; I may have to experiment with this methodology in future projects. Looks like a nice tool.
Logged
PypeBros
Level 0
***


Simplest, but not Simpler


View Profile WWW
« Reply #3 on: May 04, 2017, 11:55:11 AM »


A bit surprising that the drop-down boxes cover so much of the current solution. I have the feeling that it would distract me a lot.
Logged

qMopey
Level 6
*


View Profile WWW
« Reply #4 on: May 04, 2017, 12:31:28 PM »

Looks very fancy! This might not be the kind of feedback you were hoping for, but I personally don't know what npm is. Also the idea of storing trees in external data is nice, but what if I wanted to hard-code trees and set them up at run-time? Like a statically allocated struct or data table? And where is the source? Maybe that install command downloads and builds the source? It would be pretty cool to read it on github though. And if source isn't available it does make it a big risk for anyone to use it. What if there's a feature that needs to be added, or a modification?
Logged
cepnox
Level 0
***



View Profile
« Reply #5 on: May 05, 2017, 10:10:02 AM »

Hi,

A bit surprising that the drop-down boxes cover so much of the current solution. I have the feeling that it would distract me a lot.
owl-bt runs in web browser and workspace area is defined by your browser window size.
Picture contains only small portion of screen in order to decrease size of the gif. Also there is option to zoom-in/out.

Looks very fancy! This might not be the kind of feedback you were hoping for, but I personally don't know what npm is. Also the idea of storing trees in external data is nice, but what if I wanted to hard-code trees and set them up at run-time? Like a statically allocated struct or data table? And where is the source? Maybe that install command downloads and builds the source? It would be pretty cool to read it on github though. And if source isn't available it does make it a big risk for anyone to use it. What if there's a feature that needs to be added, or a modification?
Npm is package manager for NodeJS based solutions (NodeJS makes it possible to run JavaScript outside of your browser - for instance you are able to create a whole web service in it).
Npm is used to install owl-bt on your machine. Source code for owl-bt is of course accessible on github here.
owl-bt is only editor so if you want to hardcode your trees in code, it will not provide you any benefits.
Runtime for behavior trees, that I`m using in our game is not currently open sourced, because it is currently to much tightly coupled with rest of code.
Maybe in future I will clean it up and I will release it also.
But in reality to develop runtime for behavior trees is much easier task, then develop editor for it.
Logged

qMopey
Level 6
*


View Profile WWW
« Reply #6 on: May 05, 2017, 10:23:07 AM »

owl-bt is only editor so if you want to hardcode your trees in code, it will not provide you any benefits.

Cool you posted source. Looks good at generating json, so I imagine modifying to output a struct initializer would be straight forward Smiley
Logged
cepnox
Level 0
***



View Profile
« Reply #7 on: May 05, 2017, 10:37:50 AM »

Cool you posted source. Looks good at generating json, so I imagine modifying to output a struct initializer would be straight forward Smiley
Yeah sure. For instance, I`m using it in MonoGame, where json is transformed into a runtime representation during content compilation and then serialized into binary (MonoGame/Xna) XNB format.
For game prototype in Unity, I have created importer, that has created whole tree from json as a ScriptableObject (each node was in fact ScriptableObject) and then saved as asset.
Logged

cepnox
Level 0
***



View Profile
« Reply #8 on: March 14, 2018, 02:02:52 PM »

We have released a new version of Owl-bt

1.1

- Add support for tree item type inheritance - see base and isAbstract properties in project definition
- Add support to override tree item type color
- Add support to remove items from MRU list
- Add support to modify tree before save and after load through plugins
- Prevent save of tree when current node item has validation errors in property editor
- Add support for custom property types
- Add item color to new item selection dialog
- Add item palette side panel
- Make side panels collapsible

Logged

Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic