Posts

Week 10 - Thief Implementation, Chaser Improvements and A Feeling of Progress

Image
Week ten was busy, my primary two contributions to the project being the third and final monster implementation - the thief, and a revision of the chaser to make it feel more up to standards with what I now felt acceptable. This was all wildly successful as the thief now behaves just as intended, and the chaser behaves more naturally - with refined animations making use of montages and animation blending. I can confidently say that I have improved a substantial amount at creating game AI from the start of this project and that I now feel up to standards for getting an AI programming job in the industry.

Week 9 - Drop-In/Drop-Out Bot Replacement System

Image
This week I devised and implemented a drop-in/drop-out system where a player can leave the game and a bot will take control of their character and where a player can join the game and will take control over a bot. This was a challenging week as I implemented this twice, the first time being wildly less efficient than the second but that is just a testament to what happens when you learn something new. Even still, I’m proud of my work this week as the transition between player/bot is seamless and seems robust.

Week 8 - Player Haunt Behaviours

Image
In the eighth week, I developed the player bot behaviour trees for both if they’re the innocent player and the traitorous player. This was relatively easy due to the architecture I had implemented in the previous week - which was a nice reinforcement to my thinking I am getting to a proficient level of game AI programming. Also this week, I implemented the functionality for the bots to drop items they pick up at the feet of any actual players. If they’re innocent that is, otherwise they will hog all the items they find.

Week 7 - Injectable Behaviour Tree Architecture

Image
Back to game AI, I implemented the injectable player bot behaviour tree architecture which I devised a few weeks prior. This went well as utilising Unreals dynamic sub-tree functionality allowed me to create a system where various behaviour trees could be swapped in and out at any time. This means when a haunt is selected mid-game - the AI can get its behaviour tree updated to react and behave accordingly. Another bonus is due to this system's modular nature - if multiple people are working on different bot behaviours, as long as they’re not on the same tree they won’t have conflicts.

Week 6 - Detour from AI: Engine Tool

Image
The sixth week has been a bit of a detour from my previous weeks as I took a break from working on the AI, and opted to work on a tool to help us configure haunts easier. My reasoning behind this is that, while I do enjoy working on AI, I also like working on actual engine functionality - and this allowed me to learn how to edit Unreal and create tools at an engine module level. Thus giving me vital experience towards becoming an engine programmer.

Week 5 - Player Bot Interactions

Image
  This week I refocused back to the player bots, integrating the functionality for them to interact with items that may appear in their line of sight which was now possible as player interactions were now implemented. I am starting to feel like I have a solid grasp on creating game AI in Unreal and feel like I am filling the shoes of an AI programmer nicely.

Week 4 - FSMs and Why Behaviour Trees Are Better

Image
In the fourth week, I developed the second monster to be implemented - the mauler. This was interesting as instead of using Unreal’s provided behaviour tree decision-making system, I decided to implement a custom FSM structure as I wanted to get more experience with alternate decision-making solutions. That being said, whilst I did achieve this - I will probably revise the mauler at some point to use a behaviour tree as ultimately I have learnt the behaviour tree is preferable as it’s more modular and the game AI feels less rigid in how it acts with one