Structure

Timetables created using SimSchedule are saved with the extension .timetable extension, but internally, the data is a file structure enclosed in a Zip file. You can take any .timetable and rename the extension to .zip and work with it the way you would with any .zip file.

The benefits of having timetable data files inside a zip file (as opposed to tables in an MS Access database) are:

the data, in its raw form, is human-readable and human-editable

database developers are not limited to using a single program for editing (theoretically, someone could make a tool to edit the data better than SimSchedule does)

backwards compatibility (the ability to add new features without breaking old ones)

data transparency (there are no mysteries in how the data is stored and edited)

Trains

Stabled Trains

Soft Orders

Expert Levels

Paths

Activity Codes

Vehicles

Consist Templates

Physics

This data is the same as what was defined in the TrainTypes table. It provides some numbers that determine locomotive and braking properties.

Load Classes

A Load Class is essentially an ID number and a text description for types or classes of freight. This is not to be confused with Load Types which are more specific.

Load Types

Each Load Type belongs to a Load class. For example, types such as "kerosene", "gasoline", "benzene", etc., would all belong to a class called "flammable liquids". Whereas a Load Class defines what sort of freight a car can carry, a Load Type defines what a vehicle is currently carrying.

Load Types are pieces of text that the user can see in the sim, so they need to be localised in different languages.

Special Dates

Special dates like Christmas, New Year's, and country or region-specific holidays (like Queen's Day in the Netherlands) can be defined here. Dates are defined using both day, month, and year, as some holidays occur on different dates in different years. If the timetable designer wants to have a holiday defined for a 5 year period, then 5 entries need to be made for that specific holiday.

The result of a train running on a special date is that the schedule is the same as it would be for the day of the week that's specified. If you define Christmas to be like a Sunday, then trains running on Christmas will run as though it were a Sunday, even if Christmas falls on weekday.

This screen allows for the names of special dates to be localised.

Period Templates

Period templates are useful when creating many trains with commonly-used periods in which they run or do not run.

Auto Steering

This feature is for defining train ID-based automatic train ID renumbering only. There are other steering systems that are edited in the layout editor, and are separate from this option.

For layouts where certain train ID patterns should trigger an automatic renumbering of panel train IDs, this screen provides a method to enter such data. For each track, a number of rules can be defined. There are several types of these rules. This system operates using regular expressions.

AddSteering

Adds a steering number to the matched train ID pattern.

RemoveSteering

Following a match, removes the first digit of the train ID.

ChangeSteering

Following a match, replace one steering number with another.

ChangePartofNumber

Following a match, replace the contents of the matched group with another.

IncrementValue

Following a match, treat the train ID as a number and increment the number by a specified value.

Translations

In order to localise remarks/train instructions in trains, you have the option to construct those pieces of text using short codes that are replaced with localised strings upon loading each train.

Sanity Checks

Some data errors can be detected algorithmically but they are expensive (time-wise) to discover, so these checks are not performed automatically when saving or loading.

StabledTrainCollisions

This sanity check checks whether there are any stabled trains that will appear on the same track at the same time. Considering that every stabled train is compared with every other stabled train, on every day that it runs, this sanity check can take a considerable amount of time for timetables with many stabled trains (perhaps a minute or more).

If a problem is discovered, you will see a message similar to

Stabled trains XXXX and YYYY are on the same track(s) at the same time.

MissingTrainData

This checks for trains that do not have certain values specified:

TrainModel

Trains that are not running any days

Trains that are not running any time periods

MissingReferences

This checks that missing references do not exist. For example, a train could have a consist template that does not exist. Otherwise, you will get an error message similar to:

PlatformStopStationNames

This checks that the platform names for each train matches with those names defined in the layout data. Such a problem can arise when a timetable is made after changes are made to the platform names.

Regions

SimSchedule supports the concept of regions, where some trains operate one one region but not others. At the moment, there is only one region to which all trains belong.

Info

Provides some meta data about the timetable, including when it was first created, most recently edited, and the number of times it has been saved.

Creator: Tnformation about where the timetable came from. If it was exported from an old MS Access file, it will indicate this here.

Created: Date that the timetable was first created or exported.

Last Edited: Date that the timetable was more recently changed using SimSchedule. Obviously, manual edits to the .timetable file will not be reflected here.

Revision: Each time a timetable is saved, this version number increases by one. This provides an automatic version control scheme.

Optimisations

SimSchedule has a few options in how data is stored internally. Originally, the system was designed so that one train was saved per file, within the .timetable archive. Since each .timetable file is just a zip file, this method of saving creates a lot of small files. It is faster and more efficient to write fewer, larger files than many smaller ones. Switching these options on can drastically reduce the size of timetable files, at the expense of some human-readability. If you are not intending to ever unzip a .timetable file and edit manually, these options should be checked/on.