This FAQ answers some of the questions that programmers typically have when inquiring about NavPower. This list is based on questions we receive from you, so feel free to email us at with any questions that you may have.

How long does it take to integrate with NavPower?

The NavGraph building is very easy to get running since the input to our build process is just an array of triangles which you can generally grab from your collision or render geometry. Several clients have e-mailed us within hours of downloading the evaluation with NavGraphs that they have built. After that, it typically takes a few days to get characters running around in your game, depending on the details of your engine.

How does NavPower handle memory allocation?

Most clients prefer to pass in a block of memory when the NavPower system is initialized and allow the NavPower system to perform all of its dynamic memory allocation from within that block. This ensures that NavPower won't cause any fragmentation in the system heap. The amount of memory required by the NavPower system is typically less than 1 MB, though that will vary based on the number of dynamic objects created at runtime. NavPower also provides allocation callback hooks so that the client can directly funnel any NavPower allocation requests to the game heap if that is desired.

How does resource loading work?

Resources such as the NavGraphs are created by the build process as chunks of binary data. The client loads these binary chunks at runtime and calls AddResource() to supply them to the NavPower system. This technique allows very high-performance resource loading since the NavPower system only needs to adjust pointer locations before using a new resource. Optionally, the resource loading supports format conversion such as endian swapping so that the same resource can be used on a range of platforms.

What type of streaming support does the NavPower system have?

The NavPower system has full streaming support with the ability for NavGraphs to connect up with previously loaded NavGraphs. All of the dynamically created objects such as obstacles, jump connections, movers, etc. automatically react appropriately to a new NavGraph being loaded or unloaded in their vicinity. The largest NavPower worlds are those running on MMO servers where there are typically over a thousand grid sections simultaneously loaded and connected together.

Do you provide source code for NavPower?

The NavPower Complete license includes source code for all of the runtime systems which is something that many middleware products do not provide. This gives you the ability to modify NavPower if needed and to compile with specific compilers/options as you wish. Note that the source code for the NavPower tools and build process is not provided.

What types of navmesh queries does NavPower support beyond pathfinding?

NavPower provides a large number of queries that can be used to examine the NavGraph, including functions such as: SearchToMultipleGoals(), CheckBoxFit(), GetClosestReachableArea(), NavProbe(), and CollideLineSegmentAndNavGraph().

The image on the left demonstrates how one team used additional NavGraph queries to generate a corridor around the path, allowing animation flexibility when heading towards cover. The full presentation is available here. If you are interested in looking through the complete list of functions in the NavPower documentation please request a NavPower evaluation from us.

Copyright © 2019 BabelFlux LLC . All Rights Reserved.