Oliver Thomas

C++ Programmer

6DOF Navmesh Week 0 - Initial Planning | Oliver Thomas

6DOF Navmesh Week 0 - Initial Planning

May 21, 2023

Hello, and welcome to my blog! Over the next eleven weeks, I will be utilizing this space to share development diaries about my upcoming project: a 6DOF navmesh for the Unreal Engine.

The Goal

The primary goal for this project is to satisfy a need for my capstone team. In our upcoming game, Project Phoenix, we have several different enemy types, including floating enemies. Initial discussions on the AI’s movement suggested we simplify the enemy’s movement, but that would create an enemy players found less engaging. Our game environments contain ruined walls and scattered debris a floating-type AI should be able to traverse. To ensure the quality of our game, I’ve decided to take on the challenge of creating a 6DOF navmesh to allow for complex enemy movement.

To ensure this system functions in a production environment, I am adhering to a few constraints. Firstly, my capstone team has many enemy types with diverse movement behaviors, such as walking and jumping. My navmesh system will either need to accommodate these types of movements, or integrate with Unreal’s built-in navmesh. Additionally, the game also contains environmental hazards, such as fire and steam, that modify the navmesh. My navmesh should be modified in the same way by these hazards. As a stretch goal, I aim to accommodate jumping AI without the need for nav links. Project Phoenix includes very few dynamic obstacles, but as a secondary stretch goal, I would like to include support for them.

Beyond being a useful system for my capstone team, I hope for this project to aid in my own personal development. I plan on investing extra effort into optimizations by looking into octrees and multithreading. Additionally, I will be improving my 3D math skills by creating the final pathfinding algorithm my navmesh will utilize.

Schedule

This project will span eleven weeks, which I intend to break down as follows:

Week 1 (05/22 - 05/28): Navmesh Generation and Representation

Week 2 (05/29 - 06/03): Navmesh Modifiers and Minor Testing

Week 3 (06/05 - 06/11): Dynamic Obstacle Handling

Week 4 (06/12 - 06/18): Pathfinding Algorithm

Week 5 (06/19 - 06/25): Jumping AI

Week 6-7 (06/26 - 07/09): Testing, Iteration, and Refinement

Week 8 (07/10 - 07/16): Large Scale Refinement

Week 9 (07/17 - 07/23): Optimization

Week 10 (07/24 - 07/30): Documentation

Week 11 (07/31 - 08/04): Upload to Unreal

Conclusion

I am looking forward to not only creating a system my capstone team will be able to utilize to improve the quality of our game, but to improving my optimization and 3D math skills. Thank you for reading, and I look forward to sharing my progress next week!