Timetables were introduced in OpenTTD 0.6.0 (since beta 2). The timetable button is located at the top right of the orders window. All orders for the selected vehicle are displayed inside the Timetable window. You can choose how much time a vehicle should spend in a station (in days or cycles - configure via advanced setting) and if you wish, how much time it should take the vehicle to travel between points of its route, as well as specifying a maximum speed at which the vehicle should travel along that section of its journey. There is a counter stating whether a vehicle is on time or whether a delay has occurred.
|Change Time||Changes time period assigned to line in timetable.||Will pop up a window to prompt for the new duration.|
|Clear Time||Removes time period.||Allows the vehicle to take as long as it pleases with the selected journey.|
|Change Speed Limit||Changes the maximum speed at which the vehicle should travel along the highlighted section of its journey.||Will pop up a window to prompt for the new speed limit.|
|Clear Time||Removes speed limit.||The vehicle will then travel as fast as it can.|
|Start date||Sets the date timetable should start at.||Will pop up a window to prompt for the starting date of timetable.|
|Reset late counter||Sets late counter to zero.||Declares that the vehicle is travelling on time, so it will stop trying to catch up or slow down.|
|Autofill||Fill automatically based on next journey.||Fills data for you, so you can tune them later.|
|Non-destructive autofill||Fill automatically based on next journey, leaves waiting times untouched.||Useful, when updating timetable to new traveling times, for example, when using a new faster vehicle on the old route.|
Timetables are useful for preventing vehicles from "bunching up". Spreading out your vehicles helps to keep a more even flow of cargo from station to station, but breakdowns, traffic, and such delays will normally cause them to gather together into a single queue.
To demonstrate, we shall show a simple case with three buses travelling a circuit between three towns. We'll start off with the buses and route already set up, using shared orders. Sharing orders is very helpful here, as they will also share timetables.
To start with, bring up the first buses' timetable, and enable Autofill. Then set them on their travels. As the first bus completes each part of its route, the timetable window will populate with the time it took.
As the convoy of new buses travel, stop the last bus after each station, so that they are nicely spread out. (If you have a different number of vehicles to stations, just try to estimate equal spacing. If any of them say that they're late once in place, reset their late counter with the button.) Once the first bus has made one complete route, the timetable will be populated, and you can disable autofill. Stop the bus for now.
Unless you were unlucky, the time measured will have been that of a perfect run: no breakdowns, no traffic, just the bus hurtling along at top speed the whole way. It also probably didn't have much or any cargo to load or unload if the stations are new too.
This means that the timetable is hopelessly optimistic, as it represents the best possible case, rather than the common case. To correct this, select each leg of the timetable in turn, click Change Time, and type in a new duration to add a little slack to the timetable.
Now, start the buses! You might want to do this while paused to make sure that they all move off at once, else your careful efforts to spread them out will be in vain.
Chances are, at least at first, you got the slack time wrong. Timetabling is still a bit of a learned craft, and far from a magical "automatically spread out vehicles with same orders" option (yet). Let the buses run for a while (it needs to be long enough for a few breakdowns---a year should do), and see what their timetable windows say.
Oh dear. Although eight days isn't much, the differences in lateness mean that our buses aren't so nicely spread out any more. Add a little more slack to the timetable. Don't click the Reset Late Counter button---that will make the buses forget how far they are from their evenly-spaced objective, and make them instead try to match how they are currently bunched.
Your buses should now be pretty happily set up, and safe to be left to their own devices while you go work on some other route. Here's how our example looks after five years on fast-forward:
Despite repeated breakdowns, they are still evenly spaced around the loop. But what happens when a new bus type is released, and they get upgraded?
The good news is that the timetable will continue to work, and your stations will still see regular buses, rather than hours of waiting and then three at once. The bad news is that your new, faster buses will be sitting around waiting for time to pass so that they've synchronised with a timetable set up for old, slow buses. Because this isn't wrong, as such (the buses still keep their spacing, deliver cargo, and make money), you won't get any warnings about it, either.
So that's the downside of timetables---you need to update your timetables when you get new vehicles. How much work this is will depend on how much you use multiple vehicles which are not already rate-controlled by some other mechanism, such as full load, and how skilled you get at estimating required slack. I suggest you keep it to just buses, and possibly mail trucks.
The upside is that one of the big, big factors when calculating your station ratings is how long it has been since the last vehicle showed up. People do not like to be kept waiting for the bus, even if the bus is actually a road train of five large, fast buses which will whisk away all nine-hundred passengers without strain. After about ten years (and a little cheating to skip forward to new bus designs for the above), here are the station ratings for our trivial route:
Three buses is nowhere near enough to service Overnfield city station, but we avoid a terrible rating (and subsequent local authority obstruction of anything we do nearby) by at least offering a frequent service.
The way that timetables are currently implemented, there is no global frame of reference for a vehicle's timetable. Each timetable is relative to the time that vehicle's timetable was last reset. This makes some tasks, for which real world timetables might be used, difficult or impossible:
- Scheduling one vehicle to depart slightly after a connecting service arrives
- Scheduling a free platform at a station for an express service
- Scheduling trains through a busy junction such that few, if any, must wait
In fact, most scheduling tasks other than creating headway between the vehicles operating to a single set of shared orders are difficult.
- Timetabling is tuned to a particular route and vehicle speed. Use it for things like buses; trains are better served by being instructed to wait for a full load. Use shared orders.
- Use Autofill to get an initial measurement to base your timetable upon.
- Manually spread out your vehicles. Reset any late time once in position.
- Add and tune a little slack time to allow them to catch up after delays.
- Set all the vehicles going at once.
- Repeat the tuning when upgrading to faster vehicles.