My bad for the necrobump, but I think it wouldn't fit in another topic since this needs context.
In the Perfect Node Algorithm -Quest, I've been looking on how a normal person would play the map. EVERY node plopping must make sure that it plops nodes if and only if there are no nodes closer than 64 to it.
For starts, make a list L that checks for duplicates.
1. For each player start A in the map, for each of the double-sided linedefs in A's sector where the other adjacent sector is walkable (condition Alpha below), do step 2 (using the linedef's normal LenghtOne(linedef.Position - Mean(sector.Vertexes)) and the mean of it's two vertices as position), unless A's sector was already used in step 1.
2. From this normal and position, add nodes every 96 units until it finds a wall or a sector that fits condition Alpha, then plop a node 24 units from that wall.
Condition Alpha is:
- Having a height of 64 or more; and
- Having a floor height that is not higher than 24 from the previous node's. (even if the node was placed in a different sector than just the previous one, but then the gaps will be too small because 96 units between nodes)
3.- At the hit sector, and every other sectors traversed by nodes, if the sector is not in L, append it to L and recurse for every double-sided linedef that pertains to the sector, and for each linedef B, if B's other adjacent sector suits Condition Alpha above, repeat the process from Step 2, this time using B's normal LenghtOne(B.Position - Mean(sector.Vertexes)) and the mean of it's two vertices as position.