Mercuna v3.6 is one of our largest releases in recent years, with several significant new features, major workflow improvements, and over 100 fixes and refinements across the product.
Highlights include:
- Auto Drop Link Generation – agents can now descend from ledges naturally using drops, reducing the need for jumping and improving the quality and realism of movement.

- Unlimited Nav Grid Modifier Volumes – a new modifier volume implementation that removes previous limits on the number of runtime modifiers.
- Runtime Modifier Volumes without Actors or Components – create and manage nav grid modifiers entirely through code, enabling more flexible procedural and gameplay-driven systems.
- Nav Grid Build Debug Draw – inspect intermediate stages of the nav grid build process, including collected geometry, heightfields, and contours, making it much easier to diagnose generation issues.
- Lightweight FMercunaPath – a new lightweight, thread-safe path representation that can be created and queried from worker threads, making it well suited to Mass AI and custom large-scale simulation systems.
- Improved Query Filters – greater flexibility, additional context, and lower runtime overhead when implementing custom navigation rules.
- Motion Matching Support – generate path-based trajectories for Unreal’s Motion Matching system, improving animation selection by giving it a more accurate prediction of upcoming turns, stops, and speed changes.
Mercuna – left, CMC – right
- Consistent Octree Builds – identical levels now generate identical octrees, preventing unnecessary nav data chunk changes and reducing source control noise.
- Unreal Engine 5.8 Preview Support – compatibility with Unreal Engine 5.8 Preview.
As always, this release also includes numerous stability improvements, performance optimisations, and bug fixes throughout Mercuna.
Release Notes
- Ground and Surface Navigation
- New nav grid build debugging visualizations expose geometry, height fields, layers, and contours
- Increase maximum modifiers per generation box to 32
- Ability to create modifier volumes not associated with Unreal actors or components
- Improve performance of ClampToNavigable with extremely large radius
- Fix prism modifier components when used within Blueprints
- Do not allow navigation on meshes with WalkableSlopeBehaviour set to Unwalkable
- Fixed crash in nav testing actor when PathfindLatent couldn’t find a path
- Small improvement in frame rate of polymesh debug draw
- Improve nav grid debug draw colouring
- Include Spline information when querying GetAllPathPoints for UMercunaSmoothPath
- Add ability to specify usage spec to IsNavigable queries
- Fix nav grid debug draw lines being offset
- Ability to get all nav links on the current path from the Navigation Component
- Fix very slow nav grid chunk merge in PIE when stats are enabled
- Fix crash on shutdown while pathfinds are still running
- Nav volumes outside of maximum nav grid size are now ignored with an error log
- Fix assert if multiple grid builds are cancelled at a particular point during the build process
- Fix polymesh triangulation issue
- Improve avoidance for slowly reacting agents
- Detect obstacles for avoidance earlier for slowly moving agents
- Fixed misuse of speed multiplier in calls to MerDriver::CalculateAvoidance
- Lower avoidance frozen threshold for low speed agents
- Fix assert repathing through degenerate non-smooth waypoints
- Fix to nav mesh where modifiers lie across generation borders
- Fix rare assert during avoidance (SubtractInwardPlane)
- Reduce distance that a nav seed will clamp down to the nav grid
- Ground Navigation
- Automatic generation of nav links that drop down from geometry to the ground
- Support driving Unreal agents using Motion Matching
- Expose poly centre position to query filters
- Expose nav link information to query filters
- Expose more information on nav link queries
- Option on nav grid modifiers to disable fast property updates. There is no limit to the number of modifiers with fast updates disabled
- Expose functionality for clamping to nearest connected grid on the query interface
- Add functionality in Unreal for clamping to any grid in a world
- Add ability to specify usage spec to IsNavigableMulti query
- Expose box obstacles on thread safe ORCA API
- Height range override in IsReachable now correctly applies to query end instead of query start
- Add log messages to polymesh pathfind when backtrack limit or max path length exceeded during search
- Improve parallelisation of pathfinds on different worker threads when intergrid nav links are present
- NavInvokerVolumes no longer generate nav grid outside the nav volume
- Option on nav grid testing actors to disable the projection of the end point down to the nav grid
- Allow stationary obstacles to move slightly before being treated as moving again
- Fix bug generating linear auto links where vaults over small obstacles could be incorrectly ignored
- Fix nav raycast end position height clamping
- Fixed bug causing some raycasts to fail if start and end were in the same grid cell
- Fix locking when checking nav grid build status when nav invokers are in use
- Fix assert when a vehicle path is made with a slope too steep for the vehicle to decelerate on
- Improve avoidance for slowly turning agents
- Improvements to nav mesh generation when physical materials generate complex patterns of different nav regions
- Fix rare crash when generating automatic nav links
- Fixed rare NaN in context steering
- Fix rare crash getting the trajectory for an entity
- Do not pass inputs in the reverse direction to the Character Movement Component when decelerating to a stop
- Don’t try to set controller rotation on vehicles
- Surface Navigation
- Limited support for climbing agents
- End direction for testing actors now supported
- Fix console command mer.Grid.Draw.AgentType not working with surface agent types
- Fixed rare infinite loop in GetBorderLines
- Removed some asserts hit by rare geometry configurations
- 3D Navigation
- Octree builds now produce consistent data if level geometry is unchanged, so chunk file content does not change unnecessarily
- Ability to set end direction on MoveTo request
- Improvements to Octree World Partition streaming performance
- Fix cost modifiers not being shown in 3D cross section octree debug draw
- Fix raycast through unnavigable space treating all agents as having minimum radius
- 3D Navigation move to current location now immediately succeeds instead of immediately failing
- Fix assert on pathfind in rare cases while octree rebuild was in progress
- Fix nav octree being removed when a modifier is added that covers all of a disconnected part of navigable space
- Remove warning when setting debug draw on an octree that has not been built
- Common
- Unreal Engine 5.8 Preview support
- Add a lightweight Unreal struct, FMercunaPath, representing Mercuna paths
- Add nav seed component, to allow seeds to be added as components of other actors
- Allow more methods on MerPath to be used from worker threads
- Ability to update path end-direction explicitly and when adding a destination
- Remove requirement for exclusive thread entry and lock when calling functions to add, remove or update modifiers
- Deprecate the MercunaNavModifier Actor in favour of using Nav Modifier Components
- Modifier changes no longer automatically update the nav graph in Editor, a nav graph rebuild is now required
- Nav graph build now correctly picks up Chaos Geometry Collections in Editor
- Fix dangling references to physical materials when physical materials are removed
- Fix rare crash in MerEntitySystem when exiting PIE
- Fixed exception when running with stompmalloc in MercunaMoverEditor ShutdownModule
- Fix assert in MercunaMover when using live recompile during PIE
- Make NavVolume robust to its nav graph being unloaded before it
- Stop broken soft pointer causing an assert in RemoveNavVolumes
- Make it possible to construct query filters in C++ code outside of Mercuna
- Agent type names are now always case insensitive
- Change method of tracking actor changes in editor to improve performance and fix nav graph being incorrectly marked dirty
- Fixed nav volumes being allowed to rotate in world partition map when they shouldn’t
- Fix path destination not updating if destination was changed immediately after params were updated
- Fix shutdown crash when editor fails to start
- Fix errors in Havok integration due to missing registration macros
- Fix exclusion and modifier volumes not getting cleared on nav graph reset
- Minor improvements and optimizations

