Responsibilities

  • Research StateTrees

  • Create a research document of all my findings

  • Create and plan for the tutorial videos

  • Create EnemyBossTemplate as the end goal for the series

  • Create bossfight using my own template and release this as a build

  • —-

The project

The Research

My last year at BUas I chose to do a selfstudy project. I wanted to research and learn all about StateTrees; the new Unreal Engine AI system. At first the project was meant to be a boss fight template and nothing more. However, after having created this template the part I was proud of was my research and my document. Not the actual template. So, the project pivoted. It would no longer be a template to put on FAB, but instead a beginner guide for everything StateTree. While also providing a document a lot more in-depth for anyone that wants to dive deeper.

  • Unreal is well known for not having great documentation especially on newer features. So when I started out trying to use StateTrees I turned to YouTube and Blogs to find as much as possible. Quickly realizing that most of the information on StateTrees out there was outdated. I took this opportunity to learn this beatiful feature myself from scratch and share my findings with other developers. In a way providing something I wish I would have had at the start.

About my work

Since Metal Gear Solid V has factions of enemies I decided to create these as well. This let me create a “Free For All” gunfight with different enemies. I made enemies join my team as NPC allies and made full on 5v5 battles between them. It was something I decided to add later, but it was really useful to study my written behaviour as a spectator while 2 or more enemies fought each other.

This way of testing my behaviour, by being a spectator on the outside while all these NPC’s were running around doing all they can was incredibly valuable. It made testing new behaviour easier and improved my testing process a lot.

Since this project was supposed to become a template that could hypothetically be sold on the Unreal Market Place. Easy to use, modularity and clean code were all very important. This caused me to learn a lot of good habits when it comes to blueprinting and making sure everything is neat and organized at all times. I commented all my code, wrote descriptions for all variables and kept all my variables organized in categories.

Take-Aways

This was the first time I got to make any enemies with actual behaviour. So, this was the first time I looked into systems like behaviour trees and EQS.

Behaviour Trees: The main place for all your behaviour and It is a perfect place to work in. I quickly started using “sub behaviour trees” By making some logic that is reused often in its own separate behaviour tree and then calling that logic from within other behaviour trees. This caused me to work a lot faster when creating new versions of enemies and helped with keeping the behaviour tree clean and readable. I also used Behaviour Tree “Tasks”, “Decorators” and “Services”. These let me have more control over my behaviour tree and tweak the behaviour more towards my wanted player experience.

Environment Query System: Or “EQS” is very customizable system that lets an actor ask where to go based on certain tests. This can be perfect for very specific behaviour, but when set up poorly can be very heavy for performance. This EQS can be used in a behaviour tree to create possible locations and you can then even choose if it chooses the best solution always or maybe one out of the top 5% for example, creating some more organic decisions at times.

Interfaces: I also started integrating Interfaces in my code. I spent some time learning and really understanding them. I tried to use interfaces for as much as I could and keep the whole project incredibly modular.

Technical Designer

Sept 2025 - July 2026

Solo project

Unreal Engine 5.7, Miro, Perforce