Hi
Ok, 12000 is definitely a bit of a problem.
I guess you are switching between using the ASTAR_RECAST_LARGER_TILES define or not. I think if you try to edit those values to use the middle ground it might work better.
Right now the vertex index mask is either 0xFFFFF or 0xFFF, but if you make it 0xFFFF, then 12000 graphs will fit, and hopefully your tiles will be small enough to fit as well.
Sometimes the seeker will calculate a path that takes a very long route. The path will almost completely wrap around a whole recast tile even when the start and end points of the path are in adjacent nodes!This could be a floating point problem. Sometimes it can be tricky to get the exact correct offset so that the corners of the tiles line up with each other. Enable Recast Graph -> Show Connections and check those adjacent tiles and see if a connection has been generated between them, if not, they are not perfectly aligned.
I am not sure if this could cause it, but I know that after around 16000, floats starts to run out of precision, so maybe you could try to adjust your world so that it runs from -10000 to +10000 on each axis instead of from 0 to 20000.
Another option could be to edit the Int3.Precision variable (and some similar fields defined in it, it should be obvious which ones), to change it from a precision of 1000 to a precision of 100. I haven’t tested this myself, but I think no pathfinding code should break, however penalties might need to be adjusted. This would (probably) solve the precision problem.