because pathfinding only needs at least one node for each object's line of sight, its better to focus less on generating nodemaps and rather letting people build them manually. it's still cool though but it's always going to be very inefficient when compared to hand-placed node mapping.
ex: bottom right roof has at least 50 nodes on it and almost the same amount of paths that need to be traversed every iteration. it could be refactored into just one node in the middle of the roof and then you can let the ai follow based on direct line of sight, which will always be fastest. if you need extra ai capabilities like more complex movement and avoiding cliffs, you can just code that directly into the ai itself rather than let the pathfinding bear the brunt of the iterations. alternatively, you could use a second layer of nodes that the ai will use under certain conditions, ie in combat, put nodes behind boxes so that bots can take cover, or nodes for crouching under objects, etc. that would require using weights and heuristics, and on a generated node map like that, would basically slow everything down really quickly