The current logic behind how workers will exit halls, mines, lumbermills, oil plateforms etc is terrible. It makes it very hard to explain to new players because it is very inconsistent and prone to failure. It also fails to always prevent peons bumping into each other leading to a less than decent flow.
Here is a much simpler algorithm that would both make it way easier to learn and understand and also would make sure peons do not bump into one another. This way the flows are roughly as good from all sides and optimized the same too.
- Draw a line between the center of the two buildings to determine the “closest tile” the worker can exit from to the center of the destination.
- Make that “closest tile” the counter clockwise start position ( look up spawn position priority in warcraft 2 if you don’t know what I am talking about we can use the exact same logic here ). To avoid units ever bumping into each other, we can also add that the receiving buildings always starts at the second likewise prioritized tile.
- Workers would then target as their next destination (point of entry) the inverse of the tiles it would prioritize to exit from the building they want to enter. Thus ensuring workers never cross each other allowing a clean flow that can scale nicely.
The rule would be also much simpler to explain and show with a nice and simple drawing. It would also keep the counterclockwise priority that the game uses for unit spawning thus always being very consistent on that side too.
I would post a nice simple drawing to show all different cases and how it would perform but I cant so I hope you have a good imagination.
Right now as the game stands we all pretty much just memorize by heart every edge cases and possibilities but it is very inconsistent and we also have to account that in some positions peons will cross path making the goldflow much worse as the number of peons increase.
This I believe would be a much simpler/cleaner algorithm for the game that should also be quite simple and fast to implement in C.