1. Captain of Industry
  2. News

Captain of Industry News

Patch notes for v0.7.6a

* Reduced minimum height of notification panels.
* Fixed scroll bar jumping in the alerts tab when clicking the last element.
* Fixed max unity of healthcare category.
* Fixed deconstructed entities with overlapping vehicle surfaces leaving forever inaccessible tiles behind.
* Fixed icons of solar panels.
* Fixed scroll wheel events that were not being detected in keybinding settings.
* Fixed growing buffer issue in market inspector.

Patch notes for v0.7.6

New content and balancing
* Added recipe to digest eggs in anaerobic digester.
* Increased orbital cargo limits.
* Optimized train driving to reduce slowdowns and waiting by taking other trains’ speed and inertia into account and allowing double-reservations, assuming that trains cannot stop instantly.
* Old odd-sized level crossings were marked obsolete and cannot be placed via copy-paste or blueprints.
* Improved program startup speed by loading data while the initial loading animation is shown.

UI improvements and QoL
* Train cars can now be flipped horizontally in the trains designer.
* The last selected item in the build menu is now persisted between saves.
* Train and line errors now shop-up in the lines manager.
* Added quick remove for sorter.
* Vehicle mass-replace tool now allows to filter vehicles assigned to tree harvesters.
* Unity key can be now used to trigger quick-remove and to toggle boost on a currently selected machine.
* Improved construction jobs aggregation when trucks carry materials from deconstruction directly to construction.
* Added ability to reassign a deleted station in a schedule.
* Added list of trains currently heading to a station to the station inspectors.
* Added a list of lines that have this station in their schedule to the station inspector.
* All terrain tools now have the flat designation as default.
* Copying of connectors via C key is now allowed and supported.

Fixes
* Level crossings now preserve no-stopping zone state through copy-paste and blueprints.
* Trucks should no longer exit in the middle of a level crossing, potentially getting struck in between train tracks.
* Fixed memory leak caused by housing previews. This also reduces the memory footprint of house models for settlements with more than 8 houses.
* Fixed that camera heights was not properly updated when panning to locations, such as when clicking on notifications.
* Fixed arc furnace disappearing from silicon toolbar.
* Fixed notifications tabs collapsing to too small height when they are all showing.
* Fixed max unity display.
* Fixed research complete notification showing +1 tier for incremental research.
* Fixed train and generator fuel stats that were incorrectly swapping on each load.
* Fixed that train was unable to pass though a loop at the end of bi-directional track if it was marked as critical section.
* Fixed rendering of symbol-based languages where the very top was sometimes cut-off.
* Fixed vehicle replacement that was not properly re-applying vehicle config if the vehicle was scrapped in a different depot than where the replacement vehicle was constructed.
* Fixed black screen when the game is loading before the main menu is shown.
* Fixed that non-storable products did not show in product statistics.
* Fixed rare issue with particle erosion during the map generation.
* Fixed issues with vehicle navigation overlay that was trying to compute values outside of the map.
* Fixed issues related to clearing connectors.

Patch notes for v0.7.5c

* Added conveyor/pipe maximum fill limits for storages.
* Added asteroid placement radius indicators.
* Fixed font rendering that was causing insufficient space after comma.
* Recovering a vehicle now properly re-applies its entire config.
* Fixed a rare corrupted save issue caused by improperly connected train tracks.

Patch notes for v0.7.5b

* Fixed steam locomotive animation.
* Fixed credits auto-scrolling.
* Fixed unassigned module notification when an empty module is present.
* Fixed train alignment issues when a station was larger than the train and its schedule had weak filters.

Captain's Diary #50: Post-launch payload

[p]Hi everyone, Captain Marek here with our 50th diary post. It’s been four weeks since Update 3 dropped, and we’ve already shipped five major patches that add new content, polish the UI/UX, and squash lots of bugs. Let’s take a look at how the launch went, what’s new since then, and what’s coming next![/p][p][/p]
Update 3 launch recap & highlights
[p]Update 3 landed with a bang! We shattered our previous record of 6.1k concurrent players (set back in 2022) on every weekend since release, peaking at 11121 players! It’s been fantastic to see so many new and returning Captains diving into the fresh features, especially the long-awaited trains. Thank you all for the incredible support![/p][p][/p][p]And if you haven’t done so yet, swing by our Steam page and leave us a review. Even a quick “Choo-choo!” helps keep the hype train going.[/p][p][/p][p]Concurrent players chart. Source: SteamDB.info[/p][p][/p][p]Speaking of trains, rolling out our signal-free rail system was a leap of faith. The design and implementation were complex. And let’s be honest, some of you were skeptical. But as it turned out, the streamlined, no-signal approach makes building networks easier without capping their complexity. We are truly impressed by the extensive rail networks that many of you are building. There’s still more improvements ahead, particularly around advanced scheduling for train logistics, but the foundation is solid.[/p][p][/p][p]An expansive trains empire on the Beach map by SamuraiJones[/p][p]
To help everyone get up to speed with our unique trains implementation, Zuff prepared a short video tutorial for you. We are also working on a second video covering more advanced topics.[/p][p][/p][previewyoutube][/previewyoutube][p][/p][p]Another success story from Update 3 was overall stability and how quickly we could fix issues. Our “Canary” testers spent a full week with the build before release and uncovered lots of issues, giving us time to patch them in advance. Thank you Canaries, you made a huge difference![/p][p][/p][p]Once Update 3 went live, we delivered one patch per day for the first four days to smooth out any remaining rough edges. Being able to hot-patch while more than 10k players are online is something we take pride in. Nearly 5k automated tests, a clean code base, and a seasoned dev team let us push rapid fixes without risking severe regressions or corrupted save files.[/p][p][/p][p]The steady flow of post-launch patches has been about more than bug fixes. Thanks to your feedback we have added new features and delivered many of the top-requested improvements. Today we shipped the fifth and largest major patch, v0.7.5, which brings, among other things, hydrogen locomotives and performance optimizations. Here are the most significant additions since Update 3 went live (full patch notes can be found at the end of the post).[/p][p][/p][h2]Patch 0.7.5[/h2][h3]Added a hydrogen locomotive.[/h3][p]It’s finally here, a pollution-free alternative for trains (just don’t ask how the hydrogen was made). The peak power is slightly lower compared to the diesel locomotive, but it has higher top speed.[/p][p][/p][p]The new hydrogen locomotive pulling tank wagons.[/p][h3]
Added a focus (office bonus) for train capacity increase. It also increases modules capacity and loading throughput.[/h3][p]Some players have already expanded their factories to end-game scale and need even higher rail throughput. This update answers that demand by increasing wagons and stations capacities, and loading/unloading speed. Tier 2 trains are still on the table for the future updates, so stay tuned![/p][p][/p][p]Screenshot showing train capacity focus on 4th level giving extra 10% to trains capacity.[/p][p][/p][h3]Increased maximum train length per train depot extension from 2 to 4 and increased extra wagon storage space from 1 to 4.[/h3][p]Thanks to continuous loading, trains can grow in length independently from station sizes. Longer trains tend to be more efficient, but train depot size was limiting the max train length. The other day, I saw someone on Reddit asking what the maximum train length is – there is none! So go and have fun with long trains![/p][p][/p][p]Long trains can be very efficient in moving large amounts of products, but be careful to not block your main line![/p][p][/p][h3]Increased size of level crossings by 1 tile so that they have even size, to better match vehicle ramps. Old crossings remain functional but are now obsolete and will be removed from the game in the future.[/h3][p]Apparently, the game was “literally unplayable”. Vehicle ramps were an even number of tiles wide while crossings were odd. Crossings are now one tile wider, everything lines up on the grid, and the game is “playable” again.[/p][p][/p][p]Screenshot from a reddit post by havoc1428 titled “Literally unplayable.”[/p][p][/p][p]Screenshot from a reddit post by xTMagTx titled “Playable Game.”[/p][p][/p][h3]Added a contract that trades rocks for fuel gas.[/h3][p]Turns out there are people who don’t want to flatten the entire island, and we support that! Now you can get rid of excess rock, and get some sweet fuel gas in return.[/p][p][/p][p]Screenshot of Aceman’s island with caption: “Does anyone have a solution to Copious amounts of dirt and rock”.[/p][p][/p][h3]Increased minimum number of loans from 1 to 2 on easy and medium difficulties.[/h3][h3]Added option for 50-year loan.[/h3][h3]Increased maximum base loan amount from 5k to 25k.[/h3][h3]Added a loan for rail parts.[/h3][p]Loans were made more useful by allowing more loans when having low trade reputation, and significantly increased the loan cap when having high trade reputation. And you can now loan rail parts![/p][p][/p][p][/p][p][/p][h3]Improved rendering performance of trains, train stations and level crossings, resulting in 10-40% FPS gain in train-heavy saves.[/h3][p]Players love trains so much that they’ve been building a lot of them and performance started to deteriorate for train-heavy saves. We’ve taken a pass to optimize 3D models, add more LODs (level of details, simpler models that show when model is far from camera), and utilize instanced rendering where possible. This resulted in significant performance gain in the range of 10 to 40%.[/p][p][/p][p]Performance gain on three different saves, Coin’s save was just a large test map full of trains, stations, and storages.[/p][p][/p][p]Save from Verteks where we measured rendering performance gain of 27%, from 59 to 75 FPS.[/p][p] [/p][h3]Upgraded to the latest Unity 6.0.50f1 with hope to minimize random crashes.[/h3][p]Upgrading Unity from version 2022.3 (the previous long-term-support version) to 6.0 (the current LTS version) was a significant internal change. While it hasn’t resulted in more FPS, it should reduce rare crashes and rendering glitches.[/p][p][/p][p]Note that due to the Unity upgrade, Windows 7 is no longer supported.[/p][p][/p][h2]Patch 0.7.4[/h2][h3]Added a mass-upgrade tool for vehicles.[/h3][p]Mass vehicle upgrade was on our radar for some time, but with Update 3’s doubled vehicle limit, it was needed more than ever.[/p][p][/p][p]The new tool allows replacing vehicles by type and you can choose whether to replace all of them, or only a certain group, like all trucks assigned to a mining tower.[/p][p][/p][p]New mass-replacement tool for vehicles in action.[/p][p][/p][h2]Patch 0.7.3[/h2][h3]Added logistics zones.[/h3][p]Update 3 super-sized every map and doubled the vehicle cap, putting heavy pressure on truck logistics. To keep deliveries running smoothly, we’ve introduced logistics zones which allow you to completely separate parts of your island into independent sections restricting trucks, refueling, construction jobs, dumping and even tree harvesting to be performed only by vehicles assigned to each zone.[/p][p][/p][p]Logistic zones UI[/p][p][/p][h3]Added train tutorials.[/h3][p]Long-overdue train tutorials were added shortly after launch, and we are also working on a video version for anyone who prefers watching over reading. Let us know if there are more topics that in-game tutorials should cover.[/p][p][/p][p] [/p][h3]Improved train path-finding heuristics and added path re-planning on every fork.[/h3][p]Previously, a train would recalculate its route only while stopped and waiting for a clear track. That often wasn’t enough. By the time it reached the next junction, another train might have moved into the branch it had chosen, causing it to be delayed or stuck. Now each train reevaluates its route at every junction, always choosing the best path based on real-time track conditions. Our path-finder is fast and runs on its own thread, so it comfortably handles the increased volume of routing requests.[/p][p]
[/p][h3]Fixed text rendering for Chinese/Japanese where characters that have the same code point but look differently based on language settings are now rendered properly.[/h3][h3]Improved font rendering clarity for all languages.[/h3][p]Thanks to our dedicated community, Captain of Industry is available in 19 languages, which include symbol-based languages like Chinese, Japanese, and Korean. Some of these languages share the same Unicode code points, but each requires its own stylistic glyph.[/p][p][/p][p]Updating the font-rendering pipeline to select the correct glyphs was anything but simple, but we hope that the change makes text easier to read for our Asian players. And while we were at it, we improved clarity and contrast of all our fonts.[/p][p][/p][p]Example of a character U+5203 that should be shown differently depending on the language.[/p][p] [/p][h3]Fixed a memory leak caused by transport previews not properly disposing of the preview meshes.[/h3][p]When a GameObject is destroyed in Unity, its attached Mesh isn’t freed unless you destroy it explicitly. Our transport-preview system created fresh meshes each time but never cleaned them up, so they accumulated in memory. The leak only became noticeable during very long play sessions or when using blueprints with lots of transport pieces.[/p][p][/p][h2]Patch 0.7.2[/h2][h3]Added per-wagon products filters which can be set directly on trains.[/h3][p]In addition to per-train filters that can be specified in train schedules, we added per-wagon filters that allow trains to load multiple different products of the same type, like rock and dirt, at one station. [/p][p][/p][p]Train carrying sand and iron ore with wagon filter set.[/p][p][/p][h3]Improved train alignment logic so that trains will now always align all wagons that have any compatible modules at a station.[/h3][p]Our initial philosophy about continuous train loading and wagon alignments to station modules was to keep things very simple. The logic was:[/p]
  • [p]Align the first unserviced wagon to the forward-most compatible station module and service it.[/p]
  • [p]If other wagons happen to be also aligned, service them too.[/p]
  • [p]If a wagon cannot be serviced, skip it.[/p]
  • [p]Repeat this until all wagons are serviced or skipped.[/p]
[p][/p][p]The problem lies in the first step. We chose to align the first wagon to the forward-most compatible module to maximize chances of all other wagons also being serviced, but some other wagons may have passed its only chance to be serviced due to “greedy” behavior of the first wagon. Here is an example of this situation:[/p][p][/p][p]A train with coal-water-coal wagons visiting stations with coal-coal-water modules. The first alignment according to our old logic was to align the first wagon with the forward-most coal module, but this caused the water wagon to “overshoot” and never get serviced.[/p][p][/p][p]Based on feedback, we learned that it's better for the system to consistently do the right thing rather than restrict it to a set of simple rules.  So we have changed our strategy and developed an algorithm that guarantees that all wagons that are serviceable by a station will be serviced. In our example, this means that the train will stop for the water first.[/p][p][/p][p]Improved alignment logic guarantees that all wagons will be serviced, so the train has to stop early for the water wagon.[/p][p][/p][p]Our new alignment solver is also able to deal with tricky situations like station building in the middle of loading modules. It is also attempting to minimize the number of alignments necessary to service all wagons.[/p][p][/p][p]Train servicing all wagons in a station that has the root building in the middle, complicating alignment logic since the root has different width to the wagons and modules.[/p][p] [/p][h3]Clicking on a recipe in the toolbar menu popup will now open the entity placement flow with this recipe selected.[/h3][h3][/h3][p]Click on recipe in the build menu, place building, enjoy your new building with a pre-selected recipe.[/p][p][/p][h3]It is now possible to cycle through tiers or buildings (including conveyors/pipes) when placing them by holding CTRL + scrolling up / down.[/h3][p]Another frequently requested feature was to be able to change the tier of the currently selected building. Since we already categorized tiers of buildings in the build menu, tier selection using scroll-wheel feels natural. I especially like it when building conveyor belts and pipes.[/p][p][/p][p]Cycling through all four tiers of furnaces with Ctrl+Scroll-wheel while in the build mode.[/p][p][/p][h3]Added placement clipboard: Pressing Ctrl+V recalls last cut or pasted item, Ctrl+Shift+wheel cycles history of last 50 cut/pasted items.[/h3][p]Have you ever cut a planned design to move it elsewhere, only to accidentally cancel it and watch the entire design disappear? Not fun! That issue is gone forever. The new clipboard history lets you recall up to 50 previous designs, so nothing gets lost.[/p][p][/p][h3]Added keybinds for Vehicle management window, Train lines window, Storage, Terraforming, and Train build menus.[/h3][p]More key-bindings, more customization![/p][p][/p][h3]Fixed possible self-intersection of long trains on loops and added a notification when it happens.[/h3][p]Originally, a long train could intersect itself on a large loop if the entire loop was reserved at once (for instance, when a no-stopping zone covered the track). The bug lay in the reservation system: it allowed two overlapping blocks to be reserved simultaneously, which must never happen if collisions are to be avoided.[/p][p][/p][p]Our first fix prevented any overlapping reservations during the reservation phase. That solved the immediate problem, but a little too aggressively. Afterward, trains failed to reserve every route that might self-intersect, even when a shorter train could have passed safely.[/p][p][/p][p]The final solution adds train-length checks during the reservation phase. A route that geometrically self-intersects is now permitted as long as the train itself is short enough to clear the overlap.[/p][p][/p][p]Despite the train having a self-intersecting path, it can proceed since it is short enough to not get stuck. This is the only case where two overlapping blocks can be reserved at the same time.[/p][p] [/p][h3]Fixed a rare issue that was causing game freezing and required forced restart.[/h3][p]Since Update 2, a rare bug was lurking in the game that could trap the game loading in an endless loop. We only noticed it after Update 3, when the problem started to show up a bit more often. Restarting the game always fixed the issue, so we had no reliable way to reproduce it, just months of guessing. To help players, we added code that detects a stalled load and pops up an error message telling them to restart.[/p][p]
[/p][p]I’d never seen the bug myself, but, by pure luck, Jeremy did hit it once. He attached a debugger while the game was still stuck and finally caught the culprit: our hash-map deserialization. In some cases it touched half-initialized objects whose GetHashCode returned a value that sent the loader into a circular loop and the game never finished loading. Restarting helped because hash codes of objects are randomized on each program start. [/p][p][/p][p]The fix was easy and a huge relief for our entire team.[/p][p][/p][h2]Patch 0.7.1[/h2][h3]Added option to disable frosted glass effect in UI.[/h3][p]Our new UI uses a blurred-glass overlay to lighten large dark panels. While most players like the effect, some find the blurred background distracting and the text laid over it harder to read. To help, we’ve darkened the glass for better contrast and added a toggle to turn the effect off completely.[/p][p][/p][p]Animated gif showing the new UI with and without the glass effect.[/p][p][/p][h3]Added an option to automatically disable logistics for all newly constructed buildings.[/h3][p]Experienced players prefer to deliver all products by conveyor belts, especially in late-game. Switching logistics off for every new building was unnecessary micro-management, so now it’s possible to globally switch it off.[/p][p][/p][p] Disable logistics for newly placed buildings toggle can be found in the vehicles management window.[/p][p][/p][h3]Added an option to set a rectangular area of mining and forestry towers directly via a new button in the bottom toolbar in the area editing mode.[/h3][p]Update 3 introduced polygon areas that allow more freedom, but many people wanted to keep simple rectangles, so now we can do both! [/p][p][/p][p]To set a rectangular area, look for the Rect button in the bottom toolbar when editing areas.[/p][p][/p][h3]Added an option to set larger text in Settings => Video => Accessibility (note that this is an experimental feature).[/h3][p]Another accessibility feature, handy for players who want larger fonts without having to scale up the entire UI.[/p][p][/p][h3]Increased maximum area size for mining and forestry towers by 2x.[/h3][p]Bigger maps ask for bigger mining operations and 2x larger areas should help a lot. We may allow larger ones in the future, but we need to do some optimizations on our end first.[/p][p][/p][h3]Fixed a rare issue where switching an active display caused the game to become 1x1 px stretched across the screen when in borderless window mode.[/h3][p]A rare bug showed up when the game tried to switch monitors while running in borderless-fullscreen. The hand-off sometimes failed and Unity shrank the render target to a 1×1-pixel framebuffer. Because the bad resolution was stored in the registry, the game stayed that way after every restart, even reinstalling didn’t help! The only escape was editing the registry or unplugging monitors.[/p][p][/p][p]We traced the root cause to a race condition in Unity’s borderless-fullscreen handling. The fix was to perform the following carefully orchestrated set of steps:[/p][p][/p]
  1. [p]Switch to windowed mode.[/p]
  2. [p]Resize the window to the target display’s resolution.[/p]
  3. [p]Move the window onto that display.[/p]
  4. [p]Wait a few frames for the OS to realize that the move has happened.[/p]
  5. [p]Restore the original fullscreen/borderless mode.[/p]
[p][/p][p]That brief flicker you now see when swapping displays is this sequence at work.[/p][p][/p][p]We’ve also added two extra safeguards:[/p]
  1. [p]A recovery code resets the resolution settings if it ever detects a 1×1 px framebuffer on startup.[/p]
  2. [p]A 15-second “Confirm display change” dialog automatically rolls back the settings if you don’t click the “Confirm” button.[/p]
[p][/p][p]New confirmation dialog shown after display is changed.[/p][p][/p]
COI Hub
[p]One thing that went under radar for most players is that we launched a brand new community-driven translation tool on our COI Hub. The previous system was not very good at surfacing the voting system, so many strings collected a lot of suggestions without ever reaching consensus. In addition, updating strings was brittle and slow, and a few times we even had to do manual database editing to resolve issues.[/p][p][/p][p]Screenshots of a list of available languages in our new translation system.[/p][p][/p][p]Our new tool treats each string as a poll: contributors are encouraged to vote for existing options first, and proposing a fresh translation automatically lowers the score of the others to keep clutter in check. We can now deprecate old strings, view detailed stats, and updating strings has a solid pipeline that minimizes opportunities for errors and accidental removals.[/p][p][/p][p]To lighten the workload for volunteer translators, every string can get pre-filled with an AI-generated suggestion. Because the model receives rich context, including similar strings, usage notes, and examples, about 70-80% of these suggestions are accepted unchanged, leaving only minor tweaks for the rest. Each prompt is lengthy (over 1000 words), which costs a bit more to generate, but the accuracy more than pays off in reduced review time.[/p][p][/p][p]If you’d like to help translate Captain of Industry, drop by the new portal and start voting on translations, or submit your own improvements.[/p][p][/p][p]Huge thanks to everyone who has already contributed![/p][p]An example of our new translation tool, with some pre-populated suggestions from the Captain Bot.[/p][p][/p]
What’s next
[p]Over the next few weeks you’ll still see hot-fixes and smaller improvements. Behind the scenes we’re entering a planning sprint: stacking up your feedback against our own vision and mapping out the next major milestone. If there’s a big-ticket feature you’re eager for, drop it on the ideas forum, Reddit, or Discord – now is the perfect time.[/p][p][/p][p]As we chart the path from Early Access to 1.0, we’re looking for sustainable ways to keep development moving quickly, without moving the goalposts on the core game. Captain of Industry is built by a small team, yet many of you have already logged 100+ hours, and our feature wish-list still runs 15+ pages long. We also already added several features we did not even plan to have for 1.0. [/p][p][/p][p]One idea is to offer extras that would fund more hands on deck: another supporter pack, smaller DLCs for players who crave extra depth, or cosmetic skins for vehicles or buildings. Nothing is set in stone, and delivering 1.0 will remain our top priority. However, there are lots of expectations on us and we need to make sure our revenue stream can sustain such intensive development. Calling COI as 1.0 prematurely would not help as that would come with a freeze on save state preventing us from doing any significant reworks and improvements. We’d love to hear your honest thoughts: would paid add-ons that accelerate development feel welcome?[/p][p][/p][p]Oh, and we are hiring! See https://www.captain-of-industry.com/jobs, and if your specialty isn’t listed but you’re convinced you could level up Captain of Industry, drop us a line anyway, we can consider opening a position for an exciting candidate[/p][p]
And that’s all I have for today, Captain Marek out.[/p][p] [/p][p]Refer to our Blog for the Full Patch notes! [/p]