1. Captain of Industry
  2. News

Captain of Industry News

Patch notes for v0.5.0a

* Simulated ocean rendering now falls back to the low quality option when simulation is not working (happens for older GPUs).
* Fixed that UI windows could be bigger than the screen.
* All main menu windows can now be closed with Escape.
* Fixed that forestry tower area incorrectly affected dumping designations.
* Fixed tree harvesters that now more robustly check unreachable trees.
* Fixed an issue where tree designations which were once unreachable were never revisited.
* Other minor internal fixes.

Our first major update has been released!

Hi everyone, Captain Zuff here, and I am thrilled to announce that our first major update is now released! Update 1 is big, so I've prepared a short video summarizing the most important ones. You can also see the full changelog at the bottom!

[previewyoutube][/previewyoutube]
[h2]Key highlights from Update 1[/h2]
  • Significant graphics update, new terrain textures, trees, grass, and props.
  • New dynamic ocean, dynamic sky, and fog.
  • Tree planting & automated harvesting.
  • Significant improvements in terrain simulation & physics.
  • New graphics for machines and vehicles.
  • Revamped storage units that now show stored products.
  • New terraforming options: Leveling designations, Stacker + mixed cargo mining & hauling.
  • Vertical pipes!
  • Significant extension of Nuclear power, including new reactors and reprocessing plant.
  • More than 14 new machines and buildings.
  • More than 16 new products, including new production chains.
  • Extra 30 minutes of music.
  • Lots of QoL features, including new dashboards or direct vehicle upgrades.

To learn more about the development of this update, see our previous posts:

We are also celebrating our first anniversary since Captain of Industry was released into Early Access a year ago, on 31st May 2022. 🎉 Thanks for being with us on this journey. We are truly grateful for having such a great community, and we can’t wait to see what next year brings!


Full change log
Changelog

Graphics improvements
* Added sun, dynamic fog, and dynamic sky that change based on weather.
* New high-quality terrain textures for nearly all materials.
* New simulated ocean that adapts its wave pattern and color properties to the current weather conditions (old ocean is still available as a low-fidelity setting).
* New tree models: spruce and fir.
* Added rocks to the terrain. Rocks are impassable for vehicles but buildings can be built on top of them. Excavators can also remove rocks when on mining designations.
* New terrain grass coverage system, mixing multiple types of grass and flowers.
* Refreshed all maps with better resource placement and improved tree distribution.
* Trees leave stumps after they are harvested. Stumps decay over time.
* Products are now visibly stacked on conveyors, trucks, and around storages.
* Storage units now show icons of what is stored in them.
* New models for Excavator T1 and T2, Truck T1 and T2.
* UI improvements.

Music
* Added 8 new tracks totalling 30 minutes of new music.

Forestry
* New Forestry tower and tree planter vehicle can perform tree replanting and fully automated harvesting.
* Trees are planted using saplings that grow on farms.
* Tree harvester now visibly slices trees into smaller logs.
* World map lumber mill was removed.

Vehicles improvements
* Mixed mining: Excavators can mine mixed products, always scooping a full bucket.
* Mixed hauling: Trucks can be loaded by excavators with mixed cargo, significantly increasing mining efficiency. For now, mixed cargo can be only loaded by excavators.
* New widget for vehicles that allows a choice for their replacement with a different tier. Replaced vehicles keep their assignments.
* New vehicle scheduling that is more performant and allows assigning jobs to the closest available vehicles.

Major features
* Pipes can now be constructed vertically, taking up less space when changing levels.
* Added leveling terrain designation (combination of mining and dumping designation).
* Stacker: allows dumping of loose material from conveyors directly on the terrain.

Nuclear energy changes & new content
* Brand new model for Nuclear reactor I.
* Added a new MOX reactor (tier II reactor), allowing to reprocess spent fuel and minimizing waste that needs to be stored. Also provides extra 33% of power compared to the previous tier.
* Added a new Fast Breeder Reactor (FBR) (tier III reactor), allowing to reprocess and burn all the waste while providing twice more power than the MOX reactor by generating super-pressured steam (a new type of steam).
* Added a new Nuclear reprocessing facility that was designed to work together with FBR and MOX reactors.
* Added more than 12 new products: Enriched uranium (4%, 20%), Reprocessed uranium, Depleted uranium, Plutonium, MOX rod, Core fuel, Blanket fuel, Fission product, Spent MOX, Retired waste, and more.
* Introduced a new Super pressure steam turbine to be used with FBR.
* Reduced capacity of nuclear waste storage from 5k to 1.6k since all waste can be now processed eventually.
* Nuclear reactor now needs to be turned off before an upgrade is possible.
* Fuel gets loaded into the reactor without requiring positive target power.

Quartz & sand changes
* Added a new mineable resource: quartz, available on all maps.
* Sand is no longer made by crushing rock but by crushing quartz instead.
* Silicon production now requires sand instead of quartz.
* Introduced manufactured sand that is produced by crushing Rock and can be used to produce Concrete and Filter media.
* Reduced unity cost for world map Quartz mines from 0.5 to 0.4.

Computing changes
* Added mainframe: predecessor to datacenter, making bootstrapping of microchips easier.
* Made microchip production 25% faster and also 25% cheaper on computing.
* Increased server rack cost from 20 to 25 servers but doubled its computing output. This means that a datacenter still requires the same maintenance while providing twice more computing.

New machines & buildings
* New Captain’s office I
- Makes blueprints available much sooner and provides basic edicts.
- The previous office is now Captain Office II and provides access to advanced edicts.
* Thermal storage: enables storing heat and use it later in the form of Steam.
* Tier 2 diesel generator: more efficient and 6x more powerful than tier 1 and allows to filter exhaust.
* Tier 2 electrolyzer, both tiers also got new models.
* Tier 2 mixer, both tiers also got new models.
* Tier 2 crusher: 4x the size and 6x the throughput compared to tier 1.
* Waste incineration plant: allows to burn waste more efficiently while also providing free Steam. Also outputs exhaust for potential filtration.
* Compactor: Allows compacting trash in 1:3 ratio.
* Shredder: Allows reversing compacting and also can shred wood.

New recipes & changed recipes
* Hydrogen can be created more efficiently from water using super-pressure steam.
* Dirt can be made out of compost and gravel using a mixer.
* Wood can be converted into woodchips and burned in the boiler to produce steam.
* New product paper that can be made from wood and limestone and used in lab supplies instead of a nitrogen tank. Removed nitrogen tank as a product (nitrogen gas remains).
* Chicken can be converted directly into trimmings instead of having to go through meat.

New mechanics
* Electricity surplus: Entities can now be set as "surplus consumers", only consuming power generated by "surplus generators".
* Conveyor belts and storages can now operate in three selectable modes:
1) Belts and storages do not consume any power.
2) Belts and storages consume power with the highest priority but still function without power.
3) Belts and storages consume power and won’t work without it.
* Landfill now decays over time and produces pollution. It takes 4 years to fully decay, at which point the pollution stops.

Balancing and changes in production chains
* Major
- All food types now feed +20% more people.
- Reduced costs of pipes and conveyors by 30%.
- Minimum intervals between diseases were increased by 30-100% (based on disease).
- Gold ore yields half the gold and comes with increased crushing costs.
* Electricity inflation
- All machines consume 4x more and all generators generate 4x more.
- Conveyors only consume 2x more, reducing their consumption by 50%.
- Settlement transformers only consume 3x more, resulting in a 25% decrease.
* Electricity production
- Increased steam energy density by 50% (less steam is needed for the same amount of power, but it costs more to make to compensate).
- 50% increased mechanical power throughput on turbines and mech. power generators
- High-pressure and low-pressure turbines now have the same throughput and their layouts have been changed as well.
* Bricks
- Brickworks has double throughput and costs 10 CP less.
- One brick now costs 1.75 dirt instead of 2.
- Starting bricks in ruins reduced from 800 to 600.
* Wood
- Wood now yields almost twice as much coal in a charcoal burner.
- Reduced wood required in construction parts from 4 to 3.
- Doubled wood input in household goods but reduced steel from 2 to 1 and glass from 10 to 8.
* Refinery
- Fixed that the cracking unit was returning less diesel (6) than it should (8) (based on the energy density of the input).
- Increased ethanol yield from sugar cane by +50%, making it more energy efficient.
- Increased diesel yield from canola and sugar cane by 40%.
- Increased hydrogen reforming yield from 12 to 14 (to account for extra 2 hydrogen from input steam). The recipe for fuel gas takes extra 2 hydrogen to compensate for that.
- Fuel gas to diesel recipe now returns water as a bi-product instead of Co2.
- Decreased cooking oil needed in diesel production from 12 to 9.
- More acid yield from 2 sulfur increased from 8 to 12.
* Fertilizer
- Fertilizer is now made with ammonia + oxygen instead of ammonia + nitrogen + water.
- Sour water stripper ammonia output reduced from 4 to 3.
- Fertilizer I was made cheaper as the chemical plant produces 10 instead of 8 in the same recipe.
- Fertilizer II production increased from 10 to 12 by accepting extra sulfur and limestone.
* Electronics rebalance
- Reduced cost of Electronics II by requiring half of Electronics I and Polysilicon.
- Increased cost of PCB by requiring 2x more glass.
- Electronics II and PCB production throughput increased by 100%.
- Reduced cost of Construction Parts IV by requiring half of Electronics II.
- Lab equipment 3 now costs 2 electronics II instead of 8 glass.
- Lab equipment 4 now costs 2 electronics III instead of 2 electronics II.
- Servers now require 5 Electronics III instead of 4.
* Desalination
- Reduced desalination cost by 15% (energy-wise).
- Thermal desalination plant throughput increased by 85% when using HP steam, by 400% when using LP steam, and by 300% when using Depleted steam.
* Electrolysis
- Electrolyzer I throughput for hydrogen production increased by 100% (power demand increased as well)
- Electrolyzer can no longer be boosted.
- The volume of depleted steam returned from burning hydrogen in a boiler changed to be equal to the volume of water it takes to make the hydrogen using an electrolyzer.
* Maintenance
- Crushers now cost maintenance.
- Maintenance II requires 25% fewer mechanical parts.
- Maintenance II depot throughput increased by 100%.
- Maintenance III depot throughput increased by 50%.
- Reduced maintenance costs of robotic assembler I from 5 to 4.
- Changed robotic assembler II to require maintenance II (7x) instead of tier III.
- Moved several machines and tier III vehicles to use maintenance II as it now comes
* Other
- Crushing is now 2.5x more power-hungry.
- Decreased ocean pump output from 20 to 18 water.
- Decreased effectiveness of cooling of HP steam from 12 to 10 output water.
- Waste burning in a regular burner changed to take twice as long.
- Sludge digestion and composting are now 30% faster.
- Settlements now return biomass for wood consumed from household goods
- Increased radiation tolerance due to new, more radioactive products.
* Rewards
- Increased world map rewards by 10-20%.
- Added more rewards after goals completion.
- Removed microchips and servers as rewards from the world map.

Changes in research
* Electronics II is now available earlier due to the removed Quartz input. This also allowed making Construction Parts IV and Maintenance II available earlier as well.
* Solar panels, Power generation IV, Household appliances, and Hydrogen Reformer all come before Research Lab IV.
* Moved cooling tower II from nuclear research to power production IV.
* Ship weapons II are no longer locked by Electronics II
* Merged reforming and cracking so cracking comes earlier.
* Early research is faster to unlock.
* Research locks: Some research nodes now require a certain amount of products created in order to be researched.

Quality-of-life and UI
* Added a quick remove unity action for storage units when they are being cleared.
* Added new dashboards that provide a breakdown of the consumption and production of electricity, computing, workers, and maintenance.
* Blueprints now automatically downgrade their locked items on placement.
* When a blueprint is locked, a list of locked entities is shown on hover.
* Notifications in entity inspectors are now shown in a panel on the side, eliminating jumping UI.
* Clicking on a machine icon in a recipe book now starts building it.
* Power, computing, and workers displays in entity inspectors are now grayed out when the is not consuming the resource.

Other changes
* Transports can no longer turn and initiate a ramp up/down at the same time. These types of ramps were removed as they were not extendable once placed.
* Recycling plant now returns sorted products via a single conveyor, final sorting has to be done using sorters. This provides more extensibility in the future.
* World structures are now paused after repair.
* Advanced tools such as cut or copy are now locked behind initial research. This increases discoverability and makes the game less intimidating for new players.
* Main folder with save files and blueprints has been moved to the appdata folder to prevent issues with their accessibility on non-standard systems.
* Chained storage units automatically disconnect corresponding vehicle import/export settings to improve vehicle jobs scheduling and performance.
* Added difficulty setting to allow to increase contracts profitability.
* Added more generous difficulty options to reduce maintenance.
* Added more options for autosave intervals.

Terrain performance & physics
* New terrain representation storing data in contiguous arrays.
* Terrain can be up to 65k tiles squared large (260 km^2).
* Terrain now supports up to 256 different materials (up from 28).
* Terrain now properly distinguishes between solid materials (cliffs) and mined ones (mined rock), each type having its own physics parameters.
* Improved terrain physics now takes material layer thickness into consideration, allowing thin layers to stick at steeper angles.

Performance
* Various internal improvements increase the simulation speed of many components by 10-30%.
- Completely rewritten simulation of machines
- Increased performance when exchanging products between ports and buffers
* New terrain rendering tech improving FPS by 1-8x (based on map size and view) and reducing memory consumption by 4x.
* Terrain operations such as mining, material collapse, or disruption after vehicles are 2-4x faster.
* New conveyor and pipe rendering system resulting in 3x speedup.
* Ocean access area checking is 10x faster, not lagging the game when placing docks or a shipyard.
* Optimizing products rendering to use batched GPU instancing (rendering multiple products per single instance).
* New LOD system that adjusts ocean quality based on view distance. If the ocean is not in the view, it is not even simulated.
* New terrain details rendering system (grass, flowers, etc.) with LOD support that also adjusts density based on camera distance and does not render details that are too far from the camera (previously, all details on the entire map were rendered).

Rendering infrastructure improvements
* Switched to Forward rendering pipeline (from Deferred). This allowed the use of multi-sample anti-aliasing and greater control over rendered pixels.
* Terrain now uses tri-planar rendering (on a high-quality setting), removing texture stretching from steep slopes.
* Added rendering quality options and presets to be able to get the game to run smoothly on a wider range of hardware.
* Added three separate FPS limits for the game, menus, and when the game is in the background.
* Shadow distance is now dynamically adjusted based on the camera zoom.
* Fully unlocked game camera, which can now look up at the horizon.
* Small objects such as grass, flowers, or crops on farms no longer disappear when zoomed out slightly.

Small Quality-of-life
* Holding shift while adding or removing servers to the datacenter adds or removes 8 at a time.
* Recipe book now shows radiation levels for products.
* Contracts view now sorts contracts by output so that similar contracts are near each other.
* Changed machine UI to display "waiting for products" status instead of "missing input" together with a list of products missing on mouse hover.
* Added a notification strip when transport snapping is disabled.
* Added a legend for the shortcut which allows preventing applying copied config when placing entities.
* Terrain grid is now visible when modifying Mine Towers areas.

Fixes
* Game no longer freezes when on the loading screen.
* Music now does not stop on the loading screen.
* Made ocean pumps and dumping entities stop working when the ocean is no longer present.
* Edicts effects are correctly combined with other effects, such as difficulty options.
* Fixed that datacenter racks didn't appear on load.
* Fixed that global products statistics kept increasing when machines ran partial recipes (e.g. cooling towers).
* Fixed that storage units that were not built yet were already reporting their capacity.
* Fixed that blueprints would add locked recipes into machines.
* Fixed that launching a rocket returned its scrap value back.
* Lots of improvements and fixes in how products are handled in quick build and removal.
- Storage units now have priority over Shipyard to store products.
- Shipyard has priority over storage units to provide products.
- Cargo depot that is exporting products no longer provides them for a quick build.
* Balancers and sorters now show power consumption in the entities menu popup.
* Camera, even "free look", cannot go underground.
* Fixed issues with map borders and added support for cargo depots built near the border.
* Fixed that the fuel station had its input buffer registered into logistics instead of solely relying on piped input.
* Fixed fuel station that was often sending partially loaded fuel trucks.
* Trees are no longer moving when mined under but fall down instead.
* Increased maximum number of rendered characters per element from 15k to 18k to accommodate Update 1 changelog.

Contracts balancing & changes
* Contracts removed:
- Glass => Coal
- Diesel => Quartz
- Diesel => Limestone
- Coal => Limestone
- Coal => Gold ore
- Vehicle Parts II => Uranium
* Contracts added:
- Household goods => Coal
- Lab equipment III => Coal
- Rubber => Wood
- Household appliances => Wood
- Lab equipment II => Copper
- Vehicle parts II => Quartz
- Sulfur => Sludge
- Consumer electronics => Crude oil
- Lab equipment IV => Uranium
- Servers => Gold ore

Captain’s diary #36: More info on Update 1 and release date!


Welcome everyone! Captain Filip here and I’m excited to bring you our last post on Update 1.

First of all, the release date for the Update 1 is set to the 30th of May, approximately 10am Pacific time (7pm in central Europe). If things go fine, it might hit the experimental branch on Steam a bit sooner.

To remind everyone, save files from the current version won't be compatible, but you will be able to keep playing the older version of the game using a Steam branch (ea-legacy).

We have updated the translation page with new strings from Update 1 and we would really appreciate it if folks from our translation community could help us to localize these. Thank you so much for helping us!

Now let’s dive into news about Update 1. And by the way, we have highlighted several exciting changes in our previous posts, so definitely take a look if you’ve missed them.

Product stacking & visibility

One major thing that was on our wishlist for a long time was to actually provide more visibility into unit storages. We already opened loose storages in previous updates. But unit storages were a bit more challenging. We have implemented a shelving system with stacked products and also added built-in signs on top of roofs. Finally, the storage units went through a significant face-lift.



Because we render just two sides of the storage (2n² items) and not the entire volume (n³ items), we saved on performance significantly while still being able to render non-trivial products. This also relies on instanced rendering, which we covered a few times before. However, we still have a way to go, such as adding LODs for some complex products.

The other thing we had to implement to make this happen is something we call product stacking. Belts, trucks, and storages all have the following rule: they provide 1 cubic meter to hold 3 stacked products. It is up to each product to decide how to utilize the space. And also, thanks to this, we can now render stacked products on belts. Below you can see different stacking strategies for different products.


And finally, we were also able to render unit products on trucks that now have flat beds instead of cargo containers. So you can quickly see what they are delivering to make sure they are not just driving with empty containers and slacking off.



Electricity

This is a big topic, so fasten your seat belt. We have made lots of changes in power production.

[h2]Power rebalance[/h2]
Before we mention any power values, we need to cover one important change. We have inflated our electricity production and consumption by a factor of 4. So all power generators produce 4 times more, and all consumers consume 4 times more. We didn’t do this only because inflation is trendy these days (I wish this would be funny), but we had two main reasons: 1) We wanted more immersion as our power plants felt under-scaled. 2) We did not increase transport consumption by 4 but only by 2. This effectively halves transports’ power consumption. We couldn’t do this before as we were hitting the limit of 1 KW being our smallest unit.

[h2]Turbines rebalance[/h2]
In the real world, HP (high pressure) turbine is significantly smaller than LP (low pressure) turbine due to steam density that decreases with lower temperature. We didn't follow this principle, and on top of that, we required 2 HP turbines per 1 LP turbine. There wasn't really a need for that, we just thought that was cool. But if we have a choice to follow reality we try to do so. So we redesigned the turbines. HP turbines are 1 tile shorter and narrower. We also restored elevated pipe connectors as we had in old versions of the game, because of reasons we will cover later. And changed the HP to LP ratio to 1:1.



Besides that, we felt that turbines were already quite space-demanding. So we made steam 50% more energy dense (and more costly to make) so that turbines & mech. power generators can now have +50% output.

[h2]Super pressure turbine[/h2]
Another thing we are adding is a super pressure turbine. This new beast goes right in front of the HP turbine and consumes Superheated steam and returns HP steam. Superheated steam gets produced in one of our new nuclear reactors, so this is an end-game tech. Many of you will starve your colony to death before you even get there :)



[h2]Thermal storage[/h2]
We had lots of requests to store steam in storage tanks, and we always said no :) One of the reasons was that we wanted to do this properly even though that’s more work for us. So we are adding a new building – thermal storage. It contains molten salt, which gets heated by incoming steam which gets discharged in the form of depleted steam. Its internal heat can then be used to convert incoming water back into steam. So it is essentially a thermal battery. We didn’t introduce continuous heat loss but we added a one-time conversion loss when charging heat. It also comes with a cool animation of the hot/cold tanks moving up/down based on the heat stored.



[h2]Surplus consumer / producer[/h2]
When observing some of the backup solutions players created, we noticed that there is an important concept we were missing, which is something we call a surplus consumer / producer system. It allows marking an electricity consumer as a “surplus consumer”. At that point, that consumer will only consume power from producers that are marked as “surplus producers” which typically are solar panels (by default). This means that you can, for instance, synthesize hydrogen in cases you have an abundance of solar power. Also, surplus consumers do not complain about low power.



[h2]Large diesel generator[/h2]
Having an array of diesel generators as backup is a good idea. But with energy demands continuously growing, the starting generator was not enough. So we are adding a large generator that produces 6 times more power and provides you with savings on maintenance, workforce, the space occupied, plus an option to filter its exhaust.



Nuclear energy


With electricity changes covered, we can now dive into new nuclear energy chains. We cover nuclear in a separate section because it is beefy.

When working on this we have spent several days buried in presentations, articles, and lectures on nuclear energy, fast breeder reactors, MOX reactors, and waste reprocessing. What we came up with is based on real science, but it is simplified in order to be playable. Some of these technologies were tested in lab environments but never used on a commercial level. So we are a little bit improvising here.

[h2]Nuclear reactor T1[/h2]
We have a reactor in the game already, and we didn’t change much except the entire model got reworked :) But the recipe stayed the same. It still converts uranium fuel to spent fuel. The reactor used to generate 15 MW, but we bumped up steam density by 50% (mentioned in the previous chapter), which raised it to 22.5MW and then we inflated power production 4 times, so it now generates 90 MW.



[h2]Nuclear reactor T2[/h2]
After some time, you will be able to upgrade to a new reactor - Nuclear reactor II. Besides burning regular fuel it can also burn MOX fuel. It also provides an extra power step which allows it to produce +33% more steam. So this plant can provide you with steam worth 120 MW of electricity. It also comes with automated heat regulation if supplied with computing. However, safety cooling is still strongly recommended.



You might be wondering how to obtain MOX fuel. MOX fuel is a mix of plutonium and uranium. And to obtain plutonium, we added another machine, the nuclear reprocessing facility, which is able to separate plutonium out of spent fuel.



It also extracts reprocessed uranium, which can go back to enrichment, and also fission product which goes back to spent fuel storage. Fission product has a nice benefit; which is that after 120 years, it decays and turns into retired waste. The retired waste can then be sent to a shredder and get converted into recyclables.



However, burning MOX fuel creates Spent MOX fuel which can’t decay on its own as it’s nasty. For that, you will need the next tier of the reactor. So the TL;DR is that this new MOX reactor allows you to cut down significantly on the amount of waste you need to store long-term.

[h2]Fast breeder reactor[/h2]
The final and most advanced reactor you get is a new reactor we call a fast breeder reactor. It is, however, vastly different compared to its early brothers. A fast breeder reactor is the most advanced reactor in the game. In the research, it is actually behind the space rocket.



The fast breeder reactor contains molten fuel dissolved in molten salt so no control rods are involved. It also operates at higher temperatures which means it generates Super-pressure steam (SP) instead of HP steam. SP steam requires an SP turbine, but a single SP turbine generates the same mechanical power as HP and LP turbines combined. So it shouldn’t come as a surprise that this reactor can output steam worth 240 MW of power. Rumors say that this might be enough to power a couple of arc furnaces.

Now comes the complex bit, which is how this reactor fits into the entire uranium chain. Initially, you need to fuel it with highly enriched fuel, and there are several ways to get it.





The reactor consists of two parts – a core and a blanket. The core contains highly enriched fuel which produces heat for your turbines, but it also bombards the surrounding blanket of fuel to enrich it. The process goes as follows:

Core fuel => Spent core fuel
Blanket fuel => Enriched blanket fuel

What you also need is to build a nuclear reprocessing plant to extract fission products out of the spent core fuel and send the good fuel back to the FBR. You also need to build a chemical plant to extract the enriched fuel out of the enriched blanket fuel and refill it with more fuel. So basically, you have FBR that runs the reaction and enriches its own fuel and then surrounding facilities that continuously filter the good and bad stuff and act as a “kidney”.



This means that once this is running you can skip the enrichment phase. And secondly, you can burn & use some of the nasty stuff such as Spent MOX and Plutonium.

[h2]Depleted uranium[/h2]
This all comes with another addition which is depleted uranium. Before Update 1, the enrichment plant provides enriched uranium, and we conveniently ignored the fact that there are tons of depleted uranium that comes with it. Now it’s there. The main benefit is that it provides more motivation to create advanced reactors. Because depleted uranium can be mixed into MOX fuel. But what is even better is that it can be used in an FBR reactor to be enriched into usable fuel. We have also added the option to dump depleted uranium onto the terrain (this also happens in real life!).



[h2]Another benefit of SP steam[/h2]
Another benefit of superheated steam is that we added a new recipe that allows the creation of hydrogen from water more cheaply than via an electrolyzer. In practice, this is called the Sulfur-Iodine cycle.



And this is the new nuclear chain! It took 5 days after the launch of Captain of Industry for someone to launch a rocket, we are now wondering how many days will it take before someone has a functional FBR. Let us know when you do!

Storages & belts power consumption


What bothered us for some time was that storage units were outperforming transports on efficiency and throughput.

To close that gap, we have reduced the throughput of storage units, but more importantly, anytime a loose or unit storage accepts products via ports, it also consumes power in the same way as belts do. But we actually made this a bit more fine-grained for each game difficulty.

Sailor (easy): Belts & storage units will not consume any power.

Captain (balanced): Belts & storage units consume power with the highest priority, but if there is no power, they still work (this was always the case for belts).

Admiral (hard): Belts & storage units will always consume power and will not work without it. But you can change the consumption priorities.

Another change is that if storages get chained together, they will now automatically unregister from truck deliveries where needed. This improves logistics performance and makes things a bit more obvious.

Vertical pipes


Speaking of transports, in the previous post we sneaked in a screenshot of one massive change: vertical pipes! :) It took some time for folks on Discord to notice it, but they did! Congratulations! Anyway, now it is official. Old blueprints will still work should your heart desire a good vintage curly pipe.



This was actually not a simple change because our transport construction and rendering system relied on non-verticality. Pipes with 90 degree corners are also tricky to texture as the “top” of the texture can move to a different side after a sequence of 90-degree turns. We have solved this by cutting such transports to multiple segments and connecting them via a ring that allows texture to snap back to the correct orientation.

We have also leveraged instanced rendering. To make it even more effective, similar transport pieces were grouped and rendered together by applying various transformations. This resulted in transport rendering being approx. 3 times faster. Huge thanks to Captain Jeremy for making this happen!

New content


[h2]Electrolyzers[/h2]
Our electrolyzer was one of the first models we had, and it was asking for a revamp as it was looking a bit sci-fi. So we did that, and whilst at it, we also introduced tier II.



[h2]Mixers[/h2]
Our Mixer couldn't keep up with large factories, so we added tier II. And since we wanted to have it as an in-place upgrade we revamped the original model as well.



[h2]Large crusher[/h2]
To make crushing ores a bit more exciting we have added a large crusher. It takes approximately 4 times more resources but comes with a 6 times larger throughput. This should help with getting all that sand and crushed ores!



[h2]Captain office[/h2]
Our current office is a bit of a palace that can’t come early and is costly, so we relabeled it as Captain Office II. Which made space for a new Captain office I, which is a bit more humble. This office comes much earlier in the game and is cheaper. So it provides blueprints earlier than before. Captain Office II is still needed to run any edicts that are tier 2+ and also provides a passive boost on quick trading volumes.



Changes in production chains


[h2]Sand[/h2]
Silicon production now requires sand instead of quartz. Sand is no longer made by crushing rock but by crushing quartz instead. This simplifies things a bit and removes the initial dependency of Electronics 2 on quartz mines.

[h2]Gold[/h2]
Gold ore now yields half the gold and comes with increased crushing costs. You might need the large crusher here.

[h2]Changes in computing, maintenance III, research[/h2]
There was plenty of feedback on microchip production being tricky by having a dependency on computing. The biggest issue here is that maintenance III requires microchips to provide computing which is required to produce microchips. To break this loop and make initial production less stressful, we added a new type of building - a Mainframe computer.



The mainframe computer has the advantage that it does not require microchips to provide computing. However, it has super high power demands.

Another issue we have been noticing is that players got trapped in robotic assemblers being expensive on maintenance, especially maintenance III. This was initially the intention as these assemblers were supposed to produce end-game stuff and push the demands up, but it didn't combine well with the fact that they also provide upgraded recipes, so they turned out to be a trap. We made several changes to balance this besides reducing maintenance costs for the robotic assemblers.

The first one is that we made Electronics II cheaper to make. This makes Electronics III transitively cheaper as well. We also densified data-centers. So a single server rack now costs 40 servers instead of 20 but provides twice more computing. But we kept the same maintenance III requirements for the entire datacenter, which reduced maintenance costs for computing. Before, just maintaining a datacenter required 1/4th of its computing, now it is 1/8th.

All these changes allowed us to reshuffle the research tree. Electronics II now comes earlier because it does not require quartz and is cheaper to make. So Research lab equipment III now requires Electronics II. Construction parts IV also come earlier together with Maintenance II, and both are now leveraged sooner. Also an added benefit is that solar panels now come earlier. This should reduce the steepness of going into Electronics III as things are now spread a bit more.



[h2]Desalination balancing[/h2]
Reduced desalination cost by 15%.
Almost doubled the throughput of a thermal desalination plant

[h2]Contracts[/h2]
Some contracts were removed, some added and some rebalanced, either due to changes in recipe costs or just to balance them out. They say a picture is worth a thousand words, so here is a screenshot of the new contracts screen.



[h2]Recycling plant changes[/h2]
The recycling plant used to come with dedicated output ports for each recycled output. This was way too limiting if we or modders need to add new recyclable outputs. So we changed the plant to have just a single output port. This means that the final sorting has to be done via sorters - they are finally useful! :)



Quality of life features


Besides features work, we have also focused on several quality-of-life improvements.

[h2]Combined designation[/h2]
We are introducing a new type of designation, we call it leveling designation. It facilitates mining and dumping at the same time, based on the current state of the surface. This should make building ramps and flattening terrain easier than before.



This designation is still considered to be experimental. We locked it behind a research node, and we will be evaluating how well it does and if there is a chance it could even replace the standalone mining and dumping designations.

[h2]Vehicle replacement / upgrade[/h2]
You will be able to replace a vehicle with any other vehicle directly from its UI. This should streamline your vehicle fleet upgrades. Once the replacement is requested and built in a nearby vehicle depot, the vehicle will go there to be replaced.



[h2]Blueprints improvements[/h2]
Blueprints now automatically downgrade their locked items on placement. This is mainly done to allow building blueprints with higher tiers of transports. This is just a best effort feature, we can’t always guarantee that each downgrade makes sense. Also, each locked blueprint now also lists what items are missing / needed to be researched.

[h2]New dashboards[/h2]
We are also adding new dashboards that provide a breakdown of the consumption and production of electricity, computing, workers, and maintenance.



Other improvements

[h2]Research locks[/h2]
We also added a feature that allows us to lock research nodes with production goals. For instance, you can’t build advanced reactors until you get experience with the basic ones.



[h2]Vehicle jobs scheduling[/h2]
Another change we made is in how we schedule cargo delivery jobs for vehicles. What we used to do is that when a vehicle got free it asked for a job. At that point, we would search through all the buffers to find a job. This was completely rewritten so that now a vehicle just registers for a new job and waits for a result. This way, we can group requests and resolve them at once.

There are two significant benefits of this new system. The first one is performance. The theoretical limit of how many jobs we can schedule increased a lot because the duration required to find a job for one truck or several of them is almost the same. The reason is that the most expensive part is to go through all the buffers in the game and build the caches, the final search is relatively cheap. And the second most visible benefit is that if there are multiple trucks that are idle we always assign a job to the truck that is the closest.

Graphics


As mentioned in our previous posts, we also worked hard on graphical improvements.

[h2]Dynamic skybox & fog[/h2]
We implemented a dynamic skybox, so there are now clouds that appear and disappear based on the weather. We also added fog which is also dynamically affected by the weather. And since our horizon looks much better now, and rendering performance is relatively good overall, we have allowed even steeper camera tilt.



[h2]Forward rendering[/h2]
As we promised several posts ago, we have ditched deferred rendering. Unity’s implementation just did not cut it, and the forward rendering looks absolutely great. It comes with MSAA anti-aliasing which you can control from settings.



[h2]Loose Product Textures
[/h2]We’ve also revisited the textures for various loose products.



[h2]Terrain[/h2]
Terrain has improved a lot. First, we have created new textures for nearly all terrain materials and they look gorgeous! The terrain now uses tri-planar rendering, making textures on steep walls nice and crisp (see CD#35 for more details).

Next, you will notice new beautiful trees that come in two variants: fir and spruce. They not only look better but also use less triangles, our artist Mira really outdid themselves on these! This allowed us to place more trees on maps for more realistic forest coverage without hurting performance.

Finally, the terrain is covered with new grass, four kinds of flowers (can you recognize them?), many rocks, and other details. Take a look yourself!



Music

Update 1 will also arrive with extra 30 minutes of new music! The soundtrack DLC on Steam will be automatically updated as well.

Conclusion

This is all we have for you, and we can’t wait to see you all having fun with the new update!

Captain’s diary #35: Terrain revamp & more

Welcome everyone! I am Captain Marek and in today’s Captain’s diary entry we have loads of new information about our upcoming Update 1! First, I will tell you all about our new terrain and ocean. Then, Captain Filip will follow with some new features and improvements.

Just to remind everyone, this post covers changes that are not live yet and will come in the Update 1 which is scheduled to arrive around the end of May.

Terrain representation revamp

As COI evolves over time, technical requirements are changing. Our terrain was originally designed to be dynamically expanding over time. New chunks of land could be unlocked as players explored new territories. However, as you might know, such a feature was never available in the game since we have decided that having all land visible and accessible from the very beginning is better and more exciting. If you ever wondered why the terrain boundary has a non-rectangular shape, this is the legacy reason for it.
Visualization of terrain chunks in the old terrain representation. Notice that the map boundary is not rectangular.

The issue is that a dynamically expanding terrain tech comes with a lot of code complexity underneath. For example, all terrain data must be stored in chunks and accessing terrain data needs to go through a chunk lookup. So many game code and mechanics depend on the terrain and need to be dealing with this complexity. This was causing not only performance issues but also complex code that is harder to optimize.

As we started to work on the map editor we realized that we need to decide whether the complex terrain tech is something that we will just keep as is, or decide to improve it. This was a “now or never” moment because the more terrain is used the less plausible a representation change would be, especially when we talk about a terrain editor that is tightly connected to the terrain. After a thorough investigation of our options, we decided to go ahead with the revamp of the terrain representation as a long-term investment in the future and longevity of COI. From the fantastic results we got, now it sounds like we made the right decision!

[h2]New terrain representation[/h2]
Before describing the new representation, let’s take a look at how the old terrain worked. In order to query a terrain property (like a height), following steps have to be performed:

  1. Look up a terrain chunk corresponding to the [x, y] coordinate (hashtable lookup).
  2. Verify that a chunk exists, if not, report failure.
  3. Compute a local data index from the original coordinate.
  4. Verify that the local index is valid, if not, report failure.
  5. Return requested value from an array at the local index.




This might not sound like a lot, but the devil is in the details. First, there are many operations needed to be performed for the chunk lookup and coordinate conversion. Second, there are many hops to different memory locations. Let me briefly explain why this is a problem.

You might know that a CPU has on-chip caches to speedup memory access. If a requested memory address is not in a cache, the CPU has to wait for the data to arrive from the main memory (RAM), which could take anywhere from 20-200 CPU cycles. This means that accessing less distinct places in memory can speed up the code significantly. In our example, there were around 10-20 different memory locations accessed.

So what is the new terrain representation and how does it solve these issues? Frankly, it’s quite simple. We just made the terrain a rectangle and each terrain property is stored consecutively in one giant array. For example, if a terrain is 200 x 300 tiles, the height data is stored in an array of 60000 elements. The lookup is quite simple:

  1. Compute an index from the [x, y] coordinate (two arithmetic operations).
  2. Verify that the index is valid, if not, report failure.
  3. Return requested value from an array at the index.




This optimization resulted in 2-10x faster terrain access! You may also ask, how many memory locations are accessed using the new approach? Two! The length of the array (for index verification) and the value itself. A huge improvement and the access code has just three lines! This might sound like an obvious way to store terrain data but keep in mind that this approach does not work if the terrain is not a rectangle and can expand in any direction.

Another benefit of the new rectangular terrain is that there are no surprising boundaries of a map that players need to worry about.

[h2]Terrain materials improvements[/h2]
We haven’t changed only the terrain data representation. Another significant change is how terrain materials are represented. Before, each tile on the terrain had two states: normal and disrupted. For example, dirt was a disrupted state of grass. Excavators left disrupted rock and ores after mining.
Example of disrupted grass into dirt and iron ore into smaller rocks in a mine.

The first issue was that the disrupted state was just a visual distinction, the two states had the same properties such as collapse angles. This for example meant that a mined rock could be dumped as steep of a pile as the mountain it came from. Or that too steep mountains started collapsing all over the place after the first dig of an excavator.

The second issue was that the disrupted state was not set per material layer but per entire tile, affecting all material layers. This meant that if for example a dirt fell on a tile with a rock and then fell elsewhere, the uncovered rock below was suddenly disrupted as well. This was especially an issue when materials were falling down from cliffs, leaving disrupted “trails”.
A trail of disrupted rock left on a mountain side caused by dirt falling over it.

To improve on this, normal and disrupted materials are now represented as separate layers. This solved all of the above problems: normal and disrupted materials can have different parameters, falling material won't leave “disrupted trails”. And as a bonus, transitions between disrupted and non-disrupted states can be non-symmetrical. For example, compost now turns into lush grass, but lush grass turns into normal dirt when vehicles go over it.

The disadvantage of the new approach is that the number of layers on terrain is higher and operations are more complex. For example, a vehicle going over grass was previously just incrementing the disruption amount on each tile it touched while traveling. Now it has to do more complex layers conversions.

Fortunately, thanks to the new terrain representation and many other optimizations, the new more complex system is even faster than the old one! A test was performed where 127 vehicles drove over grass, disrupting it into dirt in the process. Simulation time per tick went from 1.4 ms to 0.8 ms, nearly 2x faster! Sand falling from the truck no longer disrupts the rock wall underneath! You can also see the new rock texture!

[h2]Terrain physics improvements[/h2]
Apart from speedup thanks to the terrain representation, we have improved terrain physics to fall in a more natural way. Before, terrain was only allowed to fall in 4 directions aligned with the X and Y axes. This meant that terrain was preferably forming pyramid shapes when collapsing. This did not look great especially when the new stacker was dumping material.

We have improved this to use an 8-direction neighborhood when simulating terrain collapse. This is more expensive but produces much more natural circular patterns as you would expect.

Regarding performance, this is another success story. Despite more complex computations due to the 8-way neighborhood, terrain physics got 4x faster! To prevent lags, we had a limit of a maximum of 250 processed tiles per simulation tick so we increased it 4x to 1000 tiles per tick so that the maximum per-tick time budget is the same. This made large landslides so much more exciting!
A comparison between old 4-way (left) and new 8-way (right) terrain physics. Notice that the old pile has a pyramid shape.

Another improvement to terrain physics is a special treatment for thin material layers. We noticed that materials that collapse easily (such as sand or waste) slide down steep slopes way too easily, like on a water slide. This didn’t look realistic. We have improved this by biasing the layer collapse angle based on its thickness.
A trash being dumped over a cliff. Notice that on the old version it was sliding all the way down (left) but in the new version (right) a small amount is scattered on the cliff wall.

[h2]Terrain rendering optimizations[/h2]
Terrain rendering was also significantly optimized not only yielding more FPS but also saving a lot of memory! Terrain is still rendered in chunks but thanks to the fixed terrain size we were able to do a lot more optimizations.

The biggest optimization was to completely eliminate meshes representing the terrain surface. Before, each chunk had a mesh with a grid of triangles. The issue is that a mesh requires a lot of memory and is expensive to update. Instead of meshes, we save all terrain properties such as height or material type to one large texture and all the fancy vertex displacement and coloring is done on GPU.

We also implemented dynamic level of details (LOD) so that further terrain is rendered using lower resolution meshes.
Comparison of rendered terrain chunks before (left) and after LOD (right) optimization. Chunks further away from the camera are larger but have the same amount of vertices, reducing load on the GPU that has to process less vertices in total.

Finally, we use GPU instancing (discussed in CD#15, CD#29. and CD#31) so that the entire terrain including all LOD variants is rendered in a single draw-call, eliminating most of the GPU communication overhead.

To test the performance we created a gigantic map as a grid of 5 x 5 New Haven maps next to each other (area of approx 50 million tiles, or 200 km^2, or 124 mi^2).

The results speak for themselves: 9x faster rendering and 4x less memory consumed (8x less GPU dedicated memory).


[h2]New terrain size limits[/h2]
Until now the primary limitation of the terrain size was performance. As we saw in the previous benchmark, maps beyond a few million tiles squared were unplayable. Now that the performance is longer the limiting factor, how large can maps be?

Turns out that Unity won’t allow us to allocate larger arrays than 2 GB of data. This means that we had to put a cap on the maximum terrain area of 65 million tiles, that’s 262 km^2 or 163 mi^2, roughly the size of the Cayman Islands. For comparison, our largest map is currently the Insula Mortis with an area of nearly 4 million tiles.

We won’t be releasing such large maps yet since there might be other issues like pathfinding, but the potential is there!

Given the max terrain size, we have done another interesting optimization. We have reduced the size of all integer coordinates from 4 bytes to 2 bytes. This saves 50% of memory for all coordinates in memory, neat!
Array of 25 New havens used for terrain rendering performance testing. This map has an area of approximately 50 million tiles, or 200 km^2, or 124 mi^2.

[h2]Improved terrain visuals[/h2]
We are also working on a new terrain look and feel, including new textures and various props. This is still in progress so we cannot show you the final result but we have some cool things to show you.

As mentioned in CD#32, we have improved terrain rendering to handle 255 different textures, up from just 24! That’s a huge improvement and allows us to have unique textures for all dumpable products and still leave plenty of room for more new materials in the future as well as for mods.

We have also implemented what’s called “triplanar texture mapping”, significantly improving the quality of textures on the terrain, reducing stretched textures on steeper slopes. As the name suggests, this technique maps the textures from 3 different directions, depending on the normal of the terrain.
Comparison of old “top-down” texture mapping and new “triplanar” texture mapping on a limestone mountain.

We are also considering having “weathered” texture variants for rocks to distinguish between freshly mined surfaces and old weathered rock faces.

[h2]Terrain revamp conclusion[/h2]
This terrain representation change and all the improvements and optimizations were a massive undertaking. We could not possibly cover all the details and improvements that went into it but the results speak for themselves.

Unfortunately, due to the time investment that went into this, we have to postpone the terrain editor for the Update 2. We know that many of you were eagerly waiting for the terrain editor and it is still coming, but unfortunately not just yet. Sorry!

Ocean improvements

Ocean representation was improved in a similar manner to the terrain and it is now much more efficient to simulate and render, including LODs based on the camera distance.

However, the most exciting news is that we have also completely rewritten the ocean surface waves that are now simulated in realtime! Ocean is now composed of thousands of sine waves, making it look much more realistic and the waves even change based on the weather.

I won’t go too much into details of how this was done, but just to mention some key points, we use inverse fast-fourier transform (IFFT) to efficiently compute a sum of thousands of sine waves. This is done using compute shaders on the GPU. We compute 3D displacement as well as a jacobian (derivatives with respect to x, y, z) and then mix two scales of the waves into one ocean surface. If you’d like to learn more about how it’s done, here is a fantastic video called Ocean waves simulation with Fast Fourier transform detailing the motivations and all the steps.

Here are short animated gifs showing old and new ocean surface. Can you tell the difference? :)
Old ocean (any weather).

New ocean during sunny weather.

New ocean during heavy rain.

Changes in landfill

In the new version, there will be a pollution penalty for dumping waste on terrain. Freshly dumped waste will turn into “settled waste” over a few game years and during that process, it will emit pollution. This is possible due to the changes in the terrain that we mentioned above, as we are now able to track waste conversion without any performance penalty.

Another change we are doing for Update 1 is that we will no longer allow building structures directly on waste to provide you with better immersion. Also, it was heartbreaking having to watch some of you building settlements on top of a landfill :)

However, we are obsessed with waste, so we couldn’t just stop there. We know that solid burners were not the most elegant solution to the waste problem. And so we are introducing an incineration plant. The incineration plant burns large volumes of waste and produces steam to run your power plant. That’s a win-win as long as you are so heartless about burning someone’s thrown-away teddy bear for power.


You might say, that waste got enough attention and we should move to another topic. Not yet. We are adding a waste compactor for better compression and transportation. None of you ever asked for it, but we still delivered and that’s called exceeding expectations all the way! The compactor will be able to also press recyclables and individual scrap products.


But for action, there must be a reaction. And for a compactor, there must be a shredder. That’s not something we made up, these are laws of physics. And so due to that, we had to add a shredder as well. The shredder is used to shred stuff that the compactor compacted. And you might think we are going crazy at this point, but the shredder will play its role in providing some new recipes. Such as the production of wood chips or handling late-game retired radioactive waste. That will be covered in our next blog post, in which we dive more into changes in power production.


Mixed products cargo

Some of you might remember that mining trucks were often driving with low volumes of cargo. This was especially noticeable for large haul trucks. This was something that puzzled us for some time. Initially, we tried a few tricks, such as that trucks will hang around the excavators until some excavator needs them again. That was usable only if there were plenty of trucks which was usually not the case. It also introduced an entirely new set of issues, such as that trucks were hanging around for too long.

We ultimately arrived at a solution known as mixed cargo, which involves excavators loading multiple products simultaneously, resulting in faster mining. Mining trucks have also been modified to carry multiple products at once. As a result, we have observed a significant increase in the speed of mining operations. However, it's important to note that mixed cargo is currently only supported during the mining process.


You may be curious about how we handle mixed cargo once it's in the trucks. We had two options: introduce a sorting facility or have the trucks sort the cargo themselves by delivering it to individual silos. While some may prefer the immersive experience of a sorting facility, we ultimately decided to have the trucks handle the sorting automatically. This is because introducing a new sorting facility concept in the early game could overwhelm new players. Another option was to enable mixed mining later on through a toggle, but that seemed needlessly complex. Of course, it's also possible that we're just saying all of this to cover up the fact that we spent our entire budget on the waste compactor!


Trees planting & harvesting

One of the big features many of you are looking forward to is tree planting. We had this idea planted in our head and roadmap for some time but it really required some planning and preparations before we could make it happen.

We have put a lot of effort into making sure that planting & harvesting works in an automated fashion. And we also wanted to make sure we can keep using our tree harvester. It all came together and we are introducing a forestry tower. The forestry tower allows you to place and manage planting designations. We are adding a new vehicle - a tree planter that will plant tree saplings across designations managed by your forestry towers. Once trees grow enough, an assigned tree harvester will automatically chop them down. The tree planter will then plant new trees at free spots and the cycle repeats again. You can also select at what percentage of growth you want the trees to be cut. Tree saplings can be obtained by growing them on your regular farm.


Trees can be also placed manually to provide you with decoration options.


We have also removed the lumber mill from the world map that served as an infinite source of wood. As we mentioned initially, it was just a temporary remedy until we provide trees planting feature.

Another change related to trees is that we have solved the issue of trees traveling up & down with terrain becoming inaccessible. Now they just fall down and disappear.


Also, to compensate for the fact that you now need to grow saplings and block some area for forests, we made all the food in the game to be +20% more nutritious, meaning that you need 20% less farm space.

Also, we are adding a new recipe to shred wood into wood chips which can go directly to a boiler or into paper production, where paper will go to research.

Conclusion

We hope that some of the stuff arriving in the Update 1 caught your eye! Please keep in mind that this is just a smaller portion of the changes that are coming in the Update 1. We will try to squeeze in one more blog post before we go live with the update.

Patch notes for v0.4.14b

* Captain of Industry is now available on GeForce NOW.
* Fixed transport pillars placement that sometimes blocked other buildings during copy/paste and blueprint build operations.