Hello beloved community!
I have a rather boring update today :) It's mainly about the performance of the game engine. I focused on FPS at runtime, but I also significantly reduced the loading time! Due to huge changes in the codebase, it took quite a while, because we had to make sure everything works the way we want.
Runtime optimizations
Probably the biggest performance boost comes from the switch from the old "agents search by track tiles" to graph-based search. Now the entire track system is divided into graph edges between any crossings, intersections, or track type changes. Any vehicle can very quickly check which path is best at each intersection, so it responds to signal states as it always does, but with less performance impact and without stuttering.
Another big benefit is the new ability to move a vehicle by any distance in a single update. In previous versions, vehicles would move multiple times if necessary, each time by a maximum of half a tile. The reason was to ensure proper signal responses and other dependencies during movement. Now, for example, fast trains or planes can move across multiple tiles with signals and crossings, which significantly improves performance.
This helped a lot, especially on large and dense maps where performance suffered, especially when accelerating the game by 4x. In some cases, this update can increase FPS by 3x.
Loading time optimizations
Regarding loading time, I modified the streaming to only collect lowpoly models, exit the loading screen, and continue streaming the hipoly models. This saved some loading time.
I also implemented a non-native driver way of loading models and added custom texture decompression algorithms, making it easier to work with multiple threads and improve loading even more.
Loading times were cut by about half compared to the previous version.
Improvements
There are other updates as well, I improved the terrain and grass rendering, polished up the colors a bit, and last but not least, I added what we call the Lazy Button (hotkey is "I"), which can place any object you click on (helpful when you need to switch tools frequently).
Meanwhile, I have about 14 of the 16 new road vehicles, so once I finish the last few trucks, we'll iterate on the parameters and prepare the next - this time content - update for you ;)
Today's detailed list of changes:
Optimizations
Searching for path switched from per tile to graph based structure
Vehicle can move by multiple tiles per a single update tick (no need to multiple ticks, saving performance)
Improved loading times
Only low level of detail variant are loaded before load screen disappear, the rest on runtime
Switch to 3rd library ASSIMP to load models into the game (loading optimization, multithreading etc.)
Loading textures are now proceeded via own DXT decompression (loading optimization)
MipMap chain not generated on texture initialization, but driver decides and manage itself
Many loading optimization, deterministic on-load map update, building add/rmv upgrades, overlay refresh
Plants and properly baked into far ambient load baked even when only lod loaded
Terrain chunks refresh starts not from map corner, but from the camera center and extends in circles to cover whole map
Only town buildings map area is refreshed when city center changes its amenities range, not all buildings (including distant industries)
Buildings not check upgrades when loading
Optimized also some script function calls (saved 30-60ms each second in some cases, lower stalls)
Optimized performance when laying a long track
Added
Added copy Tool (shortcut "I"), we call it lazy button. It offers building of the last object clicked
Visual improvement of terrain and grass with the glossiness specular, terrain normal map and grass movement specular
Reintroduced time speed setup
Added junction locked icon when train selected (this could help identify why train refuse to choose some direction when standing on a junction)
Camera can stay locked on vehicles/building/depo/station even when vehicle window closed until Esc/camera moved/disabled lock
Added bulldozer tool added into track/road/terrain/electricity/industries/plants, changed icon for terrain tools, shortcut Q properly select last used category
Fixed
Consistency of route lists ordering asc/desc
Visibility of unused route lists according to route infrastructure type (no more train unused route lists in road vehicle window)
Consistency of route lists in vehicle window (hovering / click / highlighting could have been desynchronized)
Route list line index after save/load consistency fixed
Airport stamps creation
Road vehicles overtaking detection (still some issues and passing through)
Building tunnel checks properly enough tokens and disable whole tunnel otherwise
Click on airport will not opens stop window if airport infrastructure tool chosen
Pilot toolbar shows cargo properly (not clipped)
Vehicles react properly when waiting on yellow signal (do not get stucked, re-plan path if needed)
Vehicle path highlighting flickering
UI Loading screen progress info has now outline to be easily readable
When missing mod with bridge/tunnel type in save file, wooden bridge/default tunnel is used
Possibility to apply wagon part pivot also in space of main part (used for multiple articulated wheels), flag "pivot_by_main_part"
Coal mine color is darker to easily spot it
Terrain map textures priorities (blending of snow / mud / fields)
Plane lost message now has a cooldown
Plane in depot was keep switching between lost and on states
Fields fences positioning
Inconsistency vehicle overtaking progress when Save/Load
Train doesn't check only first wagon when desiding wheter autorouting for load or unload, but all wagons must be empty to decide to load
Raised limit for town upgrades and different industries both to 512
Glass mail is available in 2nd era instead of 3rd. Blitz Oil and Blitz Goods are available in 3rd era instead of 4th. Trambus goods is available in 4th instead of 5th.
Dampler cement properly available from 6th era
Loading of meshes with non-triangle geometry
Shader aync loading after latest changes
Crash when exit to the main menu and load multiplayer map
Some crash when no multiplayer present (switch from the game and back)
Missing signal glows in fullscreen mode
Passenger destinations properly refreshed when vehicle sold
Red plane path
Scale of several models (caused "invisibility")
Crash when jumping in first person
S-curve and overlapping curve removing should be consistent now
Loading of mod files when path starts with \\ or / or .
Crash when using stamp with station upgrades on map border
Random crash when using stamps
Stamps missing building upgrades when using on bigger maps
Stamps code consistency no matter on how big map you create them
Size 6+ stamps
Crash on ATI when initialization of render targets
When reopenned window while camera locked on its object, goto check has proper pushed state
Crash when placing building with plants while plants falls out of map area
Station catchment area vizual bug fixed on ATI GPUs (applied also for buldozer red area etc)
Loading of meshes having more than 65535 vertices (32-bit meshes)
Loading of meshes having unsorted material list
Wack limestone now available from 6th era
Freeze when new era triggered by date
Path visualization for planes in multiplayer
Industry toolbar available once 3rd era (when first buildable industrz appears)
Star new content industry buildings
ATI "Pixel perfection" bug
Industry toolbar available once any building available (including mods)
Selection rendering fixed when rendering density lowered
Multiplayer path preview
When upgrading track from highspeed to normal, track under the signal stayed the same
When upgrading tracks under the signal, graph based search lost registration of this signal in it's node, causing wrongly refreshed signal when train passing through (and red signal potentionally)
Upgrading track with signals by drag drop new type
Upgrading track with signals by upgrade tool
Icon of terrain tools in terrain tutorial localized texts
Train slow down on yellow chain signal
"Early" wrongly added into 3rd era quest as a reward
See you soon on new pack of road vehicles release;)
Meantime, have a great day!
Best regards,
Jan
Changed files in this update