In this lesson, you will learn how to configure runtime Navigation Mesh generation to prevent frame-rate hitches when your game environment changes, such as when destructible walls crumble or platforms move.
The Problem: Global Rebuilds
By default, the Navigation Mesh can perform a "full rebuild" when geometry changes, which is a massive performance drain. In a dynamic world, you want to avoid global updates and instead favor localized, incremental changes.
The Solution: Runtime Generation and Modifiers
To optimize, navigate to Project Settings > Navigation Mesh > Runtime Generation and set it to Dynamic. This allows the navmesh to update only the modified areas rather than recalculating the entire level.
However, even with dynamic generation, a massive explosion causing many nav-mesh tiles to invalidate at once can still cause a spike. To mitigate this, use Navigation Invokers. Instead of the entire world having a constantly active, high-resolution navmesh, you place Navigation Invoker components on your AI agents. This tells Unreal to only generate/update the navmesh tiles within a specific radius around the AI, effectively "culling" the navigation processing to only what is necessary for active agents.
Minimizing Spikes
For objects that frequently change state, use a Nav Modifier Volume with the Failsafe or Area Class set appropriately. If you have a door or a destructible piece of cover, you can use a Nav Modifier Component directly on the actor. By toggling the Include Agent Navmesh flag in code or blueprints, you can control when these objects influence the pathfinding:
// Example: Dynamically updating a Nav Modifier on a destructible wall
void ADestructibleWall::OnWallDestroyed() {
// Disable the modifier so the AI realizes the path is now open
NavModifierComponent->SetComponentTickEnabled(false);
NavModifierComponent->SetAreaClass(nullptr);
// Trigger update to the affected area
GetWorld()->GetNavigationSystem()->Build();
}
By combining Dynamic runtime generation with Navigation Invokers and localized Nav Modifiers, you ensure that your AI can navigate around destruction without stuttering the game’s main thread.
Key Takeaway: Use Dynamic runtime generation combined with Navigation Invokers to limit navmesh calculations to the immediate vicinity of your AI, preventing global performance spikes during environmental updates.