Agents Navigation
High performance, modular and scalable navigation for agents.
This package includes high performance, modular and scalable navigation for agents. It is developed with DOTS in mind. As a result, it takes advantage of Unity's latest technology stack, like SIMD mathematics, Jobs, Burst compiler and EntityComponentSystem. Additionally, there is hybrid mode support that enables using it with GameObjects in Object Oriented Programming.
Pillars of this package:
- Seamless Unity Integration: Harmoniously integrates with existing Unity technology, supporting both mono and dots.
- Intuitive and Streamlined UX: Offers a clean and simple user experience tailored for perfect alignment with Unity.
- Optimized Performance Out of the Box: Ensures default high performance through parallelized and optimized code.
- Employs a multi-layered API, facilitating low-level interactions.Clear Code Architecture: Adheres to clean coding practices with a clear architecture.
- Scalable and Modular Codebase: Built with scalability and modularity in mind, allowing easy extension with minimal package changes.
What navigation features are contained in this package?
- Unity NavMesh multithreaded support 3D
- Avoidance 2D/3D
- Flocking (Alignment, Cohesion) 3D
- Separation 2D/3D
- Collision 2D/3D
Can I use this in non ECS/Dots code?
Yes, there is a hybrid workflow where Game Object are synced with Entities. This allow to use this package in Object Oriented Programming too. Of course, it should be expected that performance going to be slightly worse.
Can I use it with ECS?
Yes, this package uses ECS.
What game genres this navigation targets?
This package was developed as a foundation for any navigation needs. However, this early version is currently focused on 3D/2D RTS, Moba, RPG, Shooter style genre games navigation.
Can I extend functionality?
Yes, the package was designed in mind that it could be extended as every game has unique needs for AI navigation. This solution is very modular and allows trivial adding/removing of existing behaviors. However, to extend functionality efficiently, you will need to have knowledge of ECS.
Can I use this package with other pathing solutions (etc. A* Pathfinding Project Pro, AnyPath)?
The solution in this package is very modular, so users can extend it to use different solutions without needing to modify this package. There are plans in the future to do collaboration with other pathing packages.
Can I use this for crowd flow?
Yes and no. As currently there is no implementation of motion fields/vectors, which usually produces the best results for huge crowds. However, current navigation also produces smooth motion in big groups. In the future, I plan to add motion fields.
Is it deterministic?
All systems are running in fixed update. In theory, it should be deterministic for Intel/AMD platforms (Burst). However, it still uses floats for navigation operations, which will not produce deterministic code across all the platforms. In the future, I plan to address this by introducing fixed point types.
How does this package differ from Local Avoidance?
This is a new version of local avoidance. It is a separate package as it contains a much bigger scope than just avoidance, but full navigation (etc. global pathing, boids, collisions...). For those who have a Local Avoidance package, they can do a paid upgrade instead of paying full price.
Dependencies
- Minimum Unity 2022.3
- Package com.unity.entities
Technical details
- Agents Navigation
- Unity NavMesh support
- Scenarios - contains small isolated test scenes that showcases some common navigation behaviors (etc. circle, hallway, group ...)
- Mass - stress test scene where thousands of agents are spawned and navigate through static and dynamic obstacles.
- Zerg - small subset of RTS game. With some common controls like smart stop, attack, follow, combat...