NIMBY Rails

NIMBY Rails

25 ratings
Timetabling (1.14)
By adlet
This guide demonstrates key concepts of NIMBY timetabling through version 1.16 and includes a gradually built-up example of the application.

New concepts were introduced in versions 1.14 and 1.16. Version 1.14 introduced separation of a train from its timetable, which now resides in a new object, shift, that contains a list of orders. A train was permanently assigned to a shift, although it was easy to reassign a shift to another train with a couple of mouse clicks. Version 1.16 allows to take a train off-shift and reassign it to another shift automatically. This allows more flexible timetabling and rotation of trains between shifts.

I really appreciate very helpful comments from Kaluté and Paul "66 Fridges" Fisher. Additional comments are always welcome.
3
   
Award
Favorite
Favorited
Unfavorite
Introduction
There are three types of independently existing objects in NIMBY timetabling: lines, schedules and trains. Lines may be passenger operations or depot (non-passenger) lines.

A schedule may consist of one or multiple shifts. For a train to operate, it needs to be assigned to a shift. A shift provides a set of instructions (orders) for the assigned train. A shift can only be assigned to one train at any point in time (but could be re-assigned to another train later).

Each order in a shift is always specific to a particular line (or a line service, i.e. variation of a line), to be run at certain time(s), and may provide for one or multiple runs on this line (line service).

Orders are included in a shift via "order lists". An order list may include one or multiple orders. The same order list can be included in multiple shifts, allowing multiple trains to operate the same line(s), with fixed or variable intervals.

A train needs to be approved for a shift to be assigned to it. When a train is un-assigned from a shift, it can later be picked by another approved shift. This other shift may belong to the same or a different schedule.

This can be illustrated using the below graphic.

Illustration



There are several lines (including line services) shown on the left. There are 10 trains shown on the right. In the middle, there are two schedules, schedule X, with five shifts (X1, X2-1 through X2-4) and schedule KS, with three shifts (KS1, KS2, KS3). This allows for up to 8 trains to operate at any point in time.

Trains 1 and 2 are approved for Shift X1, with train 1 currently assigned to it and train 2 unassigned (off-shift). Trains 1-5 are approved for shifts X2-1 to X2-4. Trains 3-5 are currently assigned to shifts X2-2, X2-3 and X2-4. No train is assigned to shift X2-1.

Trains 4-8 are approved for shifts KS1 to KS3. Train 6 is currently assigned to shift KS1, train 7 to KS3. Train 8 is unassigned (off-shift), and no train is assigned to shift KS2.

Train 9 is not approved for any shift and may be sitting somewhere on a track or waiting to spawn. Train 10 is mothballed and is not present on tracks.

Shift X1 in schedule X includes order list X1, providing for various one-off runs on line services A 1, A 2, etc. Shifts X2-1 to X2-4 include order list X2, providing for 8 repeating runs on line B and a move to depot D afterwards. These shifts provide for 4 trains to operate line B, at some interval(s).

Shifts KS1 to KS3 in schedule KS include order lists KS1, KS2, KS3, respectively, with various orders included.


Lines, orders and runs
Lines, orders and runs are basic "building blocks" for NIMBY timetables. Each train movement comes down to an individual order, which provides for a train to run a specified line at a set time.

Line
Lines are defined and managed under [Lines], shortcut [F3], tab "Stops". A line is a defined sequence of station with specific platforms where trains will stop. Lines may also include waypoints they will pass through. Lines need to include stations in both directions. The same station and the same platform can be selected multiple times. It is often convenient to have the last station be the same as the first. If this is not the case, to repeat the line the train will automatically find its way back from the last station to the first, using a "glue path".

Line service
Line services are variations of the lines. Line services may differ from the line in multiple respects, e.g. skipped stops or waypoints, different stop times, speeds, platforms, colors, prices, and types of service (passenger vs. technical). They also allow additional tags. However, line services cannot include stops or waypoints not included in the parent Line. Lines and line services are used interchangeably for most of this guide.



Orders
Orders are commands to a train to operate one specific line (line service), at the specified time (or no later than specified time). Orders are entered into Order Lists, existing within individual Schedules. Refer to [Schedules], shortcut [F5].

An order can be for an entire line or a part of a line from one station to any other station. An order can specify that the train should operate the line once, a specific number of times, or an unlimited number of times. In the last two instances the order is called "repeating" (before 1.14, "looping"). Orders can also specify operation on one day of the week or multiple days of the week.

Runs
Runs are a single instance of a train operating any part or the entire line. Runs are generated automatically from Orders based on parameters of the selected line and the underlying track.

A new run starts whenever the order calls for a train to pass from the last station of the line to the first station. Thus an order to operate the line once can create one or two runs (if the ending station is earlier in the line than the starting station). In some cases an order does not create any runs - this is when there is not enough time for a run before the next order. An error will be reported in the timetable.

The below graphic shows orders and runs. Additional functionality will be covered in the next section.

Scheduling choices for trains
There are three choices for scheduling every train: Auto run a line, Mothballed, and Run a schedule shift.

Autorun a line
Each line and each line service has an automatically created auto run schedule with a single shift. These are by default hidden in the [Schedules], but can be made visible.

When you select trains to auto run a line, they will be automatically assigned to this schedule and shift(s). An additional shift is automatically created for each additional train that you set to auto run this line, and removed, should the train be reassigned to another line or another option.

Mothballed
Any train can be mothballed (stored in a "black hole" and not be present in the map). A mothballed train does not operate. It also loses any prior shift authorizations.

Run a schedule shift
A train will be running shift(s) in a schedule you set yourself. A train can only run a shift it is approved for. When initially selecting this option, you will be able to select the initial shift for the train from the list of unassigned shifts.

A train can be approved to run any number of shifts in any number of schedules. To approve the train for additional shifts, select additional schedules and/or shifts in the [Orders] tab in the [Trains] interface. Alternatively, you can switch to the [Schedules] interface, [Trains] tab, and select additional shifts for the desired train there.

To add multiple trains to the same schedule, select multiple trains by holding [Shift] and under Orders, select "Run a schedule shift". Select the desired schedule and shift.

To add or remove multiple shifts to the same train, or to add or remove multiple trains from the same shift, go to [Schedules] interface, [Trains] tab, and click on the row or column headings (shifts or trains). This will alternately add or remove ALL trains for the clicked shift, or ALL shifts for the clicked train.
Schedules and order lists
Manage schedules in [Schedules] interface, shortcut [F5].

There are two types of schedules, Auto run and manually created.

Auto run schedules
Autorun mode has been in existence without changes for many versions now. Auto run schedules have just one order, to run the selected line continuously 24x7. There is no break and no depot. Auto run schedules have two key settings, found under [Lines] interface.
  • Start time - this is the start time for the first run of the week for the first train. All other times are calculated automatically from this.
  • Interval - whether assigned trains should be evenly spaced (interval between all trains is the same), or a fixed interval should be used.
Like any other operations, Auto run lines are also affected by line timing settings, such as line duration, stop times, speed, acceleration and brake rates, etc.

Manually created schedules
Schedules have three features to enable powerful and flexible timetables, (1) Order Lists, (2) Groups and Group Offsets, and (3) Dynamic Shifts. Each feature takes timetables beyond the base level, as discussed below.

  • Base level. A single Order List, no use of groups, group offsets or dynamic shifts. There is one Schedule for each Train, with one continuous Order List containing all Orders for the entire week, and one Shift that includes this Order List, and that this Train is approved for and assigned to. This is effectively the same as how NIMBY operated in versions 1.13 and prior and how 1.13 timetables were imported into 1.14 (except Autocopy schedules). Instead of a timetable built into the Trains interface, you now have an identical timetable for the week in the form of an Order List within the Schedule, that is included in the single Shift assigned to the Train.

  • Power-use Order Lists. It is often beneficial to use the same order list in multiple shifts. For example, multiple trains may operate the same or similar sequences of orders throughout the day. You can define each sequence as an Order List and use it for each relevant train, with some variations possible at train level. The power here is that if you need to change the sequence in any manner, the change will apply to all affected trains, cutting both your initial input and maintenance time.

  • Groups and Offsets. If you not only have patterns in sequences of orders, but also repeating intervals between different Shifts (Trains) - e.g. operating every 15 minutes - in addition to power-using Order Lists you can also use Groups and Offsets to establish intervals. This is extension of the pre-1.14 "Autocopy" timetabling. Groups and offsets now allow to have variable intervals over the course of different days of the week.

  • Dynamic Shifts. If your trains daily assignments need to change, this can be done using dynamic shifts. You can end the train shift with a specific order. The train will then remain in place until it is picked up by another shift. Main use cases for this are : (a) trains end the day in different depots, (b) stacked depots (multiple trains per track), where trains may need to exit in a different order from how they came.
We will now describe each of the timetabling features:
  • Schedules
  • Order Lists
  • Shifts
  • Dynamic Shifts
  • Groups
  • Offsets
Here is where you find them in Schedules interface invoked by shortcut [F5].



Schedule
A Schedule is like a folder to store timetables for one or many trains. You can have one Schedule for each train ("base" level), one Schedule for some or all trains for a particular line, one Schedule for all trains of a particular depot, or even just one Schedule covering every train in your save (probably not practical most of the time). A good practice often may be one Schedule for each line or one Schedule for each pool of trains operating multiple lines. This allows to have shared Order Lists and also one place (Schedule timetable) where you can see all interconnected operations.

When planning trips, passengers only take into account Schedules with approved trains. Schedules without approved Trains may be helpful as a draft timetable for future operations.

Order List
An Order List is simply a sequence of Orders. "Order Lists" enable managing orders for multiple trains at a time. Each Schedule always has at least one Order List (called Default). However, it can also have any number of Order Lists. Orders can only be included into a train's individual timetable via Order Lists. Multiple Shifts can use the same Order List(s), and you can also use the same Order List multiple times in the same Shift. It's a bit of an art and a science how to use them best, and will be covered in examples. Note it is also possible and sometimes efficient to set up conflicting orders in an Order List, e.g. for alternative orders. These conflicts can be addressed separately for each Shift, e.g. by disabling one order for certain shifts and the other order for the remaining shifts.

Orders in an Order List by default are set to "continue to the next order", i.e. the train will continue operating according to the orders in the Shift. However, any order can also be set to end the Shift. In this case, the train running this Order will become unassigned and wait for the next available Shift.

An example Order List - #104 WD (weekday) for JR Azusa limited express line:


Shifts
A Shift is a single train operation for a period of time. A Shift is made by including one or multiple Order Lists (and thereby orders from these Order Lists). The version of the Order List included in any Shift can differ from the standard Order List in that it can start at a different time, and its individual orders can be modified to start or end at another station, run at a different time, or be omitted. Thus, the same Order List included into two different Shifts may provide for very different timetables. When the same Order List is included in a Shift multiple times, each time can be customized differently.

Shifts by default are not assigned to trains. To assign a train to a shift, it needs to be approved for this Shift. Any number of trains can be approved for any number of Shifts, however, in most instances it makes sense to approve the number of trains equal to the number of relevant shifts. Trains can also be approved for Shifts of different Schedules.

Any order in a Shift that is not set to continue to the next order will end the Shift (=Shift hole). In this case, the next order in the Shift will be treated as effectively a different Shift with the same name. This different Shift can be served by the same or a different train.

Shift hole vs idle train

A Shift hole (period from end of shift-ending order until the start of the next order) differs from an order for the assigned train to stand idle in a depot or at a station. Although both result in a train standing idle at the end of a shift,

  • The next order after Shift hole can start in a different place. In this case a different train will be picked up. For a stand-idle order in a continuing Shift, the train remains on-shift and will move to the place the next order starts from (if different) on a "glue run".
  • The train off-shift does not reserve track. The stand-idle train on-shift reserves track per the normal rules.
  • If the next order starts from a different place, for a continuous shift NIMBY will calculate whether there is enough time to fit a glue run from current location to the next place. If not, the current order will be skipped. For a shift hole, calculation is not performed. NIMBY assumes another train will be available at the location the next order starts from (i.e. that another shift ends there).

    An example Shift.



    If you click on an Order in a Shift, you will see which Order List is responsible for this Order.



    There can be Trains not assigned to Shifts, and Shifts without approved Trains. A Train not assigned to a Shift is either standing off-shift somewhere on the tracks, or is waiting to spawn. A Shift without an approved Train will not operate. Currently there is no report showing non-operating Shifts.

    You can approve a Train for a Shift either from Schedules interface or from Trains interface.

    Once a Train is assigned to a Shift, it can only be unassigned in one of two ways: upon completing an order that does not continue (Shift hole), or upon reset. This is the case even if the Train approval for the current Shift is removed, i.e. the Train will continue to operate the Shift until Shift hole or reset.





    Best practices for Shift setup

Groups and offsets
Group
Groups are used to establish intervals for any particular line. Groups and Group Offsets replace and enhance pre-1.14 "Autocopy" functionality.

All Orders in an Order List are assigned to a Group, which is by default Group 1. Each Group by default applies to every Shift in that Schedule. Users can define specific time offsets (see next) for each group (e.g. 10 minutes, 1 hour, 0 minutes), and also whether Groups apply to all or just some Shifts. Groups together with Group Offsets allow to set up multiple trains on a line to operate at varying intervals over the course of the day or week.

Groups are defined at the Schedule level and are shared by all Order Lists and Shifts in the Schedule. Each Schedule has 10 Groups. You don't need to use them all, and you cannot add more Groups.



Offset
Offsets are used in two contexts.
  • Group Offsets determine the interval between the applicable orders for two Shifts (i.e. two Trains) in the same Group. Like Groups, Group Offsets are established at the Schedule level and are shared by all Order Lists and Shifts in the Schedule.

    Example 1. All orders in an Order List belong to Group 1 with a Group Offset of 6 minutes. There are 10 Shifts total. Order List starts at 6:00. Shift 1 has an offset of zero and starts the Order List at 6:00. Shift 2 has an offset of 6 minutes and starts at 6:06. Shift 3 has an offset of 12 minutes and starts at 6:12, etc. Shift 10 has an offset of 54 minutes and starts at 6:54.

    Example 2. All morning orders in an Order List belong to Group 1 with a Group Offset of 6 minutes. Starting at 9:00, Orders belong to Group 2 with a Group Offset of 10 minutes. There are 10 Shifts total. The line roundtrip is 60 minutes. Order List starts at 6:00. Shift 1 has an offset of zero for both Group 1 and Group 2 and starts the Order List at 6:00, transitioning to a Group 2 Order for a run at 9:00. Shift 2 has an offset of 6 minutes for Group 1 and 10 minutes for Group 2. It starts at 6:06 and transitions to a Group 2 Order for a run at 9:10. Shift 3 has an offset of 12 minutes for Group 1 and starts at 6:12. It is excluded from Group 2. Shift 4 has an offset of 18 minutes for Group 1 and starts at 6:18. It has an offset of 20 minutes for Group 2 (because Shift 3 is excluded from Group 2) and transitions to Group 2 Order at 9:20.

    Example 3. All orders in an Order List belong to Group 1 with a Group Offset of 6 minutes. There are 10 Shifts total. Order List starts at 6:00. Shift 1 has an offset of zero and starts the Order List at 6:00. Shift 2 has an offset of 6 minutes and starts at 6:06. Shift 3 is excluded from Group 1, however, it still has the same orders as all other Shifts. By default Shift 3 has an offset of zero and starts at 6:00, i.e. at the same time as Shift 1. This results in duplicate train timetable.

  • Order List Offsets determine the time the 1st order in the Order List will run for a specific Shift, as opposed to its standard start time in the Schedule. Order List Offsets are thus specific to each instance of Order List included in a Shift.

    Example 4. Order List starts at 0:00 on Monday night (i.e. before start of Monday). Order List is inserted into a shift with Order List Offset of 6:00. The train will depart on the Order List at 6:00.
Defining Group Offsets for a Schedule:

Special case:stacked orders
Stacked Orders are a new feature. A stacked order is attached to another order and is executed immediately after the previous order ends. This can be critically important in various situations where the timetable consists of tightly timed orders. If a change to the line timetable happens, the earlier order's run time may be extended and no longer fit before the next order will need to run. In this case, the earlier order will be lost. Stacking the later order in this case will prevent losing the earlier order. This is because if the run time of the earlier order is extended, the later order will be shifted to a later time automatically.

Line timetables could change for many reasons that are not always apparent. For example, if you slightly move the line track, change a speed limit, add a tagged no-way signal, reassign platform, the train mod author changes the mod, the line reference train is changed, the game author refines train acceleration formulas, you assign a different train to the line, etc. Because these events are not always obvious and could result in loss of runs and traffic disruption, leaving some "padded wait" time (spare time) between consecutive orders is often a good practice to keep the timetable safe. This is the reason a while back I transitioned to use mostly "Minimum" line duration, as opposed to "Custom", as this allows to maximize the padded wait at line end. Stacked orders permit to overcome this issue when your padded wait is zero or very short (say, 30 seconds or less).

Stacked orders are akin to orders to "Arrive no later than", which are also executed immediately after the preceding order ends. However, you can stack any number of orders in a row.

Some use cases for stacked orders are:
  • Line change without terminus (through service). If a train changes its line at an intermediate station (e.g. from line 1 to line 2), a new Order is needed. This may be just a regular short stop e.g. 30 seconds. You can include this stop in both lines 1 and 2, e.g. 10 seconds stop in line 1 and 20 seconds stop in line 2. However, this leaves no space (no "padded wait") between the two orders. As a result, Line 1 order may be lost if the line timetable inadvertently changes. However, if you stack the line 2 order to the line 1 order, both will be executed. Example line changes in real world:

    • Basel, tram lines 15 and 16 transition into each other (no loop)
    • Vancouver, ETB lines 5 and 6 transition into each other (no loop)
    • Tokyo, many examples of through services, e.g. Tokyo Metro Tozai Line and Toyo Rapid Line

  • Single-direction line services. You may prefer to have train runs in the two directions on a line defined as individual line services. This way you can mark train destination on the train's icon and also track separately passenger flows in each direction. If the train runs a repeating service with fixed duration, you would need to put consecutive orders right next to each other, with zero padded wait, creating the risk that some of them could be lost if the timetable is changed. Stacking these orders instead can solve the issue. Every line with "Custom" line duration can be an example if you want to split the two directions into separate line services. Here is one:

    • Enoden tram line in Kanazawa Prefecture is a single track line with five places where trams can pass each other and six trams normally running the line. As a result, the line is very tightly timed and has a fixed 84 minute roundtrip time and 14 minute intervals throughout the day. Using stacked orders allows to split runs in each direction into separate line services with 42 minute run time each. Note that stacking these orders also means you will not be using repeating orders functionality.

  • Extended stop. Sometimes you may want to set up an extended stop at a particular station (e.g. station F) on a line. If you do not want to create a separate line service with the extended stop time at F, you can split the order for this individual run into two orders, one ending at F and the next starting at F. This technique will at least double the stop time at F. This may also mean you have very little padded wait time between the two orders, creating a risk that the first order could be lost. Stacking the second order to the first will address this risk.
Unfortunately an existing order cannot be converted into a stacked order. Here is how to create a new stacked order.



Additional orders can be stacked in a similar manner. Here is how a stacked order looks like.

Example 1. Repeating orders, one depot, trains start from both ends of the line
Step 1. Line basics

The line is shown on the map in orange.


  • Line - Fujisawa - Zushi (5 stations) (fictional line on real life tracks)
  • Roundtrip - 40 minutes
  • Number of trains (shifts) - 4
  • Operational mode - fixed interval-based operation
  • Intervals - 10 minutes throughout the day
  • Depot - near Ofuna station (mid-line)
  • Other details - trains go from depot to start and end the day at both terminals.

    Initial runs from depot to terminals carry passengers
    Every day's operation is the same

Step 2. Define Line in NIMBY

I recommend starting the line at one of the termini and ending at the same terminus. In the case of our line, it starts and ends at Fujisawa. The turnaround at Fujisawa is only possible via turnaround track past the station, which will be added into the line stops.



Step 3. Define Schedules and Order Lists

Generally one Schedule is sufficient for one line. No reason to have more than one Schedule here.

Order Lists are like building blocks or patterns covering the entire operation. What are the patterns for this line?
  • Repeating line roundtrips - All trains will make multiple roundtrips throughout the day => Make this Default Order List
  • Depot - All trains park for the night in the same depot => Make this Depot Order List.

Between the four trains, there are three different combinations of how they start and end the day (i.e. first run from Ofuna and last run to Ofuna). We can accommodate these variations when we insert our Default Order List pattern into individual trains timetables. Shifts E-01 and E-02 both start by going from Ofuna (stop 2) to Zushi (stop 5), and end the day going from Zushi (stop 5) to Ofuna (stop 8). So we will include these as the first and the last stops in Default Order List. We will modify how the Default Order List works for shifts E-03 and E-04.

Below is the summary of our Order Lists.



Step 4. Define Groups and Offsets

Groups and Offsets are used to set up intervals for train operations. Since our four trains will have 10 minute intervals, we will make use of Groups and Offsets.
  • Group 1 - use for runs without intervals (i.e. depot)
  • Group 2 - daytime operation - 10 minute interval

Step 5. Set up Schedule, Order Lists, Groups and Offsets in NIMBY

Here is the Schedule and its four Shifts:



Here is Order List Default - it is very simple and has just one repeating order. This order is in Group 2 because we want trains to be spread 10 minutes apart when running the line. The start time at 5:50 is the first full run of shift (train) E-01 from Fujisawa, for our convenience. This means the train will need to depart from the depot earlier.



We used the timing option "-1" for timing the Order List. In our case the train enters the line at stop 2, after stop 1, so will first reach stop 1 on the next run after it completes almost the entire line. If you think of the run where the train first reaches the Timing Stop (stop 1) as run N at 5:50, it needs to enter the line at stop 2 at run N-1. This is why option "-1" was chosen - it's as if the train entered the line at stop 1 for loop N-1 (i.e. at 5:10).

The other option is "=". It means the train would enter the line at run N. Because it enters at stop 2, it actually won't be at stop 1 at 5:50, and instead will first reach it at 6:30. In this case, the timing is as if the train entered the line at stop 1 for loop N, i.e. at 5:50.

The below picture illustrates this further and also shows how these options would work if the timing stop was after the enter stop (e.g. if we used the opposite terminal stop 5 as the timing stop).



Here is the Order List Depot - it also has just one order, to arrive into depot before 1:00 in the morning. This is a convenient time to use, because it means trains can still make the last run around midnight. The depot line is called _JO D Kamakura.



Here are Group and Offset definitions (in Schedule):



Step 6. Insert Order Lists into Shifts

This is now very easy. We can simply insert Default Order List into each of the Shifts E-01 through E-04 at the default time (Shift Offset = 0:00), and then insert Depot Order List into each Shift as well, also at the default time.



This is how the top part of each Shift should now look like:



Note that the time for each Order List is relative, i.e. it shows how different it is from the standard time. In this case, the time is 0:00 for both Order Lists because they both run at their respective standard times (Depart 5:50 at stop 1 option "-1" for Default Order List and Arrive before 1:00 for Depot Order List).

The entire timetable for now looks like this.



Example 1 (continued, Step 7)
Step 7. Customize Order Lists for Shifts

Now we want to customize the orders for different trains so they start and end their runs at the desired terminus as we defined in step 1. We will also do one additional customization. We don't need 4 trains on the line after 21:00, so we will send two of them into depot at around that time.

Changing the starting and ending termini is very easy. For Shifts E-03 and E-04, we find the appropriate order for running the line within the Shifts, click "Override enter/exit/timing stop" and change as follows:

Both Shifts E-03 and E-04 - change Enter from stop 2 to stop 8 - so now the train can depart toward Fujisawa instead of Zushi in the morning

Shift E-04 - change Exit from stop 8 to stop 2 - so now the train will go to depot when arriving from Fujisawa instead of from Zushi in the evening



Tip: It often may make sense to set the timing of the order to a specific station, as opposed to <Same as enter stop>, even if it's the same stop. This is because if I want to change the enter stop, as is the case here for Shifts E-03 and E-04, I don't need to change the order time. It is still tied to the station I designated, regardless of what the enter stop is.

To send two trains to depot around 21:00 is also easy but requires basic math. I will send Shifts E-02 and E-04 into depot early, leaving the other Shifts E-01 and E-03 with 20 minute interval.

Both Shifts E-02 and E-04 - click on Depot Order List, click Edit and change Offset to 20:00. The Order Lists' normal start time is 1:00, and we want the Shifts to go to Depot by 21:00. This means a 20 hour offset.



There is an alternative way to change the timing of the depot order. You can put a time override for the order for 21:00. Select Order (not Order List), click Override start time, and change time to 21:00.



Tip. Whether to change the Order List Offset or the Order time depends on your preferences and also how many orders are in the Order List. If there is more than one order, using Order List Offset is likely more efficient.

We have now done all we wanted, and can do a final check. This is the timetable now.



Based on the final check, we want to make one last refinement. Although trains go on line as early as 5:15, the first train does not depart from Fujisawa terminal until 5:50. This feels a little late. Let's add an earlier departure for one of the trains. Given 40 minutes round trip, Shift E-03 is a good candidate for this. It first departs Fujisawa at 6:10, so an earlier departure would be 5:30, creating 20 minute interval to the next departure at 5:50.

Go to Shift E-03, select Default Order List, and put in Offset at negative 40 minutes. (Alternatively you can put in Order override time to 5:30).




Note the new Order List time at the top is negative 23 hours 20 minutes, probably not the best calculation, but it does reflect departing 40 minutes earlier.

The final timetable is here.

Example 2. Varying intervals, repeating orders, offsets
The original suggestion for this example was to show "A line where you have peak service that goes from every x minutes to every x/2 minutes during the day." You will see this example is a bit more complex. It is a line that goes from 5 minutes peak to 8 1/2 minutes off-peak, to 12 minutes in the evening. I deliberately wanted to avoid splitting the interval in half, because I wanted to show how you can take advantage of NIMBY 1.14 functionality in a more general case. As you read this, you may realize you can do a simpler setup in your specific case. You can still follow all the steps below, but may find them to be quicker, easier or not applicable. I hope you find this example useful either way.

Step 1. Line basics

The line is shown on the map in red with black follow-through.


  • Line - Center* - District 5* (5 stations) (Yaroslavl's Tram Line 1 pre-2005)
  • Roundtrip - 54-60 minutes (depends on service line)
  • Number of trains (shifts) - 11
  • Operational mode - varying intervals (rush hour, mid-day, weekends)
  • Intervals


  • Depot - not far from Center terminus. Enter from line stops 2, 3 or 21. Exit to Center terminus.
  • Other details - Last runs from terminus to depot entrance carry passengers
* Fictional names for purposes of this example

Fun fact. "District 5" is a rough translation of the Russian informal name for the entire residential district served by this Line 1. It is actually named after this very tram line, which used to be line 5 back in the 1960s when both were built. The name remains even though the tram was renumbered line 1 more than 50 years ago.

Step 2. Define Line in NIMBY

Again, I recommend starting the line at one of the termini and ending at the same terminus. In this case, Line 1 is set to start and end at Center loop, which are stops 1 and 24 (they are identical). The Center terminus was chosen because it is close to the depot. An additional stop at the same platform (stop 25) is added to create padded wait before a new order. All line orders are set to end at stop 24. Thus, stop 25 is only used when the tram will repeat its run on the same order. Stop 1 is 1 minute, stop 24 is 30 seconds and stop 25 absorbs the remaining time up to the line duration. For example for parent line stop 25 is 2 minutes 5 seconds long.

The standard line duration is 55 minutes. There are two line services, with 54 and 60 minutes duration (called S, for short, and L, for Long). They only differ by stop time at termini and are used to make intervals easier to manage.



Step 3. Define Schedules and Order Lists and enter into NIMBY

Generally one Schedule is sufficient for one line. No reason to have more than one Schedule here.

Order Lists are like building blocks or patterns covering the entire operation. What are the patterns for this line? This is a bit of an art and a bit of science.
  • Workday pattern - Intervals 8 1/2 - 5 - 8 1/2 - 5 - 8 1/2 - 12 - This means 6 different orders => we will call it 1 Weekday Order List, or OL1. This Order List will provide for 5 days of operations for all orders. Some trams do not work all intervals, but we can simply exclude those orders. Repeats were set with a limit, but could have been unlimited. The timing of the orders was for the first tram to run each order.



  • Weekend pattern - Intervals 12 - 8 1/2 - 12 minutes - This means 3 different orders => call this 2 Weekend Order List, or OL 2. This Order List will provide for 2 days of operations.
    All runs in the above order lists are repeating. The timing was for the first tram to run each order.



  • One-off runs - to add runs to standard Order Lists OL1 and OL2, or to change the time of runs from OL1 and OL2 by placing these runs instead. Five order lists were set up, with each timed to 0:00 on Monday (weekday orders) or Saturday (weekend orders).



  • Depot runs. There are two depot entrance - South and West. South entrance is 1 stop away from the Center terminus and therefore is entered into from Stop 2. West entrance is another stop away and can be entered into from both directions - from stops 3 and 21. I decided to include the final runs from Center to stops 2, 3 or 21 into the depot order lists, along with the exit order from the depot, to Center terminus. Therefore there are six Order Lists for depot runs, three for weekdays and three for weekends. Each order starts at 0:00 on Monday or Saturday. Then you would use Order List Offset for each tram equal to its actual start time.


In total there are 13 Order Lists for this Schedule and line.

Step 4. Define Groups and Offsets

Groups and Offsets are used to set up intervals for train operations. Since this is a tram line with defined interval patterns, we will make use of Groups and Offsets.

We need a separate group for each interval (5, 8 1/2 and 12 minutes). In addition, different trams work during 8 1/2 minute interval on weekdays and on weekends. The same goes for the 12 minute intervals, and even the 12 minute intervals on weekend mornings and afternoons are served by different trams. Thus, we will use 7 groups here.



We will jump ahead a little and look at how Groups and Offsets will eventually look in NIMBY when we are done. You can see how each Group Offsets only apply to certain shifts.

Example 2 (continued, Steps 5 and 6)
Step 5. Insert Order Lists into Shifts

We will insert Order List OL1 (weekday) into each of the 11 Shifts at the default time (Shift Offset = 0:00). We can insert Order List OL2 (weekend) into the 7 Shifts that will work the weekend, again with Shift Offset = 0:00. How do we select the 7 shifts for the weekend? Here they have been selected based on which trams (and in what order) would be convenient to pull out of the very tight depot. Other considerations may apply in other cases.



This is how the top part of each Shift should now look like:



Note that the time for each Order List is relative, i.e. it shows how different it is from the standard time. In this case, the time is 0:00 for both Order Lists because they both run at their respective standard times. This means that any order within any group will also have a Group Offset applied to it. For example, in OL1 the order for peak hour runs in Group 2 is set standard at 7:10. This will apply to tram shift 1. Group 2 applies to all 11 shifts. Thus, for tram shift 2 this order will be inserted for 7:15, for shift 3, at 7:20, etc. For example, this is what has been inserted into Shift 6:



The order for mid-day operation has 8 1/2 minute interval, is in Group 3 and applies to 7 trams, excluding shifts 3, 6, 7 and 11. The standard time for this order is 9:00 and has been inserted into Shift 1. Shift 4 is the third shift in this group 3 (shift 3 is excluded). Thus, this Order is inserted into Shift 4 at 9:17.



Let's also add depot orders, simply to cut off runs through the night. We can just add order list S Depot WD into each shift, and S Depot WE into each shift working the weekend. We can pick any time for now, let's set it for 23:00. Because depot shifts are all set for 0:00 on Monday or Saturday, the Order List Offset time you pick will equal the time of "no later than" arrival into the depot.




We can look now at the first version of the timetable now (weekday in the screenshot). It's very preliminary. Most visible issues (skipped runs, long waits) come from the change in intervals.



Step 6. Remove unneeded shifts and make smooth transitions between patterns

You can see in the timetable that it works pretty well within each pattern of the day (e.g. morning rush, mid-day, etc.) but some patterns (e.g. mid-day) have too many shifts and transitions between patterns are not smooth, creating long waits for some trains.

Transition from morning rush to mid-day pattern

We will start with transition from morning rush into mid-day, from 5 to 8 1/2 minute interval. Mid-day starts at 9:00. We need to remove 4 shifts to allow this. We can set up departure times for both 5' and 8'30'' patterns after 9:00 next to each other to determine how to do this. We ask a question for each Shift - can we remove it and have the next shift run the next departure time? If yes, generally, remove it and send to depot. No need to keep trams on the line too long. The whole process is below. Note how having Stop 25 helps here be more efficient with transition.



Now we will adjust our timetable to remove shifts 2, 5, 7 and 10 from mid-day pattern. We need to do two things. In Schedule Offsets, unclick shifts 2, 5, 7 and 10 from group 3. See how the automatic offsets for the remaining shifts recalculate.



In OL1, order at 18:45 (after the afternoon peak) is in the same Group 3 as the mid-day order. So Shifts 2, 5, 7 and 10 won't run it. They also won't run the following order for evening runs at 20:45 which is in Group 4. So also unclick shifts 2, 5, 7 and 10 from group 4.

Then for each of the shifts 2, 5, 7 and 10, find the mid-day order (with the timing of 9:xx) and unclick "Enable order". Do the same with the evening order (timing of 18:45) and late night order (timing of 20:45). Example:



Let's also send shift 2, 5, 7 and 10 to the depot at the end of each rush hour shift. The morning pax demand is from District 5 to Center, so it's good idea to let shifts 2 and 5 reach Center terminus and send them to depot south entrance. Shifts 7 and 10 end their last runs closer to 9:30, past peak, so we can divert them into depot west entrance from stop 21 on the last run.

For shifts 2 and 5, insert Order List S Depot WD with Offset equal to their next departure time (9:05 and 9:20). For shifts 7 and 10, insert Order List W Depot N WD with Offset equal to their previous departure time (8:35 and 8:50). For example:



For afternoon peak, the pax travel from Center to District 5. So no reason to bring trams back to Center terminus on their last run, they can enter depot from stop 21. Insert Order List W Depot N WD with offset equal to the time of the last peak run (17:55, 18:10, 18:20, 18:35).

All shifts initially had Oder List S Depot WD inserted at 23:00. We no longer need this for Shifts 2, 5, 7 and 10, so delete it.

Here is the updated timetable. It now looks pretty well between 7:00 and all the way until end of evening runs around 20:45, other than we need to correct times when shifts 2, 5, 7 and 10 go back on line. Even though we have not at all touched transition from afernoon peak to evening pattern, it works exactly the same way as the morning peak to mid-day, just 9 hours 45 minutes later. Because the same groups 2 and 3 are used for the respective peak and off-peak orders, we did not have to do any extra steps.



Transition from evening to late-night pattern

Now we need to transition the schedule from evening (7 trams) to late night (5 trams from 20:45). We do the same process of figuring out which shifts to send to the depot. This results in sending Shifts 4 and 11 to the depot.




To do this, same as above, unclick Shifts 4 and 11 from Group 4. Then disable 20:45 orders in Shifts 4 and 11.



The new timetable - you can see Shifts 1, 3, 6, 8 and 9 operate with 12 minute intervals after 20:45.



Where we are

We are now done with setting up the patterns of repeating operations. All that now remains is sending the trains to the depot in the evening (remember we initially set up depot time at 23:00) and getting them on line in the morning, plus any other minor adjustments.

Weekend patterns

The above showed creating the weekday schedule. The same process can be applied to the weekend schedule as well. Most of the day is operated with 7 trams and 8'30'' intervals. Morning (7-10) and evening (19-22) have 5 trains. We use groups 5 (mid-day), 6 (evening) and 7 (morning) here.



Order List 2 (weekend) has 3 orders for the 3 patterns. Shifts 6, 7, 10 and 11 don't have this Order List. But for shifts 2 and 9 we need to disable the evening pattern order and for shifts 1 and 5 the morning pattern order. Here is the resulting weekend timetable.

Example 2 (continued, Step 7)
Step 7. Customize Order Lists for Shifts

There are just a couple remaining items now.

A) Send each tram to the depot at the desired time
B) Get each tram from the depot at the desired time
C) Check for intervals in transition and smooth them if desired.
D) Ensure proper tram sequencing.
E) Any other clean up as may be required.

A) Send each tram to the depot.

We first want to determine here the last full line departures for each terminus. I decided these will be between 23:30 and midnight on weekdays - Yaroslavl does not have a lot of night life. Now which of the remaining five shifts (1, 3, 6, 8, 9) should take them? Given one hour roundtrip time, I can make it shift 1 for departure from Center at 23:45, and shift 6 for departure from District 5 at 23:38. This means shift 1 should take Order List W Depot N WD at 23:45 (ending passenger run at stop 21 and going into depot), and shift 6 should take Order List S Depot WD (or W Depot S WD) at 0:09. Both of these already have depot order list inserted (S Depot WD for 23:00), so just need to change it to the desired order list and/or time.




Now the departures from Center after 22:09 (shift 6) are set to 22:45 (shift 1), 23:09 (Shift 6), 23:45 (shift 1, last full line departure), 0:09 (into depot). We can either have the remaining shifts continue to maintain the 12 minute interval and then send them to depot, or start getting them to depot earlier. We will do the latter. Between shifts 8 and 9, one will go to Depot after 22:00 and the other can run between their normal departures - e.g. at 22:27. This would be Shift 8. To do this we will include Order List 3B (standard 60 minute roundtrip) with offset of 22:27.




This means final departures from Center are now 22:09, 22:27, 22:45, 23:09, 23:27, 23:45. Some minor refinements can be made further to smooth the interval, but we'll leave it at that. Now just need to adjust the depot time and/or order lists for the remaining shifts. Also do a similar exercise for the weekend operation.

The new weekday timetable:



B) Get each tram from the depot at the desired time

This is a similar process and is convenient to run backwards from the start of the morning peak at 7:10. First we determine our earliest morning departure times. The depot is very close to the Center terminus. So, though it is possible, it does not make sense to send trams from Depot to District 5 without passing through Center. Thus the first shift from District 5 will also be the first shift from Center. We will make it around 5:30.

How many departures do we need between 5:30 and 7:10? One of the factors here is the depot, which has to accommodate multiple trams (3-5) per track. So however we position the trams when they arrive in the evening, they need to get out of the depot in the same order in the morning.

Because not all 11 trams will leave depot in order of shifts, we may need to adjust departure times to smooth out the intervals. Order lists for one run (3A, 3B, 3C) are convenient there.

Going back from 7:10, we will tentatively set up departures from Center to be 7:04, 6:58, 6:51, 6:44, 6:36, 6:28, 6:18, 6:08, 5:55; 5:35. Now let's see which shifts can take them, and whether we can use shifts from the OL1 (it has two 60-minute runs included before the morning peak runs) or one-time run order lists 3A, 3B or 3C. When doing this, we should remember 60-minute line service has stop 25 with 7 minute 5 second wait, which will be skipped when a new order starts. Here is what we come up with.



Now we will convert it into NIMBY. Where we do not use OL1 runs, we need to disable that early morning order (shifts 1, 3, 5, 9). For the remaining shifts that use OL1 runs, we will simply put time override and input order time per the above. For example, for shift 5 we will put OL1 first order time at 5:35.




Then insert any other Order Lists for the remaining shifts. For example, for Shift 5 we will insert OL 3A at 6:36. Note how it cancels the repeat of the previous order that would have happened at 6:35 and sandwiches between two orders from OL1.




Pending cleanup, the weekday timetable is now done and looks like this. The break lines you see in the depot orders show when the trams come from depot to Center terminus and is actually the largest remaining clean up item.



C) Check for intervals in transition and smooth them if desired.

This can be done for example by looking into either the Schedule timetable or the station timetables. If needed, the timing of individual runs can be changed by a few minutes here and there. For this purpose, one-off order lists 3A, 3B or 3C can be used.

D) Ensure proper tram sequencing.

When trams come on line from the depot, you want to make sure they don't come behind an already operating tram, if they need to be ahead of it. Mind that between stops 1, 24 and 25, yellow runs can spend a total of 8'35'' at Center terminus. Red runs can spend 3'35''. For example, in the above timetable shift 2 first run in the afternoon is at 16:05. Shift 3 is operating through mid-day and arrives at Center terminus at 16:00 for its departure at 16:10. The previous Shift 1 arrives at 15:51. This means Shift 2 tram needs to reach Center from depot between 15:51 and 16:00. 15:57 may be a good time for this. To make this change, go to Shift 2, find this order and put override time to 15:54 (taking into account 3 minute run from the depot).




Check all other arrivals from depot. With 11 trams including 4 breaking mid-day in the depot, you need to fix 15 timings.

E) Any other clean up as may be required.

Final weekday timetable.

Do your final review and correct for any other issues. Once you are done, this is the final timetable for the weekday. Note we ended not using order lists 3B or 3C at all, so they can be deleted, as well as the line service short.



Final weekend timetable

We also repeat the above process for the weekend schedule. This is the final schedule for the weekend.



We are done.

Example 3 Long line, multiple depots, directional line services
Step 1. Line basics

The line is shown on the map in blue.



  • Line: Tokyo - Shin-Osaka (Tokaido shinkansen)

  • Roundtrip - close to 8 hours (similar to Kodama service)

  • Number of trains (shifts) - 48

  • Depots - Tokyo, Osaka, Nagoya, Mishima (all black hole)
    Nagoya and Mishima are about 1 hour ride from Osaka and Tokyo, respectively
    Nagoya and Mishima-based trains depart in the morning in both directions

  • Operational mode - this line operates a simple fictional timetable
    All trains make all stops, similar to real life's slowest service Kodama
    Each train does two full roundtrips per day from its starting point
    First departures from Tokyo and Shin-Osaka are at 6:00
    Last departures are at 21:50 (to Mishima and Nagoya only)
    Last full-line departures are 19:00 from Shin-Osaka and 19:10 from Tokyo.

  • Intervals - 10 minutes throughout the day (6-24)

  • Other details - This line was established to generate money for my Tokyo area network growth. A simple timetable was quickly put together until the real life based timetable is developed.

This line was set up in 1.13 using six groups of Autocopy trains, each with 10 minute intervals. These groups were each imported into 1.14 as a separate Schedule with the number of shifts equal to the number of trains (5-11 per group). I thought for a while just to leave it as it was imported. Nonetheless, you can improve the set up in 1.14. This example will show how. Here are the six groups of trains.



What you will see is how I consolidated six schedules into two and simplified the order lists. This was not a big lift, the entire process took less than an hour to convert.

Step 2. Define Line in NIMBY

As always I recommend starting and ending the line at one of the termini. In this case, the line starts and ends at Tokyo Station, stops 1 and 34. There was no particular reason to choose Tokyo over Shin-Osaka other than my network is focused on Tokyo.

This line is an example of where I use separate line services in each direction, for multiple reasons.
Six line services were established, destinations used as names: Tokyo, Shin-Osaka, Mishima (from Tokyo), Mishima (from Shin-Osaka), Nagoya (from Tokyo), Nagoya (from Shin-Osaka). The last four are only used for the final runs of the day, followed by runs into depots.

No separate line services are set up for runs from intermediate stops (Mishima and Nagoya). A train from Nagoya to Tokyo would enter Tokyo line service from stop 5.

The consecutive departures from the two end termini are 4 hours apart. For example, a train would depart Tokyo at 6:00, then depart Shin-Osaka at 10:00, then Tokyo at 14:00, then Shin-Osaka at 18:00 and end its trip in Tokyo around 21:53 and head into the depot.

Using four depots allowed to ensure all trains have similar operating hours. The earliest train starts running at 5:53 (from Nagoya) and the last one ends running at 23:41 (also in Nagoya).

All line services have "Minimum" duration. For example, Tokyo to Shin-Osaka is 3 hours 48 minutes run time. This leaves 12 minutes of stop time in Shin-Osaka which is also "padded wait" time. This setup allows to send the train on its next run earlier if desired.

Here is the line setup.



Here is the timetable in 1.13 - note it can only show 30 trains out of 48 that operate the line.



Step 3. Define Schedules and Order Lists and enter into NIMBY

Generally one Schedule is sufficient for one line. However a single Schedule can only show 30 shifts in the timetable. There are 48 trains here. So I decided to set up two Schedules with 24 trains each, solely for timetable presentation reasons. One Schedule is trains that have Tokyo as the first terminus, and the other trains that have Shin-Osaka as the first terminus. They are called "Tokyo First" and "Shin-Osaka First".




Order Lists are like building blocks or patterns covering the entire operation. What are the patterns for this line? As always, some art and some science here.
  • Each train makes either four or five passenger runs during the day. It's either four full line runs starting with either Shin-Osaka or Tokyo, or three full line runs and two partial runs. For example trains starting in the morning from Mishima to Tokyo will go Mishima Depot - Mishima - Tokyo - Shin-Osaka - Tokyo - Shin-Osaka - Mishima - Mishima Depot. Therefore there are six patterns present, same as the six schedules imported from 1.13. Each schedule has between 5 and 11 trains.

  • In principle, it is possible to combine it all into a single Order List. But this would then require for each of the 48 trains to exclude multiple unnecessary orders and customize to change start stations where applicable. This was dismissed.

  • Ultimately I decided to keep order lists as they came on import from 1.13. As I left only two schedules, I copied the other four order lists into the respective schedule. Each schedule now has three Order Lists for a full day operation, including depot runs. They are called "Depot Mishima", "Depot Nagoya" and "Depot Osaka (or Tokyo)".

    Doing it this way (and using Groups and Offsets, see Step 4) allowed to simplify Order Lists a lot.

    Compare the three Order Lists for Schedule "Tokyo First". They look very similar! The three mid-day orders (black marker) are simply identical between all three Order Lists. The early morning orders from Mishima and Nagoya (blue marker) have the same start time (2:00) and the same line service (to Tokyo), but have different enter stops (stop 5 vs. stop 12). And the last passenger orders (green marker) have the same start time but different line services (to Tokyo, to Mishima and to Nagoya). Note all orders are in Group 1.



    This was made possible through (1) the use of just a single Group 1 for all orders - creating shifts - and (2) selection of stop 1 as the timing stop for each order. Groups are discussed in Step 4. Using stop 1 as timing stop (with the previous departure time from Shin-Osaka if the service was running through the night, i.e. 2:00) allowed to automatically ensure the trains from Nagoya and Mishima are in the same sequence of shifts with each other and with trains based in Tokyo Depot. So departures from Tokyo seamlessly transitioned from Tokyo-based trains to Mishima-based and then to Nagoya-based.

    The exact same approach was done for Schedule "Shin-Osaka First", and they also transition seamlessly to follow departures from Tokyo right when the "Tokyo First" shifts ended.

Step 4. Define Groups and Offsets

Groups and Offsets are used to set up intervals for train operations. Since this is a line with a single interval pattern of 10 minutes, we will make use of Groups and Offsets.

Because there is only a single interval that all trains follow, we only need 1 group. This is despite the fact that there are three Order Lists and each train only runs one of them - that does not matter. Here are the Offsets for Group 1 for Schedule Tokyo First. The other Schedule's Offsets look identical.

Note we have not yet established all Shifts for the two Schedules, so your Group may have fewer shifts. We will set up Shifts in Step 5.

Example 3 (continued, Step 5)
Step 5. Add Shifts and Insert Order Lists

This is now very easy. Depending on where you start, you may already have a few shifts or may not have any.

If you don't have any, here is what we do with the first Shift, we will call G1, for Schedule "Tokyo First" - simply insert Order List "Tokyo Depot" with Offset equal to 0:00.




You can continue doing the same thing until you use up all 7 shifts based in Tokyo, then transition to Mishima Depot Shifts, then to Nagoya Depot Shifts. Each get the respective Order List inserted.

Or you can do it differently. You can clone the shift, and in the next step you can assign it a train, if you have it already. The exact same Order List with the exact same Offset should be entered, so you can simply keep cloning (make sure to switch though to the Mishima Depot and Nagoya Depot Order Lists when appropriate).



Do the same with the shifts in the other Schedule.

This is actually it. We are DONE. Here is what the Schedule "Tokyo First" timetable looks like for every day of the week.



And this is Schedule "Shin-Osaka First" timetable.



Although I have to deal with two Schedules, but I can easily see each train's timetable.

But what if I would prefer to have my first train start at Mishima 10 minutes earlier at 5:59 instead of 6:09 and then depart Tokyo at 7:00, and have the last Tokyo train instead go on its first run at 7:10? This is literally a single click operation. Shifts are assigned in the order they have in the Shift list under the Schedule. So just simply move the first Mishima Depot based Shift one position above the last Tokyo Depot based Shift, like so.



And now the timetable looks like this.



Final Note

One question you may be asking, how did I determine how many trains should be based in each depot? This was simple here. I wanted first trains depart every station with a depot close to 6:00. From Mishima to Tokyo it takes 54 minutes. So the first train leaving Mishima at 6:09 would arrive in Tokyo at 7:04 and would be able to then depart Tokyo at 7:10. This is not very realistic (in real life 15 minutes is the minimum) but was good for the simple timetable I was creating and allowed me fit into the easy 8 hours roundtrip. But this meant 7 trains based in Tokyo - departing between 6:00 and 7:00 before Mishima Depot trains are arriving.

One thing I did not consider is how many tracks are in Mishima and Nagoya Depots - turns out, fewer than the trains I assigned. This is a good example of how easy making a change is here in 1.14. If I want to reassign 2 or 3 trains from Mishima to Tokyo depot, all I need to do is to change their order lists (one change in a drop down menu plus one click per train), and perhaps change the order of the shifts (a couple more clicks).
Legacy models - before 1.16
Legacy timetable model - 1.5 through 1.13



In this model, each train had a fixed sequence of orders to operate. Each train's sequence had to be defined on its own, except for the Autocopy trains, where multiple trains could operate an identical sequence of orders with a time offset (interval). Schedules and shifts did not exist. Using today's terminology, each train was assigned to a fixed shift, and each sequence of orders formed its own order list and its own schedule.

Legacy timetable model - 1.14



In this model, schedules, order lists and shifts were introduced, same as they exist today. Order lists now could be shared between multiple shifts, expanding the functionality and adding flexibility to Autocopy shifts. Train assignment to shifts was fixed.

Train timetable before 1.14

A train timetable was simply a collection of its runs based on a sequence of orders. There were three ways to organize the timetable, and any unneeded trains you did not want to sell could be stored (mothballed).



Autorun
The timetable is created automatically for all trains assigned to a line, operating them 24x7 and aiming for a steady interval. Autorun is still carried forward without changes.

Manual
Users create manually timetables for each train, inserting various orders and creating runs.

Autocopy
Users create manually a timetable for one train, and assign additional trains to operate an exact copy of this timetable, with a time shift (e.g. operate 10 minutes later or 1 hour earlier).

Mothballed
Any train with or without a timetable can be mothballed (stored in a "black hole" and not be present in the map). Mothballed trains are still carried forward without changes.
7 Comments
adlet  [author] 26 Dec, 2024 @ 7:42pm 
TheNewNo2 26 Dec, 2024 @ 2:00pm 
I've read this guide and tried to apply it to my own save, but just get nonsense on the timings - it tries to do the depot all day. Is there a download of this save so we can see what was done in yours? I've never used orders before, only auto run line.
adlet  [author] 21 Dec, 2024 @ 2:21pm 
@AmazinJ I used to set up a whole timetable in a spreadsheet before moving to NIMBY but not anymore. I use spreadsheets as either (a) download and store of IRL data, (b) to figure out depot or terminus track assignments, (c) to record train rotations between shifts and similar other minor auxiliary tasks. But the main timetable, I do directly in NIMBY now.
AmazinJ 21 Dec, 2024 @ 12:40pm 
do you use a spreadsheet template to work out all your train timetables?
Cassette-P 21 Nov, 2024 @ 1:32am 
Really helpful and easy to understand. All the 3 examples are typical and screenshots with annotations are truly great. Many thanks for your excellent tutorial. 🙏🏿
Taipei Native 11 Oct, 2024 @ 8:08am 
Very useful and intuitive with the help of screenshots. Thank you very much!
CTA_Racer 1 Oct, 2024 @ 10:12am 
amazing tutorial thank you very much!