Make a cup of tea and read through the patch notes below...
Patch Notes for Train Simulator Classic Update – May 21st, 2024
- Updated main menu.
- We have completed work to upgrade several tools to 64-bit and to support 64-bit addressing.
- 64-bit binaries have been added for the Blueprint Editor 2 and associated command line tools ConvertToGEO, ConvertToTG and Serz. These 64-bit tools have a “64” suffix to distinguish them from the 32-bit versions. The 64-bit Blueprint Editor 2 is contained within a Tools/x64 subfolder. These tools are currently considered experimental and feedback on their functionality is requested. Note that on first run of the 64-bit Blueprint Editor, the user should set the RailWorks Folder correctly by using the Tools > Options menu item and restarting the app. These tools are designed to be run in the Tools/x64 folder and should not be copied into a different location, nor should the Schema be copied into this x64 folder.
- Implemented a fix for the 64-bit build failing to start with some Intel GPUs on Windows 11.
- This could cause the application to silently fail before the splash screen. By default, PhysX is now initialised using software rather than hardware. The hardware initialisation could cause a crash on non-CUDA GPUs.
- Implemented a fix for SilverLining stars not being visible at nighttime.
- In some cases, this bug could result in SilverLining sky being replaced by the default sky (although SilverLining precipitation would still work). The magnitude for stars should be adjustable by editing the SilverLining config file if required.
- Increased the size of the heap using for loading geometry in 64-bit mode from 1 GB to 2 GB to stop some out of memory errors on the streaming heap.
- Fix for a situation where a D3D "Device Not Reset" error can occur without first getting a "Device Lost" error. This should fix the remaining D3D crashes, such as those on alt-tab switching.
- The FPS limit now defaults to 60fps (as opposed to 30fps). This limit is now enforced during menus and pause screens in all cases (no matter what command line option is used) to reduce uncapped frame rates and excessive CPU usage whilst browsing the menus, especially with some Ryzen CPUs.
- Fast sound update optimisations have been implemented but are disabled by default due to triggering failures. These changes spread updates to sounds over multiple frames but could cause problems with delayed sound triggering. This can be accessed by using the command line "-FastSoundUpdate" with an optional value for the update factor, e.g. "-FastSoundUpdate=10" (the default when enabled).
- A new command line option "-ShowScriptTiming" has been added to aid developers when optimising their Lua scripts. This renders an overlay on screen showing all the Lua scripts that are being called, the total number of calls, and the total time spent in them.
- A new command line option "-ShowAverageTiming" (which must be used in conjunction with ShowScriptTiming) has been added. This provides additional information - namely the mean and medium time spent in each script. This can be used to determine if the scripts are always performing poorly or if there are outliers. For example, an Engine script may be called 50 times, but one of those calls may take significantly more than the others (i.e. for the player loco vs AI locos).
- A new log filter has been added - "Script Performance".
- When enabled this will provide performance hints via logmate. Currently, this only has one warning - when a script tries to set a value to the same value it already has (e.g. via SetControlValue). In some situations, this Lua call can have a huge performance hit, because the text-based lookup can be very slow. In general, scripts should only set values that they know have changed. Note that GetControlValue has a similar performance penalty, so using that followed by a SetControlValue will have worse performance overall. Instead, scripts should track these values themselves using internal Lua variables wherever possible to minimise these calls. An example might be a loco script that sets headlights and rear lights every frame, rather than when the loco changes direction. With some scripts this filter can cause a huge amount of extra output to Logmate, so a new filter was added rather than using an existing one. Developers should be aware of this when using the "All" filter.
- Steam Workshop download loop now exits when all active downloads are completed.
- Change animation vector/array to use a case-insensitive key, rather than require many manual inefficient calls to "to lower".
- Increased hash table size for sound proxies to speed up searches.
- Cached mapping of names to controls to speed up sound control lookup.
- Added additional clipping for passenger fading.
- Added an early out for headlight flare rendering. Should have same behaviour.
- Reverted Dispatcher change that was intended to make node deletion on pathing failure more robust, but instead could make it more unstable.
- Fixed an STL assert failure in Debug build (this could also cause a crash in release builds) - tunnel iterators were being used after deletion when rendering 2D map.
- Removed assert in Landscape texture that causes a crash/break in Debug builds.
- Fix for crash in loading of Lingbao to Mianchi Scenario 3 (and other scenarios that include reversing sections). Caused by fix to prevent decrementing a stack pointer when at the beginning of the stack. Previous fix was to change loop check, new fix is a special flag to prevent and recover.
- Added command line option "-DisableSilverLining" to fully disable Silver Lining to aid debugging the graphics device lost crashes on alt-tab and screen sleep.
- Updated to Silver Lining 6.42 to fix D3D device lost error on screen sleep (and potentially others)
- Support for 64-bit addressing in all custom heaps in the x64 build.
- Fix for assert in STL when decrementing an iterator at the beginning of a list.
- More reliable releasing of landscape textures.
- New launcher app to fix launching the same build (x32/x64/Dx12) on graphical or resolution change.
- Workaround for screen resolution drop down in settings dialogue running off screen - added an offset to move dropdown vertically to remain on screen.
- Mitigation for serialisation crash during texture load. The most common crash in build v75.6a.x64
- Code to prevent crash from the dispatcher upon freeing up the same node twice on routing failure.
- Added check for -1 pointer in ScriptGetConsistSpeed.
- Fix for crash in headlight destructor (5th most common crash in v75.8a.x64).
- Potential fix for a crash caused by a ray cast calculation going off the end of a vertex buffer, this was more common in scenario editing mode than drive.
- Mitigation for various crashes due to null pointers or use of uninitialized variables in Delta serialisation, Scenario Editor consist placement, loft building.
- Initialisation of the "Current Consist" to zero/null on startup so as to mitigate crash during signal script initialisation accessing current consist when it is undefined.
- Additional logging to aid debugging D3D error.
The update will download automatically for owners when it becomes available. Players should allow at least 24 hours after restarting Steam for the update to appear and before contacting Customer Support.
You can also read our latest dev update here:
https://live.dovetailgames.com/live.../article/train-simulator-classic-dev-update-4