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 Speed Limit||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.
- Start the vehicles at the same time.
- Repeat the tuning when upgrading to faster vehicles.
Since version 1.4.0 it has been possible to automatically space vehicles using the timetable feature.
The basic way this works is as follows:
- The total number of days in the timetable is divided by the number of vehicles sharing the timetable to get a "gap number".
- The start date of each vehicle is then increased by the "gap number" so that each vehicle starts the same number of days after the last.
- Each vehicle speeds up or slows down depending on whether it is late or early according to the timetable.
- Provided the timetable has a little slack in it to account for traffic and busy stations, this should keep them in sync forever.
For example, let's say you have a bus that takes 100 days to complete its route. If you then clone this bus 9 times, you will have 10 buses sharing the orders. Automatically spacing them means that each bus will set out 10 days after the last. Each station will be serviced every 10 days.
How to use:
- Set up a vehicle and plot the route using the Orders tab.
- When complete, click on the Timetable button and click Autofill.
- Start the vehicle and let it complete the route and fill in the timetable.
- Stop the vehicle as soon as the last item has filled in the timetable.
- On the Orders tab, click Skip until the next station is the first station in the list.
- Unclick Autofill and add a little slack into the timetable to account for filling up at stations. Since this is generally the first time you visit each station, there are no passengers to load, and you need to increase the time so that the vehicle can load up.
- Once the timetable is complete, decide how many vehicles you want on that route.
- Clone the initial vehicle using ctrl-click. The cloned vehicles will share the order list and timetable.
- Once you have all the clones, select the first vehicle and ctrl-click on Start Date.
- Set a start date a few days into the future. Ideally, the vehicle should arrive at the first station before this time.
- Release all the vehicles. They will bunch up at the first station, but should leave in regular intervals until they are all spaced out.
- You can confirm by checking the timetable of each vehicle and see that the start date of each vehicle is evenly spaced.
You may find it easier to pause the game after the timetable has been filled, so that you can clone the other vehicles and set up the timetable without worrying about the first vehicle continuing on its route too far.
It's not strictly necessary to set a start date in the future or to even stop the first vehicle. Provided there is a little slack in the timetable, the vehicles will speed up and slow down as needed and will eventually space out evenly. The above is just the simplest method I have found.