Right. Where to start
I’ll start by answering the specific questions you’ve asked.
Under the hood we’re using Recast (google it, there’s lots of info on it online) and it’s using regular A*. We’ve approached the idea of implementing hierarchical pathfinding on top of that, but we didn’t get satisfying results in dynamic worlds such as Fortnite’s. It’s kinda there, but we don’t market it as a full-blown feature until we get time to get back to it and make it bullet-proof.
Most navigation queries allow you to specify NavigationData instance you want to use for the query. NavigationData in regular, out-of-the-box use cases are just RecastNavMesh instances.
To annotate navmesh with “areas” you need to use “navigation modifiers”. Those are actors that implement INavRelevantInterface. The easiest and ready-to-use modifier is NavModifierVolume - just put it on the map and pick navigation area class to use. Now to change the cost dynamically that’s a bit more work - you either need to dynamically change the cost associated with selected nav area type, or configure navigation query filter (FNavigationQueryFilter) to use virtual calls while calculating traversal cost during A* search (expensive, but as flexible as it gets).
Not yet, sorry. AI Documentation is behind a bit
Hope it helps somewhat, and feel free to ask follow up questions!
Cheers,
–mieszko