Just Need to Ask Questions About Features and Performance

I’m doing a city sim, and I would like to know if this package will take care of all my concerns before I purchase.

  1. I assume you build your NavMesh very similarly to the NavMesh included with Unity (bake, carve, OffMeshLinks).
  2. I would like to know if OffMeshLinks are added to the path corners and if the corners array is readonly. I would like to have agents “queue” into one of many OffMeshLinks in a group so they don’t bunch up and a nice way to do this would be to modify a corner so I don’t have to repath.
  3. Does the local avoidance “jiggle”?
  4. I’d like to know the expected performance on a 2.5d game where all the navigation is on the XZ plane. I’m hoping to be able to control a maximum of 5k agents at > 60fps.
  5. Can the navigation traverse the OffMeshLinks at the same speed as normal navigation or does it “teleport” across by default?

Just a few questions I have. I suppose I’ll download the trial version to get started on answering these questions myself, but I was hoping someone would have the answers to a few of these offhand.

  1. Yes.
  2. Hmm, no? I don’t think Unity does this either. There is no built-in functionality for queueing in this package.
  3. The underlaying algorithm is similar to Unity’s algorithm, so it should have a similar result. It can jiggle sometimes depending on what you do with it. The beta version has improved this somewhat.
  4. With 5k agents you definitely will need your own custom movement script. The built-in ones are very general and thus a bit more costly than strictly necessary. The local avoidance alone is quite cheap though (in the beta at least, where it has been rewritten to use burst). On my computer 5k agents can comfortably run at 180 fps (with an rvo simulation fps of 20). It ends up taking a few milliseconds to calculate once every 5-10 frames. However, this is in a scene that is optimized for performance, even the agent’s movement scripts are simulated using burst. The agents don’t even have individual GameObjects.
  5. Since you will need a custom movement script for performance, how you handle off mesh links is completely up to that script.
  1. I’m implementing Queueing. I just want predetermination that pathing uses OffMeshLink and where it is.

  2. I just want to know the default behavior.

If you use your own movement script what you get back from the pathfinding system is a list of nodes.
If you use the beta version, you can use the Funnel.SplitIntoParts method which helpfully splits a path into a sequence of normal nodes and off mesh links (the non beta version also has this functionality, but it’s not exposed in an easy-to-use way, it’s used internally in the movement scripts).

  1. It depends on settings that you use. Here’s a video I found which shows some common behavior https://arongranberg.com/temp/rts_demo_locked.mp4 (this particular video demonstrates locked agents).