Aeonix 3D Navigation New tools & Bug Hunting
- Details
- Category: About
Highlighting some more new tools and improvements in AeonixNavigation:
- Fixed various performance issues with debug line rendering in the editor
- Adjusted pathfinding heuristic calculations to allow balancing between Euclidean & Velocity methods
- Added batch testing actor for visualizing large batches of pathfinds
- Fixed octree visualisation rendering so you can view the voxel structure in the editor again
The batch testing actor has been useful, it's already found a bug where for some reason the pathfinder is able to find a way through a seemingly solid wall of voxels. I will need to dive into adding some more visualisation of the octree link structure and inspect the pathfinding exploration code to find out what's happening.
A short video covering these below :
Aeonix Navigation Feature Update
- Details
- Category: About
I've been putting some feature enhancements into my 3D navigation system for Unreal. Aside from usual maintenance (compatibility with 5.6) there are some nice new debugging and path optimisation features included, such as:
- Debug actors which provide realtime visualiation of a path between them
- Various minor tweaks to debugging UI
- Addition of the 'Velocity' A* heuristic which tends to avoid sharp turns, and makes generally more pleasing paths
I've recorded a short video covering some of the main improvements to path optimisation:
More updates to come!
Graduate/Junior Programmers - How To Prep For An Interview
- Details
- Category: Blog
Following up on my previous article about how to get an interview for graduate or junior programming positions, this article will provide some insight on what you can expect at an interview.
This has to have a large caveat, that interview experiences can vary massively depending on the studio, and the interviewers, but I can give some general information based on my experiences having done this at several companies, but bear in mind, this is much more a personal take on my part. Your experience can and will vary.
By this stage, it's likely you will have completed a technical programming test, and I will have reviewed your submission before the interview and taken notes. I'll also have looked through your portfolio and jotted down a few things to quiz you on.
First up, try and relax (easy to say, I know). If you do get nervous and a bit flustered, it's totally fine to ask for a moment to compose yourself and reset. Have a bottle of water to take a pause with. As a hiring manager, I am very aware that the interview environment is NOT the same as a work environment. I have personally hired someone that had quite a meltdown in interview, but I could see it was nerves and they were otherwise a strong candidate. I will take the pressure into account.
You're not going to have much work experience, so we won't spend much time on your CV. I'm not hugely interested in any of your non-games experience or part time jobs, but anything that shows me you can work in a team environment is a positive.
I will start asking questions of your coding test/portfolio code. I'll treat it like any other code review and if I see things I don't agree with, I'll ask why you've done things the way you have to try and get an understanding of your thinking. I'll also pick out things in your code that I think are really good, and make sure that you know why it's good. I will figure out quite quickly if you've cheated and used AI to generate your submissions 😉
It's hard to put a comprehensive list together, but some fundamentals I'll want to establish you understand in C++
- Scope and lifetime of objects and members
- Constructors and destructors
- Stack vs heap allocation
- Common containers (vector, map, list etc.)
- Strings and issues related to use of them
- Alignment and padding
There are some relevant topics that you can get bonus points for demonstrating an understanding of, such as:
- For Unreal roles, understanding the problems of using lots of blueprints and/or object ticks, and strategies to mitigate them
- An understanding of object-oriented vs data-oriented programming
- Tools and methods for finding and fixing a framerate hitch
For graduates, I'll ask about your group projects. I'm not going to focus on your individual contributions, but will ask some questions about your experience of working in a team environment. This is where you can quite easily get yourself in the 'No' pile. Game development is a difficult profession, and needs lots of people to work together in a highly pressured and dynamic environment, so the ability to play nice with other people is absolutely non-negotiable. Launching into a rant about how other people weren't pulling their weight or otherwise having a moan is not going to score you points. I will probe you on challenges you faced working in a group environment, but what I'm really interested in is how you responded and how you resolved the situation.
Depending on timings, I'll put a few general tech question to you, about game engines, recent games, cool tech etc. A warning here, arrogance is an extremely undesirable character trait in anyone, but especially in programmers, and even more so in very inexperienced programmers. Giving me your confident assertion that feature X in engine Y or game Z is garbage because you did something better in a uni module or tech demo, is not going to go down well.
Lastly, I'll always finish with giving you an opportunity to ask questions. Make sure you have a few, it looks very poor to not even have a couple written down, as though you've not bothered to prep.
UESVON Is No More - Introducing Aeonix Navigation
- Details
- Category: Unrealengine
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.
Page 1 of 25