Having more than one vehicle working a single route usually means that after a while, the vehicles tend to bunch up together. I had previously thought it may be minute differences in delays introduced through, for instance, waiting for a free path for trains, differences in cargo loading time or random breakdowns.
But even playing a game without breakdowns, and looking at the vehicle with the most stable route, ships in this case, the vehicles still bunch up together after a while with amazing reproducibility – behold!
Trains and buses both exhibit this too, though it’s harder to illustrate this problem with them. I know that timetables should prevent this, but building good timetable is hugely time consuming and quite difficult to do on a large scale.
Is there some sort of game mechanics that’s causing this, and what can I do to prevent this from happening without the need for either manual intervention or timetabling?
This occurs because it takes time to load: proportional to the amount you are loading. When the first ship loads up, it leaves less for the second one to load, causing the second ship to spend less time in the dock, and therefore catch up to the first. As the second catches up, there continues to be less and less for it to load, causing an accelerating cycle that ends up in the state you have pictured.
The best way I have found to combat this is to make all (or all but one) of your vehicles wait until fully loaded. This causes less available cargo at the dock to mean more time at the dock. This reverses the cycle and causes your vehicles to remain relatively well spaced.
The a single vehicle on the route not fully loading will not cause this problem, as it will eventually catch and pass the fully loading vehicles ahead of it. Such a vehicle can be a good indicator of when you need to add or remove vehicles.