Beta version of 3.3.5 released


You’ve got a new beta version to test!
It is at version 3.3.5 now, the last released version is but the experimental release has been at 3.3 for a while now.
LOTS of things have been improved in this version. Here are the highlights from the changelog:

  • Rewritten graph nodes. Nodes can now be created more easily (less overhead when creating nodes).
  • Graphs may use their custom optimized memory structure for storing nodes. This is not that significant now. But it paves the way for other graph types like QuadtreeGraph (an efficient one, as opposed to the one used in the 2.x versions if you remember that).
  • Performance improvements for scanning recast graphs.
  • Added a whole new AI script. RichAI (and the class RichPath for some things):
    This script is intended for navmesh based graphs and has features such as:

    • Guarantees that the character stays on the navmesh
    • Minor deviations from the path can be fixed without a path recalculation.
    • Very exact stop at endpoint (seriously, I can get precision with something like 7 decimals (usually not that good though)).
      No more circling around the target point as with AIPath.
    • Does not use path modifiers at all (for good reasons). It has an internal funnel modifier however.
    • Simple wall avoidance to avoid too much wall hugging.
    • Basic support for off-mesh links (see example scene).
  • Improved randomness for RandomPath and FleePath, all nodes considered now have an equal chance of being selected.
  • Recast now has support for tiles. This enabled much larger worlds to be rasterized (without OutOfMemory errors) and allows for dynamic graph updates. Still slow, but much faster than
    a complete recalculation of the graph. Also, navmesh cutting is beta. Navmesh cutting can enable fast dynamic obstacles on recast graphs (note that navmesh cutting cannot be used in the beta version at the moment, so don’t spend time looking for it).
  • Added RecastMeshObj which can be attached to any GameObject to include that object in recast rasterization. It exposes more options and is also
    faster for graph updates with logarithmic lookup complexity instead of linear (good for larger worlds when doing graph updating).
  • Reintroducing special connection costs for start and end nodes.
    Before multithreading was introduced, pathfinding on navmesh graphs could recalculate
    the connection costs for the start and end nodes to take into account that the start point is not actually exactly at the start node’s position
    (triangles are usually quite a larger than the player/npc/whatever).
    This didn’t work with multithreading however and could screw up pathfinding, so it was removed.
    Now it has been reintroduced, working with multithreading! This means more accurate paths
    on navmeshes.
  • Added several methods to pick random points (e.g for group movement) to Pathfinding.PathUtlitilies.
  • Added RadiusModifier. A new modifier which can offset the path based on the character radius. Intended for navmesh graphs
    which are not shrinked by the character radius at start but can be used for other purposes as well.
  • …and probably some more things which I have forgotten for the moment.

See the whole changelog here:
The beta version can be downloaded by users who own the pro version. Simply go to the download page.

Thing to look out for: Lots of node variables and properties have changed casing (.position is now .Position etc.). I plan to go back to the previous casing before release to ease upgrading. But for now, you might have to fix some compiler errors when upgrading your project (please keep a backup as always). If you find something that is not working or buggy, it would be awesome if you could notify me. If you are sure that it is a bug, send me a private message in the forum, otherwise post a question in the forum.
Also, you will need to regenerate all saved files with node data (and cached startup caches) since the binary format has changed. Settings are preserved but node data is lost, you might get exceptions if you try to load old data.


  1. Ikari Warriors says:

    I am getting the following error messages with version 3.3.14.

    Assets/AstarPathfindingProject/Generators/Utilities/TileHandler.cs(357,36): error CS0234: The type or namespace name `PolyTree’ does not exist in the namespace `ClipperLib’. Are you missing an assembly reference?

    Assets/AstarPathfindingProject/Generators/Utilities/TileHandler.cs(694,49): error CS0246: The type or namespace name `PolyNode’ could not be found. Are you missing a using directive or an assembly reference?

    Assets/AstarPathfindingProject/Generators/Utilities/TileHandler.cs(696,54): error CS0246: The type or namespace name `PolyNode’ could not be found. Are you missing a using directive or an assembly reference?

    • Aron Granberg says:


      Try right clicking on the AstarPathfindingProject/Plugins/Clipper/.dll file and choosing Reimport.

  2. Landon Podbielski says:

    Hey man! I wasn’t sure how to get in contact with you, so I thought I’d ask here. I’m using a grid based navigation system, and its been working really awesome. The problem is, when an AI can’t actually get where I tell it to go, it goes as far as it can, then says “screw it” and just glides to the end point with complete disregard for path constraints. A unit will also move onto an un-walkable node if I tell it to explicitly. Is there a boolean for this somewhere that I’m missing?

    Awesome API by the way, considering buying it! You have a lot of stuff in it and it’s incredibly useful.

  3. Chima says:

    Hi Aron,
    I would like to speak to you about programming a game we are working on using unity3d. Can i get your phone number or email address?

    Best regards

Comments are closed.