What’s A*?
A* (A-star) is a search algorithm used to find the shortest path between two points on a grid or graph.
What’s Unity NavMesh?
NavMesh is Unity’s built-in navigation system.
When to Use A* Algorithm
✅ 2D Grid-Based Games: Great for top-down, tile-map games like Pokémon, Fire Emblem
✅ Custom Pathfinding: You need full control over the algorithm or grid
✅ No Unity Engine (Custom Engine): You’re building from scratch
✅ Dynamic or Procedural Worlds: You generate maps at runtime and need custom solutions
✅ Low-poly / Small Worlds: Simple grid = fast A* computation
When NOT to Use A* (Use NavMesh Instead)
🚫 3D Terrain or Complex Geometry: A* doesn’t understand 3D mesh surfaces
🚫 Need Agent Features: No built-in agent radius/height, obstacle avoidance
🚫 Performance Bottlenecks in Large Maps: Grid-based A* gets slow as grid size increases
🚫 Want Auto Pathfinding in Unity: Unity NavMesh does the heavy lifting automatically
When to Use Unity NavMesh
✅ 3D Games (FPS, Adventure): Works out of the box with terrain, stairs, ramps
✅ You’re Using Unity: Built-in, highly optimized, works with Agents and Obstacles
✅ Want Dynamic Pathfinding: NavMesh can update with NavMesh Surface or Carving
✅ Need Agent-Based AI: Handles multiple AI units with different sizes/behavior
When NOT to Use NavMesh (Use A* Instead)
🚫 2D Games: NavMesh is mainly for 3D navigation (2D support is hacky)
🚫 Fully Dynamic Worlds: You can’t rebake NavMesh instantly at runtime
🚫 Custom Game Engines: NavMesh is Unity-specific
🚫 Hex or Irregular Grids: NavMesh doesn’t support custom-shaped tile systems natively
Find my NavMesh Demo Project Here
TL;DR Summary
- Top-down 2D tile game: A*
- 3D Adventure/FPS: NavMesh
- Procedural dungeons: A*
- RTS / MOBA (3D with units): NavMesh
- Custom logic / AI testing: A*
- Unity 3D project with terrain: NavMesh
How do I handle dynamic environments in a 3D game where the NavMesh must update instantly at runtime?
Unity’s built-in NavMesh system is not ideal for highly dynamic environments. But there are workarounds & better solutions depending on your game’s needs.
Why NavMesh is Limited in Dynamic Worlds
Unity’s NavMesh baking is not real-time. It takes time and can’t rebake every frame. Even NavMeshObstacle with carving only supports:
- Simple object avoidance
- No large-scale changes (like terrain deformation or new platforms appearing)
So if your game has:
- Platforms moving
- Terrain changing
- Buildings spawning/despawning
You need more flexible solutions….
Best Solutions for Real-Time Navigation in Dynamic 3D Worlds
✅ Use NavMesh with Carving enabled for minor changes like doors, crates, small obstacles
✅ Use NavMeshComponents package, when only parts of the environment change
✅ A Pathfinding Project (by Aron Granberg)*
- Best for fully dynamic 3D worlds
- Supports grid, navmesh, and point graph types
- Real-time updates & graph recalculations
- Unity compatible and production-ready
Why it rocks:
- Real-time updates
- Supports layered worlds, moving platforms
- Optimised & widely used in indie and AAA
Find Aron Granberg’s path finding projects:
Free
Paid
Many devs switch to this when Unity’s NavMesh isn’t enough.
Stay updated with the latest insights and tutorials by following me on Medium, dev.io and LinkedIn. For any inquiries for games or questions, feel free to reach out to me via email. I’m here to assist you with any queries you may have!
Don’t miss out on future articles and development tips!


Top comments (0)