Runtime Architecture
The runtime architecture of Gameware Navigation is composed of two conceptual layers: the toolbox layer and the pathfollowing layer.
The toolbox layer
The toolbox layer is centered around the navigation data you have created for your
game level.
It contains:
- Tools for loading and unloading your NavData at runtime that enforce consistency and
automatically stitch together adjacent sectors whenever necessary.
- Dynamic WorldElements that are spatialized into the static NavData. Some of these elements may also modify
the static NavMesh on the fly, re-triangulating it to reflect their presence. For
example, dynamic or destructible obstacles can effectively remove areas of the NavMesh,
making characters unable to traverse them. Similarly, TagVolumes can exclude areas of the NavMesh, or can tag them with custom data.
- A system of high-performance spatial queries that you can run against the NavData
you have loaded, to find out qualities of the terrain such as whether a clear path
exists between two positions, or how far a given position is from the edge of the
navigable area.
- An integrated remote visual debugging framework that you can use to send data to the
Navigation Lab for visualization.
The pathfollowing layer
The path finding and path following system, centered around the Bot class, relies in large part on the services provided by the toolbox layer.
For example, the query system is typically used to compute paths for your characters,
and it is used while following paths in order to check whether or not potential shortcuts
are clear of obstacles in the NavMesh. Similarly, the dynamic avoidance system used
during path following takes into account nearby WorldElements that have not been integrated into the NavMesh, such as other bots and moving obstacles,
and uses the spatialization system to determine which elements are nearby.
For details, see Path Finding and Path Following.