• Register
Post news Report RSS Working on Enemy AI

Writing my own XML-based behavior tree system for enemy AI

Posted by on

Small Update 23-June-2017


Hello!

So I decided that I will now concentrate on designing/implementing enemy AI.
Combat is a key feature of a Top Down Shooter, so I clearly need to make sure encounters are challenging and colorful. I'm getting lots of inspiration from Doom and its very chesslike approach:

What can we learn from Doom | Game Maker's Toolkit


I brainstormed different enemy types way back and now I'm glad I wrote that down well. So for different enemy types, I need to create distinguishable and rather predictable behavior patterns in order to enable the player to "dance the choreography".


Implementing behavior trees

Currently I am preparing the very basis for my AI systems. One thing for sure is I want to use behavior trees to design the AI which is a pretty common standard for game AI nowadays.

At my dayjob, I got the chance to design AI using Opsive's Behavior Designer extensivly before. However, after some back and forth I now decided that I want to implement my own behavior tree system for my game. I love the behavior designer, but at work I ended up implementing most of the nodes I need by myself anyways. What I really want is a system that is more light-weight, integrates easily and does just and only what I want it to do.

So I just started implementing the basis yesterday night, and it's already looking quite good. Made all the base nodes like composites, conditions, decorators and the behavior tree component ticking its tree.
Next, I will look into serialization. I'm most likely going to design and serialize using XML - did this before and I think it is very straightforward. I estimate it'll take me a week or so until I have the first basic enemy up and running using my system.

Already excited to come back to you with footage of my experiments :-)

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: