The new Slim Timetable separation V60 is out. Patch applies against
New in V60:
- New operation mode "Buffered Auto" (see below)
- General bug fixes and rewritten code (Includes changes by Oberhümer; Big thanks go to Alberth for his code review.)
- It is now multiplayer compatible! (Yay!)
- I integrated the old GUI window into the normal timetable window. (See screenshot below)
The GUI is glitchy: Separation information is not always refreshed if parameters are changed from the outside (e.g. another timetable window).
Timetable separation patches of one kind or another have been coming and going for some time now. When the last one I used myself was about to die (ITiM or so it was called) Back in the Old Days™, I decided to have a go at it and write my own timetable separation patch. With blackjack and hookers.
In fact, I forgot to include both.
What remains is a rather small (hence the name) yet rather powerful patch that I've been keeping up to date since r17000ish - with minimum effort. Luckily for me, there hasn't been much change in that area of trunk code.
So, how does it work? Simple.
The patch offers four modes of operation (plus "Off"), set separately for each shared timetable. Separation starts automagically as soon as a shared timetable is completed.
The modes work as follows:
- In the default Auto mode, separation tries to distribute all vehicles evenly on the timetable. Each time you add or remove a vehicle to/from a shared orders list or send it to a depot, separation automatically reinitializes to account for these changes.
- In Man Number mode you tell the patch to calculate separation for the given number of vehicles. It doesn't care if there are more or less vehicles around.
- Man Time works the other way around: You explicitly set the amount of separation between vehicles.
- Buffered Auto mode keeps one vehicle waiting at the first stop which always leaves on time. This works great to reduce delays by maintaining a time reserve at a defined point (= the first stop). This can be built out of the way where waiting vehicles do not hinder others in their way. My favourite mode.
When a separation cycle needs to be initialized, the program waits for a vehicle to arrive at its first ordered stop. When this happens, the current game time is saved and the separation marked valid. The separation system then changes the delay value of arriving vehicles according to separation. The system doesn't care about the order the vehicles arrive in or any special orders like depots or waypoints. This makes the whole principle more or less unbreakable unless you play for more than ~160,000 years when the date variable overflows.
As stated before, in Auto mode, reinitialization happens automatically. In the other modes, pressing "Apply" without changing any options gets you the desired effect. The latter works in any case you require reinitialization - no actual change of parameters is required.
Use at your own risk. Criticism, bug reports and all kinds of (constructive) feedback are highly welcome.
There probably will be some issues regarding coding style. As this is the first time I actually publish some of my work, I haven't taken much care about formal style in the past. I did try to adapt the code according to the wiki guide, but I'm sure to have missed something.
* Bavarian dialect for "Greetings, fellow citizens from this side of the Weißwurschtäquator" - although, for diplomatic reasons, I hereby greet everyone else as well.
1. Due to "popular request" I appended the patch as plain text to this post.
2. New V50 out.
3. New V60 out.