1. Mashinky
  2. News

Mashinky News

Performance update

[h3]Hello beloved community![/h3][p]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.[/p][p][/p][p][/p][p][/p][h3]Runtime optimizations[/h3][p]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.[/p][p]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.[/p][p]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.[/p][p][/p][p][/p][p][/p][h3]Loading time optimizations[/h3][p]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.[/p][p]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.[/p][p]Loading times were cut by about half compared to the previous version.[/p][p][/p][p][/p][p][/p][h3]Improvements[/h3][p]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).[/p][p]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 ;)[/p][p][/p][p][/p][previewyoutube][/previewyoutube][p][/p][h2]Today's detailed list of changes:[/h2][p][/p][h3]Optimizations[/h3]
  • [p]Searching for path switched from per tile to graph based structure[/p]
  • [p]Vehicle can move by multiple tiles per a single update tick (no need to multiple ticks, saving performance) [/p]
  • [p]Improved loading times[/p]
  • [p]Only low level of detail variant are loaded before load screen disappear, the rest on runtime[/p]
  • [p]Switch to 3rd library ASSIMP to load models into the game (loading optimization, multithreading etc.)[/p]
  • [p]Loading textures are now proceeded via own DXT decompression (loading optimization)[/p]
  • [p]MipMap chain not generated on texture initialization, but driver decides and manage itself[/p]
  • [p]Many loading optimization, deterministic on-load map update, building add/rmv upgrades, overlay refresh[/p]
  • [p]Plants and properly baked into far ambient load baked even when only lod loaded [/p]
  • [p]Terrain chunks refresh starts not from map corner, but from the camera center and extends in circles to cover whole map[/p]
  • [p]Only town buildings map area is refreshed when city center changes its amenities range, not all buildings (including distant industries)[/p]
  • [p]Buildings not check upgrades when loading [/p]
  • [p]Optimized also some script function calls (saved 30-60ms each second in some cases, lower stalls)[/p]
  • [p]Optimized performance when laying a long track [/p]
[h3]Added[/h3]
  • [p]Added copy Tool (shortcut "I"), we call it lazy button. It offers building of the last object clicked[/p]
  • [p]Visual improvement of terrain and grass with the glossiness specular, terrain normal map and grass movement specular[/p]
  • [p]Reintroduced time speed setup[/p]
  • [p]Added junction locked icon when train selected (this could help identify why train refuse to choose some direction when standing on a junction)[/p]
  • [p]Camera can stay locked on vehicles/building/depo/station even when vehicle window closed until Esc/camera moved/disabled lock[/p]
  • [p]Added bulldozer tool added into track/road/terrain/electricity/industries/plants, changed icon for terrain tools, shortcut Q properly select last used category[/p][p][/p]
[h3]Fixed[/h3]
  • [p]Consistency of route lists ordering asc/desc[/p]
  • [p]Visibility of unused route lists according to route infrastructure type (no more train unused route lists in road vehicle window)[/p]
  • [p]Consistency of route lists in vehicle window (hovering / click / highlighting could have been desynchronized)[/p]
  • [p]Route list line index after save/load consistency fixed[/p]
  • [p]Airport stamps creation[/p]
  • [p]Road vehicles overtaking detection (still some issues and passing through)[/p]
  • [p]Building tunnel checks properly enough tokens and disable whole tunnel otherwise[/p]
  • [p]Click on airport will not opens stop window if airport infrastructure tool chosen[/p]
  • [p]Pilot toolbar shows cargo properly (not clipped)[/p]
  • [p]Vehicles react properly when waiting on yellow signal (do not get stucked, re-plan path if needed)[/p]
  • [p]Vehicle path highlighting flickering[/p]
  • [p]UI Loading screen progress info has now outline to be easily readable[/p]
  • [p]When missing mod with bridge/tunnel type in save file, wooden bridge/default tunnel is used[/p]
  • [p]Possibility to apply wagon part pivot also in space of main part (used for multiple articulated wheels), flag "pivot_by_main_part"[/p]
  • [p]Coal mine color is darker to easily spot it [/p]
  • [p]Terrain map textures priorities (blending of snow / mud / fields)[/p]
  • [p]Plane lost message now has a cooldown[/p]
  • [p]Plane in depot was keep switching between lost and on states [/p]
  • [p]Fields fences positioning [/p]
  • [p]Inconsistency vehicle overtaking progress when Save/Load [/p]
  • [p]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[/p]
  • [p]Raised limit for town upgrades and different industries both to 512 [/p]
  • [p]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.[/p]
  • [p]Dampler cement properly available from 6th era[/p]
  • [p]Loading of meshes with non-triangle geometry[/p]
  • [p]Shader aync loading after latest changes [/p]
  • [p]Crash when exit to the main menu and load multiplayer map[/p]
  • [p]Some crash when no multiplayer present (switch from the game and back)[/p]
  • [p]Missing signal glows in fullscreen mode [/p]
  • [p]Passenger destinations properly refreshed when vehicle sold [/p]
  • [p]Red plane path [/p]
  • [p]Scale of several models (caused "invisibility")[/p]
  • [p]Crash when jumping in first person[/p]
  • [p]S-curve and overlapping curve removing should be consistent now [/p]
  • [p]Loading of mod files when path starts with \\ or / or .[/p]
  • [p]Crash when using stamp with station upgrades on map border [/p]
  • [p]Random crash when using stamps[/p]
  • [p]Stamps missing building upgrades when using on bigger maps [/p]
  • [p]Stamps code consistency no matter on how big map you create them[/p]
  • [p]Size 6+ stamps[/p]
  • [p]Crash on ATI when initialization of render targets[/p]
  • [p]When reopenned window while camera locked on its object, goto check has proper pushed state [/p]
  • [p]Crash when placing building with plants while plants falls out of map area [/p]
  • [p]Station catchment area vizual bug fixed on ATI GPUs (applied also for buldozer red area etc)[/p]
  • [p]Loading of meshes having more than 65535 vertices (32-bit meshes)[/p]
  • [p]Loading of meshes having unsorted material list [/p]
  • [p]Wack limestone now available from 6th era[/p]
  • [p]Freeze when new era triggered by date[/p]
  • [p]Path visualization for planes in multiplayer[/p]
  • [p]Industry toolbar available once 3rd era (when first buildable industrz appears)[/p]
  • [p]Star new content industry buildings[/p]
  • [p]ATI "Pixel perfection" bug[/p]
  • [p]Industry toolbar available once any building available (including mods)[/p]
  • [p]Selection rendering fixed when rendering density lowered[/p]
  • [p]Multiplayer path preview [/p]
  • [p]When upgrading track from highspeed to normal, track under the signal stayed the same[/p]
  • [p]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)[/p]
  • [p]Upgrading track with signals by drag drop new type [/p]
  • [p]Upgrading track with signals by upgrade tool [/p]
  • [p]Icon of terrain tools in terrain tutorial localized texts[/p]
  • [p]Train slow down on yellow chain signal[/p]
  • [p]"Early" wrongly added into 3rd era quest as a reward[/p]
[p][/p][p][/p][p]See you soon on new pack of road vehicles release;)[/p][p][/p][p]Meantime, have a great day![/p][p]Best regards, [/p][p]Jan[/p]

Modern aircrafts

Hello beloved community!

Last several months, I was working on huge optimizations, but since those are not ready yet, I've prepared content update for you instead.

It is one of the last 3 content updates I promised long time ago, before the game could be fully released.

Update content:
- 16 new aircraft (4 types)
- Fixes & quality of life updates



Those planes are dedicated to last eras of game progression, so it can be difficult to get them, but those are definitely worthy. Not only because of their higher speed, very low fuel consumption and capacity, but I love especially the design of the 2 most modern airplanes - Mican and Meda, designed by talented artist Vlastimil Müller, who named those concepts after his own children. I am sure you will love it too ;)

Here you can check detailed change log:

Modern aircraft
  • Added 16 new aircraft (4 types with 4 different variants)


Life quality
  • Added possibility to move camera by cursor near screen border (works in windowed too) and can be disabled in settings/game


Fixes
  • Improved track laying alg to rather show errors over not-empty-spaces than offering crazy curves
  • Raised camera higher above the terrain by 25%
  • Fixed hangar window buttons
  • When multiple vehicle windows opened, selecting routelist will preview in only one of them
  • Road vehicles do not overpass when it is not really needed (keep waiting in traffic jam etc)
  • Company progress counting (missed number of planes etc)
  • Placement or upgrading infrastructure is properly applied into balance sheet
  • Balance sheet has a proper tooltip (was missing some lines)
  • Trains are not loading/unloading in one save (also building indices were mismatched after latest changes)
  • Overlay toolbar now has a proper size when using auto overlay option
  • Station platforms have proper walls when right next to the airport
  • Planes properly find the way to the destination when possible (it detected obstacles when overlay not showed anything)
  • Powerplants capacity and usage of electricity fixed
  • Transition of electrified track and others
  • Road Crossings geometrical smoothing
  • One way road arrows positioning on slope
  • Wrong placing of roads as series of diagonal curves
  • Track laying circles improved a bit
  • Transition from higher to lower track types (including pathfinding)
  • Tunnel highlighted track type
  • Removing track with signal by removing tool (when drag & drop over longer section)
  • Music playing after start
  • Multiple signals placement
  • Path highlighting in tunnel




I will continue on optimizations and explain their principle in the next post. We have also road vehicles content ahead and then, finally, 7th era & end game content update ;) I am so looking forward to this update.

Thank you so much for all your support and time spent with our game!

Meantime, please do enjoy the sprint season and have a great day!
Best regards,
Jan

[previewyoutube][/previewyoutube]

Christmas quest

Hello beloved community!

I accidentally rewrote the text of this update so it will remain a secret even for me :/

Backup, backup, backup :)

Jan

DEMO release

Hello beloved community!

Today, I've released the DEMO!

This free sample of our game features time-unlimited gameplay on the smallest (128*128), procedurally generated maps, and within the first era.
You can choose from 4 different steam engines (+ 1 as a bonus on top), 11 train wagons and 8 road vehicles, which is actually more than the content of Early access released many years ago :)). Hopefully, it shows the potential of our game nicely!

I also want to thank all of you for such an awesome long term support and undisputed help with development of the game Mashinky!

If I may ask you for the big help today, please spread the word about the DEMO availability to your friends, so they can taste our game for free, too ;) Thanks a lot in advance.

Have a great day!

Best regards,
Jan



Drivers & Pilots

Hello beloved community!

Today, I have something unexpected for you :)

First vanilla people in the game! You should now see drivers and pilots taking care of your transport fleet. They will be there to help whenever the vehicle is on, not derailed/destroyed and you are not in the driver's seat.



To be honest, I was a little worried about the result a while ago, so I don't promise you such an update. Creating a human being is always tricky due to performance risks or the uncanny valley, which is a problem with creepy looking virtual people. It's made even worse by the fact that I'm a programmer with very limited experience in creating virtual human beings, and also because of the intention to keep low polygons for such small models, as is typical for strategy games.

In the end, I'm still not completely satisfied with the result, but I learned a lot while creating these drivers and pilots and I already love how it looks in the game! I hope you like it too, but in any case there is an option to turn it off in the graphics settings ;)

Drivers and pilots are animated either based on the direction of the front wheel in the case of road vehicles, or playing one of several looping animations in the case of drivers or pilots. I also added a system for recombining these drivers (different faces, t-shirts, pants and so on) as well as coloring to make it more interesting. In the original vehicles in the game, more animations were also needed for the different positions of the seats and steering wheels, and I also ended up separating and animating the steering wheels to match the driver movements.

Last but not least, I added an automatic vehicle replacement system based on their age. You can set it specifically for each vehicle or turn it off for some of them. In this case, the exchange is more of a renewal, since the type of vehicle or the number of cars remains the same.



Change log:

Drivers & Pilots
  • Each Truck or Bus has now its own driver (visual appearance is randomized internally by vehicle index used as a seed). Animation is driven by front wheels and includes steering wheel as well.
  • Each Train engine has also its own driver (vehicle index and wagon index are used together as a seed for random appearance). The animation plays only according to the elapsed time.
  • Each plane has its own pilot (plane index is used as a visual appearance seed in this case). The animation plays only according to the elapsed time too.
  • Visual appearance combines randomized model parts as well as colorization per each part. In some cases, it can also choose different genders.
  • There are several different animations picked according to driver seat and vehicle controls positions.
  • Visual appearance is picked according to vehicle type (different for steam and diesel / electric rail engines for example).
  • The driver model is hidden when the player controls the vehicle himself or when the vehicle is destroyed, or turned off.


UI
  • Camera positions are now visible only when camera looks towards them. This makes the UI a bit more clear
  • There is also possibility to turn off/on drivers in graphics settings
  • I've improved visualization of vehicle replacement plan to make it easier to orientate


Gameplay
  • Added automatic vehicle replacement based on its age. This can be different per each vehicle or turned off.
  • Road asphalt speed has been increased
  • Cargo filter in industry list works now
  • Start all / Stop all vehicles in vehicles list now works properly when filter active


Visual
  • Added interior BR 3
  • Added burn shader so the destroyed vehicle changes its appearance
  • Fixed terrain holes (quarries etc) when in construction mode with overlays
  • Added a bit more fresnel bright hallo around objects (more visually pleasing)
  • Added fields rendering in a distance, construction mode and near the sea
  • But Fields are not visible in construction mode except ground color, which improved visibility when laying tracks
  • Fixed visual glitch with noise of horizontal polygons of overlapping trees in construction mode
  • Ground gravel/concrete are now visible in construction mode even behind far rendering distance
  • Fields borders are now properly positioned in construction mode
  • Fixed: map border glitch when using any overlay


Optimizations
  • Removed some debug output which caused massive FPS drop
  • Moved file streamer from sync to render thread (sync thread is critical for performance)
  • Improved performance of shadows rendering (wrongly invalidated more cascades than needed)
  • Optimized terrain chunk preparation on the CPU
  • Optimized overlay map synchronization on the GPU
  • Building updates are now distributed over multiple frame ticks
  • Optimized vehicle bounding box computation
  • Lowered GPU memory requirements by ~36MB


Fixes
  • Fixed crash in overlay synchronization after map size change
  • Camera angle properly oriented when switched into a building camera
  • Building sounds are now per building part index, therefore can be multiple per building and react properly on part addition / removal or change by upgrade
  • Music is now moddable (possible from zip)
  • Modded industry upgrades properly enabled in its era
  • Fixed removing of upgrade that only changed building part model appearance
  • Fixed mod building upgrades rules
  • Fixed consistency of autohealing invalid towns in savefiles when done on server or on client
  • Fixed visibility of building upgrades in building window in editor
  • Fixed multiplayer routelist crash
  • Fixed "Plants out of bounds" assert / crash
  • Fixed detection of vehicle standing on railroad crossroads (may missed collision detection before)
  • Fixed partial autoheal after building lost its map representation (corrupt savefiles autohealing)
  • Anticrash for loading animated model crash in drivers (have no idea, but instead of crashing the game, driver is skipped)




Some of you may have experienced drivers and pilots on the experimental branch a long time ago, but this update was stuck there due to a related driver crashes. I hope everything is clear now, if anything, let me know.

Regarding the 7th era, I'm missing some building models and balancing. We also plan to release end game quests and game changing mechanics when you reach the end game so you can enjoy your world afterwards. I need some more time to finish it, but in the meantime I'll be releasing more planes and the last pack of road vehicles, so stay tuned ;)

What I can already also announce is the demo, which we are finishing now!

Thank you for all your long time support and patience, we're slowly getting there! :)

Best regards,
Jan

[previewyoutube][/previewyoutube]