On a previous blog post, I detailed some ongoing work I was doing to tidy up UESVON, the sparse voxel octree 3D navigation system I created for Unreal. It's been 8 years (yikes) since I created it, and while functional, it was quite rudimentary and a long way from being production ready.
Since departing Ubisoft I've embarked on a big cleanup and refactor of the plugin, and even toyed with the idea of really investing in it with a view to licensing it, but ultimately decided I'm happy to just have it out there for people to use for free and as a portfolio piece for myself. Anyway, it had always bugged me how much I get nagged for not using pascal case module names (because of the acronym), so I started from scratch with a new name, Aeonix Navigation (thanks ChatGPT).
Aside from the underlying algorithms and generation code, I have completely rewritten the entire architecture of the system. Rather than being quite Actor centric before, it's now all driven by a central World Subsystem that manages navigable volumes and agents in the world. Basically everything has been rewritten with an extra 8 years of engineering experience applied to it. Some key items :
- Central Subsystem to manage all volumes and agents
- Reworked async pathfinding system
- Volumes and agents are represented in Mass as entities
- New debugging tools including dummy editor actors for testing and visualising pathfinding
- New heuristic parameters
- New path optimisations
I have a little more work to do before this initial feature set is complete, then I will make the repository public.
You'll notice I have created a system to handle interchange between Actor and Mass entities, this currently does not expose any new functionality, but will enable utilisation of efficient ECS patterns for future functionality such as steering behaviours and avoidance.