Looking good. On the long route, can you get your guy running in the general direction while the rest of the path is calculated? Something like, If Path > X, find short path first, get guy running, then continue calculating long path. This may be an area where some level of multi-threading is required unless there is a workaround.
Actually, I am pretty sure the answer to that is doing this on a tick, where the calculations are somehow spread over a period of time. For a long path I think that would be ideal. When I start work on my own pathfinding solution I am going to have to seriously study how that works.
[]
It’s interesting that he didn’t manage to get it precise if they use A* pathfinding. I wonder why that would be. I sure hope we can get more of navmesh exposed in time. That might be the easiest way to make grid based pathfinding work well with huge games such as Civ.
[/]
I think that has something to do with the lack of control over the navmesh in BP. If he had gone into C++ he probably could have fine tuned where each navmesh grid point is set and everything else. From what I understand, you can change the grid size and other general navmesh settings in blueprint, but it is still going to automatically generate over your map and without finer control from BP it would be a real pain to line both grids up. Your units might generally stick to the tiles, but not be exactly centered on them for instance. I think that is the kind of problems he was having, but he did say they could have made it better since he tried it last year.
Generally though, after looking at the exposed pieces of navmesh, as well as looking at most of the navmesh documentation/threads I could find, I think there is more there than would be useful for most tile based games. Navmesh is primarily built for 3D solutions and appears to use tracing to build in many if not all cases.
As long as you get the core algorithms put into C++ eventually, I think creating a separate solution for tile based games may be ideal. I feel like Epic is waiting on someone to create this solution in C++ and do a pull request so they can add it to the engine.