Phase 5 updates

Phase 5 · Slice 15 ·

Navigation

  • A new tassix_navigation crate vendors Recast Navigation 1.6.0 (zlib: Recast and Detour, unmodified) behind our own C shim. It bakes as Unity's bakes show:
    • voxels a third of the agent radius, half as tall, in 256-voxel tiles anchored at the data's position (Unity bakes in the surface's space, which decides which cell an edge on a voxel boundary falls in);
    • erosion by the radius, step height, slope, small regions dropped, areas as Unity's indices (polygon flags are their bits, so an area mask filters them);
    • the surface at the polygons' height, a cell above the ground (Recast lifts its detail mesh a further cell; Unity doesn't).
  • Queries through Detour: straightened paths (partial ones end at the path's polygon nearest the target), nearest points, raycasts along the surface, nearest edges, moving along the surface.
  • UnityEngine.AI: NavMesh, NavMeshPath, NavMeshHit, NavMeshBuilder, NavMeshData, NavMeshBuildSettings/Source/Markup, NavMeshAgent, and NavMeshObstacle (settings only).
  • A new Unity.AI.Navigation assembly: NavMeshSurface, NavMeshModifier, NavMeshModifierVolume and NavMeshLink with the package's serialized fields. Unity scenes' surfaces bake again from the scene when they start (Unity's baked data is in its own tile format).
  • NavMeshAgent follows Unity's trace frame by frame:
    • each update it moves by the velocity it chose the update before, then steps the velocity toward full speed by its acceleration;
    • with auto-braking, it decelerates by exactly what stopping at the end takes once that is three quarters of its acceleration;
    • it turns by min(angularSpeed·dt, angle·dt·(1 + speed));
    • corners within a centimeter count as reached; three corners of lookahead (remainingDistance is Infinity past them);
    • the path comes in the update after SetDestination; agents update after Update, before LateUpdate.
  • A new navigation conformance scenario records:
    • a runtime-built surface's settings, paths around a wall and into a closed room, sampling, raycasts, edges, areas, agent type settings and agent defaults;
    • three agents frame by frame: accelerating, turning, stopping and resuming, auto-braking or not, warped, reset, moved;
    • a Unity scene (NENavScene) with a surface baked into an asset and an agent. Its level is off center so no path is a tie between two equally short sides, and its agents don't avoid (Unity's avoidance nudges velocities near walls). 40 scenarios pass in both runs.
  • A navigation sample (dotnet/samples/scenes/navigation.json): agents wandering a walled yard with the baked navmesh drawn over it. An MCP e2e test covers an agent walking around a wall on a surface baked in play mode.
  • Not yet: avoidance (between agents and of walls), off-mesh links, obstacle carving, modifier volumes, height meshes, Unity's legacy baked navmesh, rotated surfaces.
  • Next: 2D lights, or agent avoidance and off-mesh links.