Week 4 Reflection

On Monday I implemented a simple C++ AI with a behavior tree, and, at long last, the performance of these AIs is better than any of my previous attempts. C++ Behavior Trees are the way forwards. [Besides, it's about time I had an Unreal C++ piece on my portfolio!]

The rest of this week was spent mostly on writing the paper, as I'd gotten a bit behind on that front, and implementing some more of the airport & behaviors.

Week 3 Reflection

This week I planned to work on writing the paper, but changed course entirely on Wednesday.

I decided I’d postponed trying to fix the terrible performance for long enough, and thoroughly examined it. So fare, I've been using Unreal Blueprints and a FSM. I attempted to implement a C++ FSM in Unreal, but that didn't help performance at all.

Next week I will spend 2 days trying to fix the performance issues. Monday I will start from scratch once more, and implement the AIs using Unreal C++ Behavior Trees, and if that performs poorly as well, I'll spend Tuesday trying to implement the AIs in Unity.

If both prove fruitless, so be it, it’s time to move on, and focus on making something presentable.

Week 2 Reflection

This week the specifics of the project were finally defined. It took longer than I would’ve liked, but it’s important to not just launch in head-first, and to consider your options. The paper will focus on comparing GOAP, FSMs and Behavior Trees, each of them has benefits in certain situations. The paper will compare them and describe which of them is the best fit for the implementation, and potentially how it was implemented in Unreal. [For instance, GOAP and FSMs have no default implementation, while Behavior Trees do.]

Week 1 Reflection

The goal of this project will be to compare different options of making a crowd AI. The case study will be a Airport Simulation in which AIs find their way through the airport, they check in, go through security, head to the correct gate, and along the way find a seat to sit down for a while or go and buy something at a shop.

This week I worked on getting a good angle for this project; I was convinced I found a good angle, Menge.

Menge is an external library made for making Crowd Simulation easy. The developers made a Unity "implementation“. Sadly however, this implementation is very basic; you can’t add obstacles at runtime, and you can’t spawn more AIs at will; everything needs to be pre-defined in an XML file, this includes every vertex of every obstacle. You can't just place an obstacle in the Unity editor.

On top of that, the “documentation” is near non-existent. On the bright side, the paper about Menge, and crowd simulation as a whole, will still prove helpful. I looked for different plugins for crowd simulation in Unity, but found none that were free. I expanded my search to things other than Unity, but still found barely anything.

I did find some sources referencing Unreal’s out-of-the-box AIs, so I decided to look into those and test their boundaries; it seems this might be the best choice, and if it turns out Unreal’s Detour-Crowd-AIs aren’t up to snuff either, I’ll have to make my own AIs from scratch, but so far they seem sufficient.