You’ve got a new beta version to test!
It is at version 3.3.5 now, the last released version is 22.214.171.124 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
- 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: http://arongranberg.com/astar/docs_FeatureFreeze/changelog.php
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.