Only significant changes listed (latest changes first)
Version 2.10.0 (10/10/21)
This version fixes a few bugs and also incorporates a number of changes.
Krizar has added new files and program modifications that allow real-time information extraction during program operation. These open up great potential for future development using external interacting programs.
Another brainchild of Krizar’s is the inclusion of a new folder in the zip called ‘Metadata’. Metadata is data about other data, or information about other information. The folder contains two files, one for each of the two railways that come with the download – Birminham and Liverpool. The files are of type .toml – ‘Tom’s obvious minimal language’, which provides a format that is both human and computer-readable. Going forward it is intended to make more use of computer file reading, so users are encouraged to provide these files with any new railways that they submit to the website. More information about toml files can be found at https://toml.io/en/, and a list of country codes is provided at https://www.iso.org/obp/ui/#search/code.
The response to clicking a headcode in the ‘Actions due’ panel was always to move the viewpoint so the relevant train was centred on screen. This was often found to be annoying for railways that mainly fit on a single screen, as the viewpoint had to be reset again manually afterwards. Now, if the train is already visible on the current screen, the viewpoint isn’t moved, the mouse position is all that is moved to hover over the train, wherever it is on the screen. If the selected train isn’t visible on the current screen then the viewpoint moves as before.
A train direction analysis has now been included with the others when the ‘Conflict analysis’ button is clicked in the timetable editor. This looks for (a) trains that are created facing buffers (as they often are if the rear and front element IDs are entered the wrong way round); (b) potentially missing changes of direction (cdt’s) – expanding on single service missing cdt check in the timetable validator by examining all linked services; and (c) potentially unnecessary cdt entries, where a cdt is entered when the train is already facing the right way.
It was pointed out by Simon Banham that when a route is locked ahead of a train that is moving and positioned immediately in front of the signal that forms the start of the locked route it continues past it without a SPAD. The signal turns red as is required but it has no effect on the train. This wasn’t strictly speaking a bug because the train was behaving as designed. Although the train looked as if it hadn’t yet passed the red signal the program regarded it as having done so, and already occupying the first half of the signal element, the next half-element move only being shown when the train had covered the distance to the half way point. Nevertheless this reason couldn’t justify what appeared to be wrong, so a modification was introduced to ensure that in these circumstances a SPAD would be triggered. This was something that I hadn’t previously noticed so thanks are due to Simon for pointing it out.
A screenshot was sent in by Albie Vowles showing a failed train with a green (stopped at a signal) background rather than an orange background when it was standing in front of a red signal. Investigation revealed that this would happen when a train was awaiting a call-on into a station (purple background), and failed while waiting. The train kept the purple background after the failure instead of changing to orange as it should have done, and when the call-on was no longer available (the train infront having left the station) the background changed to green as it would for a non-failed train. It was corrected by disallowing a call-on for a failed train. Thanks to Albie for reporting this error.
Jason Bassett sent in an error file showing that timetable validation had failed where there was a non-station named location (blue elements) that included blue elements without track (as is quite normal) during the check for enough named elements to allow a split. This error highlighted the fact that although concourses had been taken into account non-station named locations without track hadn’t. Once recognised it was relatively easy to fix by taking proper account of such elements. Thanks to Jason for sending in the file.
Sam Wainwright and later Bengt sent in error files that were generated when the Windows clipboard couldn’t be accessed. When developing the clipboard functions I had trapped all (or thought I had) clipboard errors in order to prevent a program crash, but just issue a message or do nothing instead depending on circumstances. The clipboard is a resource that is shared between all applications so it can be changed outside the railway program and appear to it as if it is corrupt or inaccessible. Such cases generate a clipboard error but it isn’t a fatal error, at worst it’s merely an inconvenience and often not even that, so it isn’t appropriate to stop the program. However Sam and Bengt found an instance where I had failed to trap one of these errors, and it was in a function that is called regularly by the system clock so the clipboard isn’t necessarily even in use. Happily it was easily fixed so it shouldn’t happen again. Thanks to Sam and Bengt for reporting this.
The user manual and on-screen help have been updated to reflect these changes.
Version 2.9.2 (24/07/21)
I sincerely hope that this release cures the preferred direction problems associated with the Windows clipboard. It seemed like a good idea to include preferred directions at v2.9.0 but given the trouble they’ve caused now I’m not so sure.
One good thing is that one of the corrected bugs explains the error found by Daniel Gill at v2.9.0 in response to which the code was strengthened for v2.9.1, but it continued to bother me because I was unable (then) to reproduce it.
I have tested this release extensively but still feel quite apprehensive, my fingers and everything else are well crossed! Please let me know if you see any odd behaviour and send in any error reports if they are generated – thanks.
I have also to confess to another error, not a bug this time but a plain blunder on my part. I had noticed a while back that the performance log omitted exit counts – early, late and on time exits – so in an earlier release I included them, but forgot to initialise them all to zero! A schoolboy howler! I only noticed it recently but I’m sure others heve seen it too, with exit numbers listed in the hundreds of millions or billions! These have now been corrected.
I was ready to release the new version when Simon Banham sent me an image of a railway with a locked route and signals on it all green! That was clearly not right. On investigation it was found to occur when a segment of automatic signal route had a segment of non-automatic signal route behind it, and that route was locked. When a train in advance of the locked route passed a signal all signals behind it were reset, but the resetting function failed to take account of the locked route so signals were reset as if it didn’t exist. Fortunately it was quite an easy fix, so that shouldn’t happen again. Thanks are due to Simon for pointing this error out.
Version 2.9.1 (05/07/21)
This is a bug fix release as a result of an error reported by Daniel Gill when rotating a segment of railway. I have not been able to reproduce the fault but made improvements to the rotation and associated functions and these seem to have cured it. Also included are a couple of minor changes that were awaiting the next release as follows:-
The ‘Comment’ entries in the timetable service list have been changed to show the first 15 characters of the actual comment as this is felt to be more meaningful.
A timetable time has been added to all warning logs that are shown in red at the top of the screen.
Version 2.9.0 (11/06/21)
This update represents a bit of a tidy-up – adding features that should ideally have been added earlier.
The main addition is to include preferred directions (PDs) in selected railway areas for cutting, copying, rotating etc. This omission had become an odd man out since the other track attributes were included some time ago. It was left because although PD elements are derived from track elements the data they embody is stored separately from other track data, so new selection and manipulation functions were necessary to capture and manage them. These functions are now included and work with all types of selection, including use of the Windows clipboard.
Another addition is to include a check function able to find and highlight potential PD conflicts. When building PDs it is very easy to miss short segments of track, especially on one leg of a set of points, leaving them without any PD and thereby preventing automatic and PD routes being set across them. The check function is available in the ‘Edit’ menu in PD mode and is explained in section 4 of the manual and on-screen help.
Level crossings are now included in zoom-out mode, and they are shown flashing for manual crossings that are open to trains without any routes across them. This is to remind users to close them because heavy time penalties are incurred if they are forgotten – which I’ve done to my cost more than once! To further remind users about such level crossings a warning icon is also shown flashing on the left hand side of the screen.
Version 2.8.0 (18/05/21)
The main change in this version is the ability to use the Windows clipboard so that areas of railway that are cut or copied can be pasted into another railway application. The user manual and on-screen help have been modified to explain the process in section 3.5.
1. After selecting an area of railway in track build mode the track elements now become visible so that the selected area can more easily be filled with a particular element.
2. If an area of railway was cut and moved and then cancelled, it used to be pasted in the new position which wasn’t appropriate, so now it’s pasted back in its original position.
3. It was found that if a route was set for a call-on into a platform where there was already a train, and that train changed direction, the route was cancelled. It happened because of an earlier change that cancelled stub routes ahead of a train when it changed direction and the excess route beyond the train was no longer wanted, but the route direction wasn’t checked so any route was cancelled. Now the route direction is checked and only routes leading away from the train are cancelled.
4. It was found that a route could be set across a level crossing that had only just begun to close to trains if the route setting was done very quickly. The final signal before the crossing stayed at red so trains would be protected but the route was present and shouldn’t have been. The program check routine has now been modified to include routes that are in course of being set in addition to routes already set.
Version 2.7.0 (14/02/21)
This version incorporates a number of functional changes that will hopefully make operation easier as follows:
In response to Josco’s suggestion via Discord of adding information to trains listed in the ‘actions due’ panel this is now included. The same information as is selected via the ‘information’ menu is shown when the user hovers over a headcode and clicks the right mouse button. The mouse button click was added instead of just plain hovering to avoid distraction when the information isn’t needed.
There are now two options available when selecting preferred direction (green) routes. The green route selection button is split into upper and lower halves, the upper half working as before where the route is built by clicking on each consecutive signal (or buffer/continuation at the ends) – this reflects normal practice. The lower half button allows routes to be built from signal to any following signal (or buffer/continuation at the ends). Routes built in this way must still follow preferred directions, so should be more accurate first time than unrestricted routes that don’t have to follow preferred directions. In fact this change was suggested by Bjorn years ago!
When a train exits at a continuation and there are two or more possible exits to choose from, there is currently no way during operation to know which is/are designated as correct in the timetable. The exit element identifier (ID) is shown only if the exit isn’t named. In this version the allowable exit IDs are listed in the timetable information window. This change was prompted by my abysmal performance at the last signalling social when operating Liverpool St to Romford. I repeatedly sent trains out from Romford on the slow line when they should have used the fast line – don’t tell anybody! I won’t have that excuse in future so I’ll have to find a new one.
When a train was stopped at a signal and a call-on offered and accepted, the time to act remained ‘NOW’ until it passed the signal. That was inappropriate so now as soon as a call-on is accepted the train is removed from the list.
The manual and on-screen help have been updated in accordance with these changes as have the file specifications.
One correction was made relating to train colours:
I noticed that on returning a train to timetable control at a stop location after being under signaller control the train colour changed to ‘running’ (grey) when the route in front cleared, even though the train wasn’t due to depart. The colour should have remained pale green (stopped at location) until the departure time. The fault was found and corrected.
Version 2.6.2 (09/01/21)
This is simply a fix for a bug introduced in the last version relating to two locations having the same name. What I overlooked was that in a developing railway locations can be saved before they are named, and in these cases they have a null name, which is an empty string – meaning unnamed. The name checker failed to ignore these locations so the warning message was given in error – causing confusion – each time such a railway was loaded. Happily the fix was quite simple – a new line that checks for nulls and bypasses the name check if any are found. Thanks to Micke(Commuterpop) for reporting this issue.
Version 2.6.1 (30/12/20)
This version includes a number of small functional changes, a couple of bug fixes and documentation changes.
Small Functional changes:
In response to Bill78’s supporting program to merge two .dev railway files there was a need to check that two locations didn’t have the same name so as to prevent the merged railway being saved as a .rly file. There is an existing check but this is made on entering a name, and this prevents two locations having the same name, but with two separate railways being merged each might have a name that appears in the other railway. A new check is now made on loading a railway file, and if the same name is found a warning is given to say that the railway can’t be saved as a .rly file. The check and warning is repeated if an attempt is made to save as a .rly file.
When gap setting the existing arrangement marks gaps to be set, but in a detailed railway these can be hard to find. Now the marks flash in both zoom-in and zoom-out modes and are easier to spot.
During operation, after taking signaller control of a train, it was easy to click ‘step forward one element’ inadvertently if two clicks were made in quick succession. The position of the pop-up menu has now been moved slightly so that the mouse does not lie over any of the options so as to prevent this nuisance.
If a train was removed by the signaller there could be a short stub route left over ahead of the removed train. This is now removed up to the next signal (similar to route removal behind a train that has changed direction).
Androeker discovered an error & notified it via discord on 16/12/20. The error was that if a location name containing a continuation was changed then a timetable that included it would validate and therefore allow the program to load and operate, the reason being that the list of continuation names [ContinuationNameMap] wasn’t updated in these circumstances [it’s only updated in TryToLinkTrack, so if that isn’t called, as it isn’t for a name change, then the error wouldn’t be seen by the program]. When the program was exited and later restarted and an attempt made to reload the (flawed) timetable the continuation name list was updated (as it is whenever track is linked), so the program saw the error and the load failed. This correction rebuilds ContinuationNameMap whenever a name is entered or changed so the timetable validator now gives an appropriate error message.
It was noticed in the ‘Actions due’ panel that the time to act was sometimes too short for trains that were approaching a stop location. The time corrected itself when the train stopped. What happened was that when running early the time calculator didn’t take account of the extra time needed at the next station before reaching it. This version updates the time calculator to take account of the dwell time.
User manual and on-screen help updated in line with latest program changes.
The file specification document has been expanded to include session files, timetable files and the configuration file as well as railway files. It now also incorporates the earlier ‘Changing a timetable in a session file whilst retaining routes’ document.
Version 2.6.0 (15/11/20)
This version includes a number of functional changes as well as several ‘corrections’ (i.e. improved undesirable behaviour) and bug fixes.
A selected area can now be filled with a specified track element, which can save a great deal of time when building long sections of horizontal or vertical parallel tracks. This was in response to a request from Wilsteady. The user manual and on-screen help have been expanded to explain this feature in section 3.5.
Level crossings can now be opened and closed manually by left clicking them. This was in response to a request from Krizar. The user manual and on-screen help explain how to use this new feature in section 3.1.1. Note that program versions earlier than v2.6.0 won’t load a session file that includes any manually opened level crossings.
When railways, timetables or session files are in folders other than the defaults, and a user navigates to them for loading or saving, the new folder locations are stored in a configuration file (Config.txt) and are used thereafter by the program. This is helpful for users who prefer to locate their files in other than the default folders and is in response to an initial request from Micke (Commuterpop) and subsequent suggestions from Bjorn and Krizar as to how it might be done. The feature is described in the user manual and on-screen help in sections 2.3 and 6.3. Config.txt also now stores the background colour and signal handedness, making the earlier files that were used for these purposes redundant.
Horizontal & vertical signals can now be used in named non-station (blue) locations. Wilsteady suggested this a few months ago. I think I was just playing safe in disallowing them but on further thought I can’t see why there should be problems and testing didn’t reveal any, and it makes them consistent with station locations where signals can already be used.
If a timetabled location appeared twice or more in a particular service other than with a change of direction between them it was assumed to be an error and not permitted. It isn’t necessarily an error however for trains that take a circular route back to earlier locations. This was queried by Daniel Gill some time ago and I promised to look at it again. This version now allows location duplication but gives a one-off message to allow the user to check whether it’s intended or an error.
If a railway or session contains user graphics and the program can’t find them, then formerly the load would fail. Now they are loaded without them but a message is given to inform the user.
In the last update a train that changed direction at a timetabled location had any excess route elements beyond the train removed automatically up to the next signal. This has now been extended to trains under signaller control that change direction.
A route that finished at a trailing point leg where an existing route on the other leg looped back to this trailing leg caused an appending route to loop forever. A new test has been added that checks and exits for this condition. Thanks to Xeon for spotting this and notifying me by email on 13/10/20.
If a named location was copied and pasted next to another location it didn’t take the name of that location but lay next to it and remained unnamed. This version corrects it, making the pasted location take the name of the existing location.
Version 2.5.1 (24/09/20)
This is a relatively minor ‘tidy up’ release. It adds a few features that improve usability and operation, and corrects a couple of bugs.
When a train changes direction under timetable control at a location other than at buffers there is usually a redundant route left in the original direction. The program now removes these unwanted routes automatically up to the next facing signal.
All types of finish event are now permitted immediately after a new train is declared (‘Snt’) apart from Fns-sh & Frh-sh.
Facing signals can now be allowed next to bridges if the user chooses it – this is useful for working on old railways without having to change them or for new densely packed railways. A warning is given that such signals can’t be used as route truncate points, but it is now up to the user to decide whether or not that risk matters.
The distance/speed selection warning that all track lengths will be set to the specified value is now only given once.
A few timetable error messages have been clarified.
For distance/speed setting the selected track length should show in magenta for easy identification, but prior to this release it was overridden by the normal colour when set.
Track information showed when the mouse was positioned over the timetable editor, this has now been corrected.
Version 2.5.0 (04/09/20)
Timetable conflict analysis added. This is too complex to explain here but it is described in detail in section 5.12 of the user manual and on-screen help.
The warning that a session file hasn’t been saved when a session is ended or the application closed is now only given if the timetable clock time is 5 minutes or more later than the last session save or later than a new session start time
Signals immediately before bridges are now disallowed for new railways because the bridge prevents a route from being truncated to the signal (a bridge as a truncate point is ambiguous as it may contain two routes and is therefore not permitted). Existing railways with signals next to bridges will still work as normal, but if any changes are made to the layout then the restriction will apply.
An option has been added to ‘not show again’ the warning when changing the timetable clock.
Information is now provided for follow-on services in both the train status and timetable information windows when hovering the mouse over a train. It includes changes of direction, splits and joins, and departure times. This information helps in decision making for trains at and due to arrive at locations, especially in route setting for departures and platform selection for arrivals.
The ‘Actions Due’ panel now shows trains requiring attention before operation is resumed when a session file is loaded. This only applies for sessions saved after operating the railway, it doesn’t apply for pre-start sessions. This allows the state of play to be assessed before operation, and trains requiring the most urgent attention can be located ready for routes to be set as soon as operation begins.
The ability to right-click the first letter of text to delete it has been re-established in ‘AddText’ mode. From v2.1.0 it was overridden by the screen move routine, but now text deletion takes precedence.
In the timetable editor the selected entry following a cut or delete action is now the entry before the deleted entry rather than after it. This makes it easier to insert a new entry in place of the deleted entry.
The keyboard shortcut keys for AddMins & SubMins in the timetable editor have been removed because when these are to be used the edit box has focus and a keypress is interpreted as a text entry rather than as a command to simulate a button click.
It was noticed that the response to timetable editor keyboard shortcut keys didn’t match button click behaviour accurately in all respects. The keys worked as they should but sometimes the selected entry reverted to the top of the list making it necessary to scroll down again for long timetables. This has now been corrected.
An error discovered by Albie Vowles and reported via email on 14/08/20 was corrected. It was a fault that was present from the beginning involving locked routes, where all elements in the route normally stay locked until they time out at 2 minutes. In Albie’s case a train ran past the signal at danger (with the locked route ahead of it) and cancelled two elements, leaving it shorter than it originally was. Periodically the program rebuilds the entire railway, for example when the viewpoint changes, but in rebuilding this locked route it assumed it was longer than it was, and when it came to the end sooner than expected the program crashed and generated an error file. Fortunately it was easily fixed. The program now checks whether the actual length of the locked route is shorter than expected, and if it is then the rebuilding stops when it reaches the real endpoint.
An error discovered by JKWok and reported via discord on 9/7/20 was corrected. If separate locations were joined together by a new platform or concourse not all the earlier separate names were deleted. It was due to not ensuring that all elements had the chance to have an existing name erased, but now they do.
Version 2.4.3 (01/08/20)
This is purely a bug-fix release to correct an error reported by Isglassen05 on 31/07/20. When using ‘Delete’ in the edit menu in a railway that included one or more user graphics, where the selected area for deletion didn’t include any graphics, the program would fail. It was due to the variable used to search for included graphics being set wrongly. This version corrects the error. It is surprising that it hadn’t been reported before as it was present from v2.4.0 onwards.
Version 2.4.2 (07/07/20)
Changes in this version are as follows:
Text is now plotted after station platforms and concourse and non-station named locations so platform numbers can be placed over named location elements instead of being hidden by them. In fact this was added for version 2.4.0 but mention of it was overlooked.
Many more keyboard shortcut keys have been added so that most buttons now have a shortcut. The button hint (shown when the mouse hovers over a button) indicates the shortcut.
The user manual & on-screen help have been updated in line with these additions.
[Bug fix] A points check has been added in the check for a train entering a route in the wrong direction. Thanks are due to Xeon for reporting this error.
[Bug fix] A SPAD error could occur when trains entered at a continuation with zero or very low speed. This was a new fault introduced during the development of train failures and has been corrected in this release. Thanks are due to Micke (Commuterpop) for reporting this.
Version 2.4.1 Beta (30/05/20)
Version 2.4.1 Beta is a small ‘bug-fix’ update on version 2.4.0 Beta.
The ‘Set mean time between failures’ menu option under the ‘Mode’ tag had been left in by mistake during development but did nothing. This version removes it. Thanks to Mark for reporting it.
Inactive track elements such as concourses couldn’t be erased in v2.4.0 due to an error in the code which this version corrects. Thanks to Krizar for reporting it.
Mark sent in an error file generated when a train left at a continuation. The file made it clear that just as the train left it had zero speed, which caused an arithmetic error that crashed the program. This version ensures that the program won’t crash if the same thing happens again – but why it happened remains a mystery.
Version 2.4.0 Beta (27/05/20)
Version 2.4.0 Beta incorporates several features, some of which have required significant code modification, so it is released as a ‘Beta’ because even after a lot of testing there may well remain some teething problems that will need early attention. It has been compiled using Embarcadero’s latest C++ compiler version 10.3, which is based on Windows 10 and generates code that doesn’t need any changes to the compatibility mode, at least for normal Windows 10 settings. A very welcome and surprising outcome was that the program also works on earlier Windows versions without the need for any changes to the settings. It has been tested on an ancient notebook computer that runs Windows XP and it worked perfectly straight out of the box – that was really unexpected! It should therefore work on any Windows operating system later than XP.
New features include:
– Random train failures.
– The ability to add user-defined graphics (note that files saved with failures or user graphics won’t load in earlier versions).
– Rotation by 90 degrees.
– All pastes are now with attributes, although ‘Copy’ won’t copy location names because these can’t be duplicated.
– Timetable listings can be sorted into alphabetical order for easier service location.
– More keyboard shortcuts have been added.
– All session files should load regardless of which decimal point character was used when saved (different countries use different characters) – thanks to Micke for helping me with this.
– Platforms can now be any length equal to or greater than 20m, which is the minimum length for any track element. Formerly they were fixed at 100m to prevent unrealistic scaling, but user pressure forced a rethink, especially when Discord member Xander with an X pointed out that ERTMS requires short platfrom lengths in order to display several train locations at each platform.
– A number of error messages have been clarified.
– The ‘Submins’ (subtract minutes) box had disappeared from the timetable editor in version 2.3.1. It’s a bit too easy to move buttons and other program features inadvertently when changing the user interface, and I must have moved that button behind one of the panels without realising it so it couldn’t be used. No-one reported it so it must not have been missed, but it’s back now.
– If there was an exit signal next to a level crossing and an autosignals route was set from that signal the train crashed into the crossing. The reason was that as a train approached the crossing the single route element on the crossing was removed ahead of the train and the crossing started to close, causing the train to crash. Exit signals now can’t be placed next to a level crossing. Thanks to Krizar for reporting it.
– If the ‘Actions due’ panel was clicked before trains were listed, or a train was clicked after it had been removed by the signaller but before the panel updated then the program crashed. This has now been fixed. Thanks to Rokas and LiWinDom for reporting these errors.
– The wrong colours were displayed for underpass lengths and speed limits. These have now been fixed. Thanks to Xeon for reporting it.
– There was a lockup condition when the ‘Actions due’ panel was open and a train was in a loop. This has been fixed. Thanks again to Xeon for reporting it.
Version 2.3.1 (05/02/20)
This is a relatively minor change, the main aspect of which is the addition of underpasses, also serving as surface-level foot crossings. These function exactly the same as footbridges and are added to improve accuracy rather than functionality. You will see that for these the track lies over the crossing rather than underneath it. The only restriction to be aware of during construction is that an underpass element won’t link to a footbridge element. On the track build panel the new elements are located next to the existing footbridges. Note that railways and sessions that include underpasses won’t load in program versions earlier than v2.3.1.
Some of the more obscure warning messages have been expanded to improve clarity.
The only other change is a bug fix where the program crashed when very large numbers were entered for timetable repeat values. Thanks to Albie Vowles for finding and reporting this error.
Version 2.3.0 (02/01/20)
Signals can now be displayed on the right hand side as well as the left hand side of the track. The setting is made before any railway is loaded so existing railways can be loaded with right hand signals where appropriate. Other than in appearance the signals work as before.
Timetable clock speeds have been extended to include 1/8 and 1/16 real time. This is to make operation of very large railways easier. Also the time taken for points and level crossing barrier changing and route setting have been kept at their normal values for slower clock speeds, to prevent long waiting times for slower speed operation. At higher clock speeds these durations shorten in proportion.
The ‘Actions Due’ panel has been modified to prevent track and train information from being displayed when they lie behind the panel (Thanks to Xeon for spotting and reporting this error).
An error in the user manual and help files has been corrected. ‘Paste with attributes’ was claimed to retain preferred directions as well as track properties. In fact it doesn’t retain preferred directions as they are not stored as track properties, and keeping them would be a difficult programming task. Re-establishing them for a moved section of track is normally quite quick.
The user manual and help files have been updated in line with the above changes and the timetable error messages document has also been updated to correct a few errors and to make some explanations clearer.
Changes have been made to text and graphics handling functions to make memory usage more efficient. There had been failures when loading very large session files, especially those containing very many trains. These changes provide a bit more memory space for such files.
Version 2.2.0 (03/10/19)
A new ‘actions due’ panel has been added. This makes operation easier for railways that extend over several screens when many trains are out of sight. The panel contains a list of train headcodes with times to act in timetable minutes, in ascending time order. This panel is displayed by left clicking a new button with an hourglass icon. Left clicking a headcode brings the train selected (or the entry point for trains not yet running) to the centre of the display, with the mouse hovering over it and displaying status and timetable information when these are selected. The user manual and online help have a new section ‘Actions due’ that explains how the feature works in more detail.
A new ‘paste with attributes’ feature has been added. This facilitates modification of the layout of a railway so that it fits better on a screen with a different resolution to that on which it was developed. When using the normal cut and paste functions all preferred directions, track lengths, speed limits and location names are lost. This new feature retains all these attributes so they don’t have to be re-entered. Any new track elements needed to link to the repositioned area will need appropriate new attributes setting, and if the cut area includes any train entry points then the timetable will need to be altered to reflect the changed element identifiers.
The ‘End’ key on the numeric keypad can now be used to toggle the zoom function on and off, providing Numlock isn’t on.
The earlier letter keys ‘w’, ‘s’, ‘a’ and ‘d’ that could be used to move the display up, down, left or right well as the keyboard arrow keys have been dropped. The arrow keys still work as before, but conflicts arose with the hotkeys introduced in the last version. No-one reported this so we assume that they weren’t generally used, and keyboard movement is much less necessary since the ability to drag the display using the right mouse button was introduced.
The need to set 256 compatibility mode for Windows 10 may have been solved – by setting solid colours instead of the default Windows colours. These defaults became transparent in Windows 10 obscuring the text that was incorporated, especially on the floating panel used for track and train information.
Performance scores for excess level crossing barrier down times weren’t being saved in session files. This omission has now been corrected.
Version 2.1.0 (10/03/18)
Icons have been added to many of the menu items and buttons.
Speed and distance conversion facilities now work both ways.
‘Hotkeys’ have been added for frequently used functions.
A website link has been added to the help menu.
Presentation has been improved in terms of clarity and ease of use.
The railway can be repositioned by dragging with the right-hand mouse button in both zoom-in and zoom-out modes.
The screen can be resized and still retain full functionality. Xeon recently mentioned this limitation when not in full screen mode and Albert promised to add scrollbars at the next release, but full function resizing is much better than the inconvenience of scrollbars. Interestingly he had thought that scrollbars were available but after Xeon contacted him found that v2.0.0 didn’t have them. Further investigation revealed that they were available in v1.3.2 and earlier, but disappeared for some unknown reason in v2.0.0!
Routes can be cancelled when they are occupied by trains with a ‘route locking’ warning as given for trains approaching signals. Albert had earlier thought that route cancellation when occupied should be disallowed as SPADs are more likely in these circumstances, but it meant that long automatic signal routes couldn’t be removed when there was heavy traffic and the route was never free of trains. One user, Brian Clancy, commented on this back in 2016, pointing out that it is allowed in real railway operation when circumstances require it, which it has to be to avoid a no-way-out situation. This change therefore brings operation more into line with real railway operation.
More information has been added for trains that have yet to enter at continuations, including repeat number, entry speed and timetable, to allow better planning for when the train arrives together with earlier route setting.
The help manual and on-screen help have been updated to reflect the latest changes.
The timetable screen caption now reads correctly when creating or editing timetables. Formerly the earlier loaded timetable name remained in the caption in error.
Signal behaviour on locked automatic signal routes exiting at a continuation when a train has exited has been corrected. Before, signals continued to clear in sequence in spite of the route being locked. All now remain at red.
There was a potential error when pre-setting automatic signal routes, in that a pre-set route could be set across a diagonal that was fouled by an adjacent track that cut across it. Now such situations can’t arise when pre-setting routes, though they can still be created by the user during operation if required.
Version 2.0.0 Beta (23/08/17)
Some minor changes have also been introduced as follows:
Railway file loading: The dropdown box has been removed. I and others found this a bit tedious so now all railways are displayed together whether .dev or .rly files, making loading quicker and easier. Just be sure to select the one you want!
Timetable change: ‘Fjo’ (finish join other train) has been added as an option immediately after ‘Snt’ to allow empty stock to be picked up. Richard Gaede asked about this some time ago and I hadn’t until then realised that it wasn’t possible.
Help system: This is now up to date using .chm files. The earlier Windows Help system has been discontinued and wouldn’t work on newer operating systems.
Train information: ‘Show status’ and ‘Show timetable’ are now active on startup so they don’t have to be selected. I always keep these active during operation and I suspect others do too, so it seems sensible for them to be available immediately. If the aren’t wanted then they can be hidden in the normal way
Version 1.3.2 (04/07/15)
Fault reported by Glenn Mitchell 14/04/13. Failure occurs when try to set automatic signal routes prior to operation if there exists a junction where there’s a preferred direction set on the through track but not on the diverging track, and where the diverging track links to a signal. Corrected by disallowing an automatic route in these circumstances.
Found that could set a route across a fouled diagonal (i.e. where a route is already set on the diagonal track) if the route start element is adjacent to the diagonal. This was because fouled diagonal checks were not made for first element, but these are now included.
Fault reported by Ian Walker 18/04/13. Timetable edit screen stays up when click cancel on file open dialogue panel – should go back to base mode. Now corrected.
Fault reported by John Phillipson 09/04/15 relating to a train split. This was traced to a program error where an area of memory could be overwritten after the new train was added following a split under some circumstances. The functions requiring changes were quite extensive so as well as local testing they were compiled as a pre-release beta version that John kindly tested over the following weeks without any new problems coming to light.
Fault reported by Carwyn Thomas 24/05/15. An incorrect SPAD was given when a train passed the last signal before a continuation, and when he tried to remove the train under signaller control an error was generated. There were two faults involved, one relating to the train removal – due to the front of the train having passed out of the continuation and the program trying to access the front element, which of course no longer existed. Corrections were made to the relevant functions. The SPAD error was found to be due to two trains exiting the same continuation in quick succession, when the second train passed a signal facing in the opposite direction when the last signal before the exit was still in course of changing back to green after the first train had exited. This was also corrected following investigation.
Version 1.3.1 (30/03/13)
- Letter keys (‘a’, ‘d’, ‘w’, & ‘s’) entered in distance/speed boxes were also found to move the screen viewpoint which was not required in these circumstances.
- The miles/chains & speed conversion boxes stayed on screen after distance setting when another button was clicked in Build/Modify mode.
- The program locked up if points were in course of changing when it was deactivated by another program becoming active. Changing points are now cancelled when the program deactivates.
- A train’s maximum running speed is set to a joining train’s maximum speed if it is less than the current train’s maximum speed, but if the joining train is a service continuation then its maximum speed is zero until it appears on screen, and in this situation the maximum speed of the joined train is set to the minimum value which is 10km/h, which is not what is required. This version corrects this error, which came to light during development of Ian Walker’s Chiltern Railway. Hence when that railway is published this latest version will be required to operate that railway properly.
Version 1.3.0 (28/10/12)
The faults corrected are:
- If a train was removed by the signaller when occupying an automatic signals route then the signals stayed as they were when the train was present. This version resets the signals.
- If a train entered the start of an automatic signals route under signaller control and stopped when occupying one or two elements, then changed direction and moved back out again, the first signal stayed at red. This version resets the signal.
- Train status information has been changed to show speeds in whole numbers of km/h rather than including the first decimal point. This has been found to reduce (slightly) the flickering that occurs when this information is visible. The flickering is due to the screen refresh processes that are part of the Windows operating system and there seems to be little that can be done in the application software – I’ve tried but with only limited success!
Version 1.2.0 Beta (24/06/12)
Other changes were made to correct a number of errors involving diagonal crossovers that I had noticed and I am sure others had too although though no-one had complained. These all relate to situations where there are crossing diagonals, i.e. diagonal track elements that cross other diagonals. There are lots of combinations of these – for example :-
The significant thing here is that routes and trains that cross at these points never occupy the same track element at the same time, as they do if they cross at a normal single-element crossover. I had taken account of these situations when setting routes – checks are made for an existing route at a crossing diagonal, but had completely overlooked related situations, i.e. that trains should crash if they meet at such a crossing; a route shouldn’t be settable through a train that is using such a crossing; and an existing route should be cancelled if a train crosses it at such a crossing. All these omissions came to light while playing with the simple Mile Oak railway that is used in the timetable tutorials. You can imagine I’m sure how I groaned when I made the discovery.
At the same time I decided to change a number of things that had been annoying me, and I’m sure you too. The first was to keep the existing train and track information settings (show or hide) when new session files are loaded. Previously they reverted to ‘hide’, and had to be reset to ‘show’ each time. Now they start off as hidden when the program is first started, then remain as set by the user until the program is terminated. The second was to allow an unrestricted route to be created into an occupied platform for a train waiting at a signal and still allow it to be called on. Previously all points into the platform had to be set manually, and any route (apart from an automatic signals route) , would prevent the call-on being offered. Now it’s much easier to create the route and have that set all the points. Third was to prevent an automatic signal route from being created from buffers – otherwise there’d be no way of allowing a train to reach the buffers! This now matches the corresponding restriction of preventing such a route being set into buffers which was present before. Why I didn’t prevent both at the same time I don’t know. I also noticed that if the ‘About’ box was displayed in pre-start mode, then when it was removed the mode reverted to paused mode. Now the mode stays the same as it was before the box is shown.
As you can see there have been many changes, and hence the ‘beta’ version. I have done a lot of testing of the changes and new functions, but as ever I can’t test exhaustively, so there may well be errors still present that I hope you will tell me about if you find them – thanks.
Version 1.1.4 (23/04/12)
Version 1.1.3 (24/12/11)
Version 1.1.2 (04/07/11)
Firstly a fault prevented automatic or preferred direction signal routes being set in certain fairly unusual circumstances – due to an internal program test giving a false positive. The test has now been corrected.
Secondly Matt noticed that if the window was changed while a route was being set, then on returning to railway.exe the program froze. The deactivation detection routine in the program has now been improved to detect this situation and to cancel the route being set.
Version 1.1.1 (27/04/11)
It had been noticed that level crossings displayed as always open horizontally on saved bitmap railway images regardless of track direction. That has been corrected in this version.
Version 1.1.0 (13/04/11)
Other minor changes are as follows:-
Routes may now be cancelled without route locking if the first train on the section is stopped.
It was noticed that the screen grid did not expand for resolutions higher than 1024 x 768, now it does.
Location naming functions have been tidied up – earlier, when combining two named locations the second name stayed on screen, now it is deleted; and earlier it was possible to give a timetabled location the same name as a continuation, now it isn’t.
The appearance of diagonal ground signals has been improved as the sloping top didn’t stand out well enough.
Version 1.0.0 (02/03/11)
The only change from beta v0.6c is a change to the performance scoring system, after I realised that I had failed to penalise incorrect exits, unexpected exits, and missed events other than missed stops. These are all now incorporated, so a session file loaded and then immediately resaved will be seen to give a different (and lower) performance score if any of these events had occurred during the session.
Version beta 0.6c (20/02/11)
Version beta 0.6b (13/02/11)
Enhancements: 1) Train headcodes are now much less restricted. Any alphanumeric character (upper or lower case letters or digits) may appear in any of the four headcode positions. The only condition is that repeating services that have headcode digit increases between repeats must have digits as the last two characters of the headcode. This change is because there are increasing numbers of railways being developed that don’t use the standard British ‘digit letter digit digit’ format. Note that timetables that use this feature will fail to load into earlier versions of railway.exe. Note that the earlier requirement to add “;0000” after the timetable start time to allow (slightly) less restricted headcodes is no longer necessary. 2) The train status floating window now includes, for repeating services, information about the repeat number. This takes the form of ‘First service’, or Repeat service no. 1′, Repeat service no. 2′ etc. This has been included because trains that join must have corresponding (i.e. the same) repeat numbers, as well as the correct headcodes, and this feature allows any discrepancy to be seen. 3) Performance scoring has been added at the end of the performance log. Points are deducted for late running based on overall lateness, and increasingly severe deductions are made for missed stops, SPAD risks, actual SPADs, derailments and crashes. A percentage score is given along with a rating, which runs from ‘Perfect’ to ‘Abysmal’, or, if there has been a crash, to ‘Catastrophic’.
Changes: 1) Formerly when a timetable had been loaded for operation, and then a timetable was loaded into the timetable editor, the loaded timetable stayed in place. However changes made to the editing timetable also affected the loaded timetable, which could cause problems in some cases. Therefore, now, whenever a timetable is loaded into the timetable editor any other loaded timetable is removed, and to resume operation a timetable must be loaded again. 2) During timetable editing, when pasting entries, the current (highlighted) entry remained at the same position as before the paste. Now the current entry changes to the pasted entry (as it does when new entries are inserted).
Corrections: 1) Glenn had reported problems with trains failing to join correctly when operating Plenwell IECC. The reason was found to be failure on my part to update the ‘Running’ status of trains that were continuation services from earlier services. In fact the ‘Running’ status was only correct for trains that were created using codes ‘Snt’ or ‘Snt-sh’, all other start codes continued to use ‘Not started’ as the status, which was clearly incorrect. I fear that others will have found this error but probably blamed their timetables when they should have blamed me! My apologies to all that have been affected by this error, and my thanks to Glenn for reporting it. 2) An error log file was sent in by Rander of the UKTrainSim forum, which occurred during timetable development. This was traced to a failure on my part to update the current entry pointer correctly after a new entry insertion. In most cases there would be no error, but in some cases, when the array of entries in memory becomes too big for its current location the program moves the entire array to a different area of memory. In these cases the current pointer would point to some random place that had nothing to do with the entry array, and an error would be the result. This has now been corrected – thanks Rander. Again I suspect that others may well have been frustrated by this error during timetable dveleopment, so again I offer my apologies to those affected.
Version beta 0.6a (31/01/11)
Corrects an error discovered by NajamUddin (my thanks again to him for reporting this) on calling a train on. If the platform element where the train was to arrive was a set of points, then the program could fail due to a coding error.
Version beta 0.6 (27/01/11)
Incorporated a variable speed timetable clock feature and the ability to increment the clock.
The user manual and help files have been updated to explain these new features.
Added a HP/KW converter to the timetable create/edit screen.
Corrected an error that could occur when a train was created on a route that was in course of building – thanks to NajamUddin for bringing this to my attention.
Corrected a rounding error in the performance log whereby hours could display one too high when near the end of the hour (e.g. 07:59 could display as 08:59).
Set a minimum track element speed limit of 10km/h, and also set the lowest value for a train’s maximum speed of 10km/h. With lower values a ‘divide by zero’ error sometimes occurred during the train speed calculation due to approximations made in that calculation. Note that on loading railways saved in earlier program versions any speed limit that is less than 10km/h will be set to 10km/h, and on loading earlier timetables any maximum train speed that is less than 10km/h will be set to 10km/h.
It was noticed that speed limits and track lengths for diverging point legs were ignored by the program, this version corrects those errors.
It was noticed that after a train had passed under a bridge when the top track had a route set, the route colour was redisplayed incorrectly. This version corrects that error.
Version beta 0.5 (08/01/11)
Corrected a fault that could occur when creating formatted timetables. Hour entries could be too low in some circumstances (e.g. could read 07:00 when should read 08:00). This was due to a failure to round correctly when converting from floating point to integer values.
Improved preferred direction and route searching to ensure that all possible directions from the starting element are searched properly. Formerly, when there were many possible routes in one direction from a given starting element the search could fail, and other – probably better – directions would then not be searched.
Version beta 0.4e (16/12/10)
Version beta 0.4d (29/11/10)
Also corrects a fault where if zoom out when moving to a follow-on preferred direction element the program stops with a ‘can’t set focus’ error when click to zoom back in again.
Section 6 of user manual & help file changed slightly to add that trains will stop for trains in front if they are at a timetabled stop location.
Version beta 0.4c
Updated my email address to firstname.lastname@example.org in the quick start guide.
Information added to point 5 in section 5.11 of the help file and the user manual relating to the behaviour of signaller controlled trains.
Version beta 0.4b (26/07/10)
Version beta 0.4a (20/07/10)
In v0.4 when I made non-station named location (blue square) lengths 100m I overlooked the fact that these could be placed without track being present, and placing in this way then caused a fault (as did pasting areas of railway that included such locations after cutting or copying). That fault has now been corrected. [I wish I could correct a fault without creating a new one – or two!]
Problems had been reported where session files failed to pass the integrity check on subsequent attempts to load. This was due to the stored temporary timetable file being incompatible with stored train information and is thought to be due to a single ‘timetable.tmp’ file being created for all timetable loads, rather than a unique timetable file for each timetable load. The current version creates unique files of the form ‘TmpTT<n>.tmp’ where ‘<n>’ is a number, and these should be deleted automatically when the program ends.
Version beta 0.4 (11/07/10)
Version 0.3 introduced an automatic cancel of routes consisting of a single element. However another fault was discovered with this process in that if such a single element was selected for the start of a new route, and was cancelled before the new route was completed, then on the subsequent attempt to complete the new route a failure would occur. This has now been corrected.
The zoom-out screen navigation has been changed to 60 elements from 30. This makes for faster review of large railways in zoom-out mode.
The calling-on function has been improved in that checks are now made for any existing routes elements or conflicting routes before the call-on is offered, and when accepted an unrestricted route is set into the platform.
The route setting functions have been changed to search first in the direction of ‘set’ leading points. This means that if there are two or more possible routes between the start and end points, or a route cannot be found by the program because the search would take too long, then one or more sets of points can be changed to link track elements along the desired route.
It was found that named location track lengths were not fixed at 100m (as platforms are), though the distance calculation treated them as though they were 100m. These are now fixed at 100m.
The help file and user manual have been updated to reflect and explain the above changes.
Version beta 0.3a (27/06/10)
A couple of errors were also found in the timetable reload function. I had failed to update it when the normal timetable load function was modified some time earlier.
Version beta 0.3 (21/06/10)
Another change is that the program automatically removes any routes that just consist of a single element – these are left when a train stops at a signal that ends a route. This is tidier as sometimes the train changes direction and moves away, leaving the single route element isolated.
Another error was discovered in that if a complete loop of routes was attempted to be created consisting of mixed automatic signal routes and other types, then the program locked up as it went into an endless loop trying to set signals but never reaching the end of the route. A check is now included to prevent this happening.
The help files and the user manual have also been updated to clarify a number of complex timetable functions, and also some errors have been corrected.
Version beta 0.2e (13/06/10)
Also added is the ability to move the viewpoint by 2 elements at a time by holding down the control (Ctrl) key when a ‘move viewpoint’ button is clicked. This allows much finer control of the railway position on the screen. Corresponding changes have been made to the user manual and the help file.
Version beta 0.2d (29/05/10)
Version beta 0.2c (15/05/10)
Version beta 0.2b (13/05/10)
User manual and help files updated to clarify the timetable requirements.
Version beta 0.2a
Version beta 0.2
More detailed checks added prior to file loading.
It had been possible to add multiple non-station named location elements at the same location (for example by a sensitive mouse that delivered two or more clicks when it should only have delivered one). The effect was not visible on screen but it would cause subsequent railway file load failures. This has now been corrected, and files that would not load previously because of this problem will now load, because duplicate entries are ignored. Thanks to Michael for bringing this error to my attention.
The timetable clock now displays from 00:00:00 to 95:59:59, i.e four full days, before resetting to 00:00:00, in order to make it clearer when the time has run past midnight on the first day. Time entries in the timetable are also now correspondingly valid from 00:00 to 95:59.
Sections 3.3 and 5 of the help file and user manual updated to add more information relating to non-station named locations and to reflect the above timetable time changes.
Version beta 0.1d
Help file and user manual section 6.3 updated to include a warning about running two railway.exe programs at the same time, which could cause session files to be saved incorrectly.