[=;204257]
Yeah just needs plugins for various things through blueprint. If there aren’t any ways to manipulate EQS using blueprint maybe we can get that added before they wrap up development on it. I am not even sure if it is exposed to the editor or if that is coming in 4.7 or later.
Of course, documentation would be nice too. I am trying to see how exposed the navmesh really is, but the entire system is pretty opaque from a blueprint standpoint. It was obviously designed to run in 3D enviroments with walls, floors, and enemies and that is about it. If there are ways to specify grids, grid point costs, path destination points, etc from blueprint then it isn’t immediately obvious how that is supposed to be done. The only documentation I could find was all about the in editor/viewport navmesh.
[/]
If the navmesh is A*-based (and I think it is) there might be a grid, but it’s possible they represent the environment with some other sort of graph. In that case one would have to force the navmesh to render as a grid. Since Ian already tried and failed to convert the navmesh to a grid it’s probably not a trivial undertaking. Have you begun looking at the source code?
Should we perhaps try to get in contact with Epic and ask if they can make EQS as exposed to blueprint as possible, now that they are in the middle of working on it?
[=;204410]
You’ll obviously need a grid based data structure at the core, but this is the only data structure you should need and everything else should be obtainable using queries across that data structure - the exception to that is perhaps when you want to find a path, in which case you’d want an ordered array to retain the found path. For things like visibility and such, it should be possible to simply query each node in the graph in turn to determine if it is visible, no storage of which are visible and which are not should be necessary 
I’d really just use it for rendering. It is possible to read back data from render targets, but I’m pretty sure it’d be quite a lot slower than using your arrays.
[/]
Ok, thanks for the explanation
So when you said that using a lot of arrays is inefficient, emphasis was on the a lot part. I am trying to keep the arrays as few as possible. At the same time I try to keep the arrays simple, as I believe this might increase processing speed, but I might be mistaken here. For instance I have a boolean array for walkability as well as an enum array for different sorts of pawns (enemies and allies), both as large as the entire grid. In some cases I want to be checking an index of just one of these arrays, while other times I will be checking both. Are you saying that it’s probably faster overall to keep a single array of structs that holds all of the information, even though you would often have to split the structs to get the relevant information?
Being able to store what tiles are visible is actually quite useful. You can for instance store all tiles that are visible and within range of player pawns, and the AI can then choose to approach or avoid these nodes on their turn. This could be done in advance on the player’s pawn’s turns. If I am to instead generate visibility for every player pawn on the map every time the AI wants to decide where to move, it would probably cause a bit of slowdown on the AI’s turns.