top of page
Blog
Search

Captain's Diary #53: Quality of life, Update 4 release date

  • Writer: zuff35
    zuff35
  • 5 hours ago
  • 7 min read

Updated: 3 minutes ago

Welcome everyone to our first diary of 2026! We are bringing exciting information about Update 4 including its release date, so let’s roll!


Update 4 launch date

Let’s cut to the chase, we are launching Update 4 together with the Trains Expansion DLC on 9th of March, 2026! We've been counting the days (and drinking a lot of coffee) and can't wait to get it into your hands.


The Trains Expansion Steam page is already available! You can wishlist it to get notified once it's out!


New locomotives coming in the Trains Expansion DLC
New locomotives coming in the Trains Expansion DLC

Quality of life features

Now that we got the boring stuff away we can talk about quality of life improvements. And this time we have packed Update 4 with really nice improvements that would be a shame to skip mentioning.


Global search

The first new feature is the ability to search on the map. Do you want to find your only train depot, or maybe that storage unit holding your last supply of diesel? Now you can!


Type “furnace” into the search bar and, alongside the usual results from the build menu, you will now see a new entry called “found globally” which means the game found something on your island! You can click it to get the results.
Type “furnace” into the search bar and, alongside the usual results from the build menu, you will now see a new entry called “found globally” which means the game found something on your island! You can click it to get the results.

Clicking the result we get the window which allows you to cycle around the map and see all the entities found. You can also open this window anytime via a shortcut.
Clicking the result we get the window which allows you to cycle around the map and see all the entities found. You can also open this window anytime via a shortcut.

You can also search by product name. It will search in cargo of vehicles, trains, in recipes of machines, storage units and even on belts.
You can also search by product name. It will search in cargo of vehicles, trains, in recipes of machines, storage units and even on belts.

We also support acronyms so instead of Blast Furnace you can just type BF. You can also search for both the entity and product contained using colon as the delimiter. So searching “BF : iron” gives us all blast furnaces that have a recipe selected which works with iron.
We also support acronyms so instead of Blast Furnace you can just type BF. You can also search for both the entity and product contained using colon as the delimiter. So searching “BF : iron” gives us all blast furnaces that have a recipe selected which works with iron.

This search works on translated strings, so if your game is set to another language, it will work as well. 


Idle statistics

Often when playing the game, you may wonder how active a particular machine has been lately. We had the same wish and so when there was a gap in our schedule we decided to implement a universal system that collects metrics about in-game entities. We took it and applied it on machines, generators, and even nuclear reactors! We provide histograms for the last 12 months (12 minutes) and then long-term ones for the last 12 years (2.5 hours).


New productivity statistics counters
New productivity statistics counters

Productivity statistics are also available for vehicles. You will see how often they get idle or how much time they spend on refueling.
Productivity statistics are also available for vehicles. You will see how often they get idle or how much time they spend on refueling.

Trains replacement

As we covered recently, Update 4 receives new tier II cargo wagons and locomotives. Plus there is the train DLC coming with even more locomotives! That's a lot of options and to make sure your future upgrade paths are seamless we added a system that allows you to replace your trains automatically! 


New train replacement UI. Set a new design, confirm, and a train depot will start producing the new train. Once the train is ready, the old one will be recalled for replacement. The depot will also try to migrate the cargo and fuel.
New train replacement UI. Set a new design, confirm, and a train depot will start producing the new train. Once the train is ready, the old one will be recalled for replacement. The depot will also try to migrate the cargo and fuel.

Moreover, you can also replace all the trains in a particular train line. Trains are grouped by their design, you just select in the dropdown which design you want to change, and your depot will handle the rest!
Moreover, you can also replace all the trains in a particular train line. Trains are grouped by their design, you just select in the dropdown which design you want to change, and your depot will handle the rest!

Train line color picker

Trains can be colored using a product color or one of our preset colors. The presets are tuned to look good and make quick selection easy, but sometimes you want more control. We built the system to support any color, and Update 4 adds the missing piece: a color picker. Now you can color trains to your heart’s desire.



Buildings placement over trees

Sometimes you want to place a building, but a single tree is in the way. Then it turns into busywork: mark the tree for harvesting and wait for a harvester to get around to it. That felt like too much friction, so in Update 4, trees will no longer block building placement. Instead, they’ll be cleared during construction, just like tree stumps and rocks. The tradeoff is that you won’t get any wood from trees removed this way (your construction workers will silently “keep” it).


Truck type filters for storages 

As we added amphibious trucks in the upcoming update, we ran into a small problem. Amphibious trucks are slower and need more maintenance, so you usually don’t want them taking inland jobs away from your regular fleet. To give you more control, we’ve added a few new options.


First, logistics zones can now define which truck types are allowed to take regular jobs (delivery, dumping) and which can take construction jobs. For example, you can block amphibious trucks from regular work in a zone, or even prevent haul trucks from doing regular jobs. Trucks count as the same truck type if they’re the same tier and purpose, even if they use different fuel.


The Zones & Assignments tab lets you block specific truck types from regular or construction jobs. Amphibious trucks also have a special option: they’ll only take construction jobs if regular trucks can’t reach the site.
The Zones & Assignments tab lets you block specific truck types from regular or construction jobs. Amphibious trucks also have a special option: they’ll only take construction jobs if regular trucks can’t reach the site.

Zone-wide rules still aren’t enough on their own. Say you block amphibious trucks in a whole logistics zone (or even the default zone), but you have a few storage silos between islands that you do want amphibious trucks to balance. To support that, each storage silo now has its own truck type filter. You can forbid certain truck types from accessing a storage, or whitelist only the ones you want, like allowing amphibious trucks to service island-to-island silos.


Set which truck types can access a specific storage. If you don’t set anything, the storage inherits its logistics zone settings.
Set which truck types can access a specific storage. If you don’t set anything, the storage inherits its logistics zone settings.

Better mods support

We are continuously investing into mods support. This time we made quite a big improvement in mods management as we felt that area needed quite some love.


Until now, to determine which mods a player has installed, we dynamically load each mod’s DLL, check the information it provides, and display it in the UI. The player would then choose which mods they actually want to include in their game. But that relied on everyone being a good citizen and that unfortunately did not always happen. Some mods decided to hook into the game already during the load phase. This became a massive pain when mods got obsolete, players deselected them, but the mods were still hooking in on load and causing issues. Secondly, we also needed player permission to load mods for safety reasons so we can even understand what mods are available. That was getting a bit convoluted, so we added manifest files: a tiny metadata file that describes the mod (name, version, dependencies, etc.) without requiring us to execute any mod code.



So with that, every mod now has to define a manifest file and all of its metadata will get surfaced in the UI. This is actually important step for CoIHub as this will be necessary to allow mod hosting - now hold your horses, mods on CoIHub won’t still be available for update 4, but with mods running with manifest files, the integration into CoIHub has just become much more likely and might open opportunity for even tighter integrations.


New mods screen for new and loaded games. We now support dependencies between mods. The new UI also much more clearly explains any issues with mods or their loading.
New mods screen for new and loaded games. We now support dependencies between mods. The new UI also much more clearly explains any issues with mods or their loading.

Mods can now provide much more information without their DLL files even being loaded.
Mods can now provide much more information without their DLL files even being loaded.

Example of the manifest file:

{

"id": "MetaLavaId",

"version": "3.2.1",

"authors": [ "JohnDoe" ],

"display_name": "MetaLava",

"description": "Desc",

"min_game_version": "0.8",

"primary_dlls": ["Lava.dll"],

"optional_mod_dependencies": ["COI-TrainsDlc"],

"non_locking_dll_load": true,

"can_add_to_saved_game": true

}


Improved backwards compatibility

A few notes on backwards compatibility. It is now possible for mods to add or remove research nodes without breaking saves. Also, it is possible to remove prototypes of unlocked but unused entities. For example, for those of you who were using Captain Marek's mod from Update 2, it is now possible to safely remove it from a save and continue playing without it.


Train pushing penalty rework

Players have freedom to place locomotives anywhere within the train and all trains can go forwards or backwards. To keep things more realistic we introduced a pushing penalty. It worked as follows:


For each locomotive within the train, we computed how many wagons are being pushed by it. Then for locomotives that were pushing some wagons, we introduced a top-speed penalty. This was meant to simulate that pushed wagons are less stable and it is not safe to push them at higher speeds.


However, this had some unwanted side-effects. For example, adding a locomotive at the end of a very long train suddenly decreased its max-speed, as half of the wagons were now technically being pushed. Another issue was that the top speed penalty applied even for situations where the train was going down hill.


For example, a train with 12 wagons pulled by two diesel engines could reach a top speed of 80 km/h. Adding a single diesel locomotive at rear reduced the top speed to just 54 km/h. Adding any amount of additional locomotives at front or rear would not change the max speed.


In Update 4 we have reworked this penalty to reduce locomotive power based on the number of pushed wagons, instead of limiting top speed of the entire train. This solved all the issues we had with this system and allows even more freedom in building long trains.


In our example of a train with 12 wagons, adding a locomotive to the rear does not affect the max speed, but the locomotive at the rear can only contribute around 80% of its max power to the train. This information is now shown in the train designer.


The train designer window showing the train's total power for both backwards and forwards directions.
The train designer window showing the train's total power for both backwards and forwards directions.

Load performance improvements

We’ve also improved game load speed by 30–50%. If you’re a software engineer, you might find the reason kind of ridiculous. We spotted it while digging into a weird detail: loading from a memory stream was faster than loading directly from a file stream. The culprit was a nasty .NET surprise: calling ReadByte() on a file stream class was allocating a new single-element array on every call! We’ve added a caching layer to keep efficient byte-reading even from a file.


That’s it for today’s diary. We’re excited to see what you build once Update 4 arrives on March 9th. Until then, thank you for playing, and see you in the next Captain’s Diary!


 
 
 
bottom of page