Post

As part of the enemy code rewrite, I've been working on a Behavior Tree system. Combined with our Timeline, it can be very versatile. These tools make complex behaviors a lot easier for us to manage, and will help modders create new enemy types. 1/X #screenshotsaturday

This window is the Timeline Editor. Timelines have various 'tracks', allowing timed events to be synchronized. For example, if a hitbox needs to activate for part of an animation, we can use an Animation Track and Activation Track, and line them up, as seen below. 2/X

And this is the behavior tree - the brain of the enemy. To decide what an enemy should do next, we start on the left side of the tree, asking our root node (highlighted red) to run and give us a result. 3/X

Selectors try to 'select' the first successful node - they run all their children top-to-bottom, until one Succeeds. Sequences try to run all their children in sequence - if one fails, the sequence stops and returns Fail. If we reach a Timeline node, we play that timeline! (e.g colored path) 4/X

1 repost41 likes

These systems alone can represent very complex enemy behaviors, without having to write any custom code. They are also decoupled from the ULTRAKILL codebase, so in the long term we hope to make them widely available for others to use in Unity. Anyway! Thanks for reading! 🍅