Hello respected community!
I have been fixing multiplayer bugs on experimental branch, adding new stuff and focused also on performance. Since those improvements are not related only to multiplayer, I've prepared build to share them with you today, even before MP release.
This update introduces:
- Huge improvement of general engine and game performance (including loading times)
- New faces for director of your company, including women
- Quality of life - adding list of crashed vehicles, list of favourite vehicles (together with route lists) so you can buy them by a single click in depots
I would say I really enjoyed getting back to optimizations for a while, and although there is still some space for future improvements, I am pretty happy with the current state. I've also focused on 4x game speed, because most of you are using this feature and also performance issues where mostly related to higher game speed (since the game is CPU-bound).
- Improved CPU game performance, especially when higher game speed used. By searching using Visual studio Performance non-intrusive profiler, I was able to identify places in code where CPU spends most of time and optimize these.
- Improved lags and freezes of game. By using my own frame profiler and whole game run profiler, I was also able to identify places, where processing time vary the most. These areas in code cause small freezes when for example industry tick occurs, town is about to grow and so on. Improving code in these areas end up having more stable framerate. Some tasks were moved to another thread or splitted into multiple frames.
- Improved loading times. I've also modified several places where extra power could be invested into map preparation and assets streaming from disk. For example FPS limiter works in a different way when loading screen is on, to allow other CPU threads do their job. I've spent also extra care to ensure that there are no redundant tasks when loading game. Overall loading times are smaller now.
Quality of life improvements
While testing the game and reading the feedback, we identified several potential improvements to make playing Mashinky a bit more relaxed:
- Now, it is not that fatal when two trains crash into each other. There is a list of crashed vehicles in each depot to help you re-create what has been lost. This list includes also route lists.
- Having list of such vehicles led us to the idea of adding also favourite vehicle
list (also including route list), so now you are able to "save" any vehicle, even the one running out of depot, and have such list of favourite vehicles to create duplicates easily.
- Some of you complained about circle icons in walking mode visibility, so now you can easily hide them in realistic mode transparency window. Thank you for raising your voice so i can improve the game!
Because of upcoming MP release, I've added also more face variations and thanks to community requests, I've found time to add also women faces ;) I need to improve the generator possibilities in the future, adding more face types, skin colors, but hope you will like the current state too.
Optimizations in details
Just to give you better insight on what has been optimized, here is the list (change log related to performance)
- Optimized Passenger destination AI network update
- Optimized Station cargo add/rmv when choosing destination
- Optimized Stop cargo destinations
- Optimized Track spline computation
- Optimized MP events, vehicles sync, etc
- Optimized Client skip event processing while loadscreen present
- Optimized Server skip sending all events after unconfirmed map save
- Optimized Maximum of 1000 events sent per network tick (prevent client from being overwhelmed)
- Optimized Precache stop and vehicle bonuses
- Optimized FPS limiter allows other threads to process when loading screen present
- Optimized Vehicle to vehicle collision spatial data structure faster when searching for vehicles around
- Optimized Arc-tangent replaced by fast approximation (precision on 0.01 rads)
- Optimized Sin/Cos precomputed and approximated runtime
- Optimized Update 0-N towns per tick instead of all at once
- Optimized Far geometry lod baking has now dirty area instead of checking all map chunks
- Fixed Autorouting ignore stations where cargo acceptance is disabled
- Fixed Assert about wrong track ending
- Fixed Transparent tokens
- Fixed Industry not producing cargo (caused by rating drop to 0, now visible and colored red in that case)
- Fixed When detected missing era quest on load, add one (have no idea how the original one could be missing, some mods?)
- Fixed Duplicate wall param in building types XML
- Fixed Some new faces glitches, changed background
- Fixed Crash when city grows
- Fixed Assert in depo window
- Fixed Visibility of walking mode icons properly reacts on transparency setting
- Fixed Overlapping graphics on stop window upgrade buttons
- Fixed Wrong positioning of road vehicles wheels on curved road
- Fixed Broken faces in quests
- Fixed Wrong electricity distribution computation
- Fixed Adding vehicles to favourite in road vehicles depot UI
This is all for now, soon I will release the multiplayer on public branch and continue on 7th era and airplanes ;)
Have a great day,