This website is still under construction.


Navmesh (Navigation Mesh) is special mesh which is not rendered but used to walk on. It may also be used for Collisions. I also wrote about generating navmesh and their analysis. For both articles, I used Dust II map from Counter-Strike 1.6. You can also look at Navigation Manual from Unity3D, Navigation Meshes from Valve or Navigation Mesh Reference from Unreal Engine 3 (Unreal Engine 4 version is in more pages).

Basic Principle

Navmesh covers all walkable surfaces. In most cases it has distance from obstacles for characters to not collide with walls / objects when anywhere on the mesh. The mesh does not need to be horizontal but can be rotated. For example stairs are replaced by single rotated mesh.

Layers

Navmesh can also have multiple layers. Those layers are used for different terrain type, preferred places to walk over... Or whenever you need to be crouched or not.

Jumping

Jumping can be done in 2 ways. Edge Jumping and Surface Jumping. Difference is only in from what you jump and on what you land. You can either jump from/to edge or from part of surface. If you have big navmesh, I recommend you to use Edge Jumping because for Surface Jumping you need to split surface into smaller parts (because you cannot jump from/to whole big surface) which will decrease your performance.

Ladders

Ladders can be made as Jumping with special flag but we can also create Point-to-Point connection which will be marked as a ladder (separated layer) which will add precision (otherwise we will use very short edge).

Wall Climbing

For climbing seen in Assassin's Creed (and many other games), we can use modified navmesh too. We will not be walking on any surface which means we can skip surfaces and use only edges which are connected by shared vertices or by (Edge-to-Edge) jump connection.