Stationeers News & Announcements
This hotfix fixes a save-load failure caused by orphaned items, adds missing logic types for new gas and liquid variants, and corrects a combustion error where complex fuel and oxidizer mixtures would only partially combust.
If you are happy with our development, please consider supporting us by purchasing a DLC.

Your support makes our updates possible


https://store.steampowered.com/app/3196220/Stationeers_Supporters_Marine_Bobblehead/

New Gases & Liquids
This update adds eight new gases and liquids to the game, each with unique properties, phase behaviour, and uses. Volatiles has also been renamed to Methane to better reflect what it actually is. Stationpedia has also received an update to help convey the new gasses, and all their properties as much as possible.



Fuels & Oxidisers
Hydrazine is a monopropellant fuel that requires no oxidiser to combust, only a heat source or a spark. It is a stable liquid at room temperature and human livable pressures, but leaving free standing pools of it laying around likely isnt safe. Due to it reacting with itself, you can always ensure complete combustion once initiated.

Hydrogen is the most efficient fuel by weight, and combustion temperature, for rocketry. When combusted with Oxygen it burns cleanly into Water(Steam), making it a natural fit for bases running hydroponics or electrolysers. Liquid Hydrogen is also available.

Liquid Alcohol is a versatile room-temperature liquid only fuel that can be produced using the new Fermenter. It will irreversibly evaporate into Methane, so be sure to maintain its temperature and pressure properly to keep its form.

Ozone is a highly energetic oxidiser. Like Nitrous Oxide it will create faster combustion, compared to oxygen, when burned with a fuel. It is liquefiable and has a broader liquid range and lower latent heat making it easier to work with compared to NoS.

Coolant & Heat Storage
Silanol is the premium refrigerant for phase-change heat pumping. It has an extremely high heat capacity and a wide liquid range, making it more capable than Pollutant as a working fluid. Liquid Silanol is also available.

Liquid Sodium Chloride remains in liquid form at extremely high temperatures, making it an excellent medium for storing heat energy. At room temperature it exists as a solid. Sodium has no gas form and will decompose into Pollutant if heated too high, or if exposed to too low of pressures. It is best processed in a hot furnace, and tapped off via the liquid connection, to prevent 'low' temperature salts from freezing in pipes.

Inert
Helium is a fully inert gas. It will neither freeze nor condense into liquid, making it a useful working gas in atmospherics systems where phase-change needs to be avoided.

Hazardous
Hydrochloric Acid is a highly toxic gas that is liquid at room temperature and pressure. It has been added to the global atmosphere of Venus.

Ice prefabs and gas filters have been added for all new substances. A small amount of Hydrogen has also been added to Vulcan's global atmosphere, and to volatile ice ore.


Combustion Overhaul
Combustion has been fully refactored to be data driven. This allows each fuel and oxidiser to have its own unique reactions, rather than all combustion following a single shared model. The H2 Combustor has been updated to use the standard combustion code, with output products depending on the input gas mix. This means producing your own water is now different, and you'll want to look at all the combustion methods to find the best source of water for your world and setup.



To help make sense of the new chemistry, the Stationpedia gas pages now include a Combustion Info Panel. This shows the input ratios, auto-ignition temperature, and output products for any gas that will combust with the one you are currently viewing.


Fermenter
The new Fermenter converts plants into Alcohol. Different plants give different yields, so it is worth considering what you grow if Alcohol production is a priority. Sugar Cane, Corn, and Switch Grass are among the higher-yielding options. Seeds can also be fermented directly, and even decayed food will produce a small amount rather than going to waste.

The fermentation process produces a small amount of Polluted Water as a byproduct, which feeds naturally back into a hydroponics loop.


Ore Detector
The Ore Detector is a new handheld tool that replaces the basic Cartridge Ore Scanner, which has been deprecated. It has been added directly to the Mining Supplies box.




Liquid Filtration
The Liquid Filtration Machine is now available. It works similarly to the standard filtration machine but can handle liquids as well as gases.




Getting the New Gases
All of the new gases and liquids are available through traders and space mining, so you have options for how you source them depending on where you are in a run. These new gasses will open lots of gameplay possibilities, and we're eager to get feedback on if your happy with how you can use them, if you can get them easily enough, and in high enough quantities.

Traders
The Gas Trader has been expanded significantly to accommodate the new gases. World-specific bulk gas purchases now accept gas at or near the temperature of the world atmosphere. On Vulcan, for example, the Gas Trader will now buy Methane and Hydrogen at up to 140 degrees C. Buy prices have been adjusted to reflect this.

Helium, Hydrogen, Silanol, and Ozone have been added to Medium and Large Gas Trader sells. Hydrochloric Acid has been added to the Bulk Dirty Volatiles sell. Liquid Hydrogen, Liquid Hydrazine, Liquid Ozone, and Liquid Hydrochloric Acid are now available from the Liquid Trader. Salt has been added to the Ore Trader's selling items, and a Bulk Carbon Dioxide buy has been added for Mars.

Large Traders now carry more bulk goods, with the bulk multiplier raised from 1.5x to 2x.

Space Mining
The new gases have also been added to the space map as mineable gas cloud nodes, giving you a way to source them directly once you have a rocket up and running. Some minor tweaks have happened across all the planets' maps, as we tried to integrate the gasses, while still maintaining the purpose and lore of existing sites. The space map widgets have been update slightly to allow for better readability of sites with multiple ices/gasses.



Change Log 0.2.6217.27046

  • Fixed Fermenter was accumulating its processing power every server tick rather than assigning it. (it should have only been using 200W per tick).
  • Added Support in code for filters that only filter liquids.
  • Fixed new filter prefabs had multiple gases set in there FilterType field. This was not supported by the filtration code.
  • Reverted Change that caused Alcohol and Liquid sodiumchloride to create extra moles when decomposing into Methane/Pollutants. The engergy differential between the input and product's heat capacity is now handled such that temperature remains the same (minus any energy loss due to latent heat)
  • Hooked up new combustion code to Atmosphere variables that drive flame particles.
  • Fixed an issue in GasMixture.Combust where some variables were not getting cached, which caused mixes with multiple fuels/oxidisers to burn slower.
  • Renamed some combustion functions to improve clarity of function intent.
  • Reduced the brightness and intensity of particles from small atmospheric fires.
  • Added new sites to space map nodes for new gases
  • Added authored fermentation values to plant data
  • Fixed an Audio bug where sounds with delay would not fade in and would not play at all.
  • Added Sounds to Fermenter.
  • Changed Fermenter atmos tick behaviour to use an internal atmosphere as a temporary working atmosphere for depositing created alcohol, Calling an atmosphericEvent instance on the pipe network would cause connected devices to error for one atmos tick when alcohol was deposited which was desired.
  • Fixed Fermenter was not serializing logic pin values.
  • Fixed Fermenter was not synchronising logic pin values to clients.
  • Fixed several issues with the Fermenter script and prefab.
  • Fixed Scene issue.
  • Reduced Alcohol SpecificHeat from 63 to 33.
  • Reduced Alcohol Latent Heat from 18,000 to 2,000.
  • Increased Alcohol Enthalpy from 468,000 to 566,000.
  • Increased Sodiumchloride Latent heat from 1,000 to 16,000.
  • Changed 1 Alcohol mole now decomposes into 1.6 Methane moles.
  • Changed 1 Sodiumchloride mole now decomposes into 5.2 Pollutant moles.
  • Added filters for all the new gases and updated the materials.
  • Fixed welding torch considered itself empty if there was no methane in its gas mixture.
  • Added HydrochloricAcid, Silanol and Hydrazine gas are now toxic for humans, zrillians and plants.
  • Tweaked behaviour that prevents salt from smelting in ice-crusher to prevent un-intended behaviour for other spaceIce.
  • Fixed Rocket UI will now list hypergolics in its fuel/oxidizer count. A hyper golic fuel will present as both a fuel and an oxidizer i.e 100 mols of hydrazine will appear as 50fuel/50oxidizer.
  • Added Breathing helium will increase pitch of vocal efforts.
  • Added Fermenter Device for turning plants into alcohol.
  • Fixed Items with the HideInStationpedia flag would appear in the Used-In stationpedia widget.
  • Added gas description for helium.
  • Fixed some errors in gas descriptions.
  • Changed Atmosphere Volume backing value for network write from uint16 to uint32. Now Large tanks can form pipe networks its very easy to exceed the old 65535Litre range.
  • Fixed Chat panel would pop up when entering in logic values in the rocket panel.
  • Fixed CombustionResult could throw an exception when an invalid mole was parsed in. This is now handled.
  • Balance Pass on new fuels in rockets.
  • Increased Hydrazine and Alcohol enthalpy values.
  • Increased Molar Mass of Water and Polluted water.
  • Changed Salt will no longer melt in a cold furnace, arc furnace or ice crusher. It requires a furnace heated above its melt Temperature or a suitably hot atmosphere tile. Stationpedia description has been updated to reflect this.
  • Changed World specific bulk gas purchases from the gas trader now accept the gas at or near the temperature of the world atmosphere. Buy prices have been reduced to reflect this change.
  • Added Bulk CarbonDioxide buy for Mars for Gas Trader.
  • Changed Large traders will now buy and sell more bulk items: Increased the bulk multiplier of the large traders from 1.5x to 2x.
  • Increased the amount of Methane and Oxygen sold by gas trader.
  • Added Salt to OreTrader selling items.
  • Added Helium, Hydrogen, Silanol and Ozone gas to Medium and Large Gas trader sells.
  • Added HydrochloricAcid to GasTrader "Bulk Dirty Volatiles" Gas sell.
  • Added Liquid Hydrogen, Liquid Hydrazine, Liquid Ozone and Liquid HydrochloricAcid to Liquid Trader sells.
  • Fixed Combustor was throwing errors during operation. This is because the Combustor script was incorrectly inheriting from the ElectrolysisMachine Script and some fixes to electrolyser broke behaviour on combustor.
  • Fixed issue with colliders for the OreDetector and prevented the Ore icon showing up as it gets spawned.
  • Re-enabled Liquid Filtration machine.
  • Balance on throughput values for liquid filtration machine.
  • Added ItemOreDetector to MiningSupplies box.
  • Fixed Electrolyser was outputing hydrogen and oxygen at the wrong ratio (beta only).
  • Changed removed internal atmosphere from electrolyser, the created gas now goes directly into the output pipe.
  • Fixed Alcohol, SodiumChloride, Silanol and HydrochloricAcid had incorrect values set for their ice prefab hashes. This would cause an exception on the atmospherics thread when these gases froze.
  • Added a small amount of Hydrogen to the global Atmosphere of Vulcan.
  • Added Hydrochloric Acid to the global atmosphere of Venus.
  • Fixed an issue where adding helium to the GlobalGasMix would cause exceptions in the planetary Simulation phase change code.
  • Fixed Localization error for Combustor name.
  • Tweaked Burn rate of Combustor.
  • Fixed Solid Fuel recipe not working (it now requires Methane Gas).
  • Deprecated CartridgeOreScanner in favour of the new OreDetector device.
  • Added new OreDetector tool.
  • Fixed a localisation parsing issue where the new gasses would break non-english languages.
  • Added New Gasses and Liquids: Hydrazine/LiquidHydrazine (monopropellant fuel, does not require an oxidiser), Helium (gas only, does not liquify or freeze, does not react with any other gases), Liquid Sodium Chloride (liquid salt only exists at high temperatures 300C+), Liquid Alcohol (room temperature liquid fuel, decomposes into methane), Hydrogen/Liquid Hydrogen (combusts into pure water when reacting with oxygen, high performance rocket fuel), Silanol/Liquid Silanol (synthetic compound for phase-change cooling/heating), Ozone/Liquid Ozone (highly energetic oxidiser), HydrochloricAcid/LiquidHydrochloricAcid (highly toxic pollutant).
  • Changed Volatiles has been renamed to Methane.
  • Refactored combustion to be fully data driven. This is to allow for unique reactions between the new fuels and oxidisers.
  • Added Combustion info panel to stationpedia gas page. This shows the input ratios, autoignition temperature and output result of any gases that will combust with the currently viewed gas.
  • Added Ice prefabs for new gasses.
  • Changed H2 combustor to run standard combustion code. The resultant products will depend on the input gas mix.
  • Added a small amount of hydrogen to volatile ice ore.
  • Updated all Gas icons.
  • Fixed Smart Rotate variables were set incorrectly on new tanks. The automated system did not apply the correct value, so they have been entered manually.
  • Fixed New Tanks were not renamable with labeller.
  • Fixed Logic device IC pin colliders were incorrectly ordered on Combustion Deep miner (such that pin0 was setting d1).
  • Fixed IC10 chip when placed in combustion deep miner is incorrectly sized.
  • Fixed rocket crew umbilical creating multiple door prefabs on load. Now it will skip creation if it's grabbed an existing one on load.
  • Fixed getting out of crew module would spawn player inside crew module and destroy suit.
  • Changed CombustionCentrifuge over to using anim components for basic animations.
  • Fixed IC10 slot in CombustionCentrifuge was not interactable.
This hotfix addresses several non-critical issues with the Combustion Centrifuge, including interaction and visual scaling problems, corrects logic pin ordering on the Combustion Deep Miner, restores a missing material, and fixes minor configuration issues with the new tanks, including renaming via labeller and incorrect Smart Rotate values.

Change Log

  • Changed CombustionCentrifuge over to using anim components for basic animations.
  • Fixed IC10 slot in CombustionCentrifuge was not interactable.
  • Fixed IC10 chip when placed in combustion deep miner is incorrectly sized.
  • Fixed Logic device IC pin colliders were incorrectly ordered on Combustion Deep miner (such that pin0 was setting d1).
  • Fixed New Tanks were not renamable with labeller.
  • Fixed missing material on Combustion Centrifuge.
  • Fixed Smart Rotate variables were set incorrectly on new tanks. The automated system did not apply the correct value, so they have been entered manually.
If you are happy with our development, please consider supporting us by purchasing a DLC.

Your support makes our updates possible


https://store.steampowered.com/app/3196210/Stationeers_Supporters_Hard_Suit_Bobblehead/


Combustion Deep Miner
Combustion Deep Miners are a faster, higher-tier version of the deep miner that runs on a fuel mix instead of electrical power. They ramp up and down like the combustion centrifuge, rewarding steady operation with significantly higher mining throughput.



The map motherboard now shows information about the composition of each deep mining region. Once you've scanned an area you can click directly on the map and see the exact makeup of the region allowing you to make a detailed plan for your deep mining outposts.




Tanks
New versions of the liquid and gas tanks have been added, and the old ones have been deprecated. These new tanks look and build the same, but they behave like pipes and merge into the connected pipe network. This prevents some gases and liquids from moving slowly or getting stuck, and makes it easier to build clean, direct atmospherics setups.

In existing saves, you’ll need to deconstruct and rebuild your tanks if you want the new versions




Performance & Optimization
Room Generation
Room generation has been rewritten because the old system would become extremely slow when even just a few players were mining at the same time triggering hundreds of room generation tasks to all queue up. In those situations, the server tick could get blocked, slowing the game down for everyone connected; this has now been fixed, and the new system is magnitudes faster (often around 100x in testing).

Memory Leaks
Several memory leaks have been fixed, including a major issue in terrain where meshes were not being freed correctly over time. This was resolved by changing mesh usage to correctly use shared meshes, and by moving mesh ownership so it is managed in the correct place.

Thank you JacksonTheMaster for the detailed investigation that led to this fix!


Multiplayer
Multiplayer stability has been improved by fixing a set of connection edge cases that could crash clients or prevent joining, including a wrong-password crash and an IP join failure caused by string formatting. These fixes also address a RakNet cleanup issue that could leak memory when connections failed, making repeated join attempts and unstable connections far more reliable.

Thank you again JacksonTheMaster


Upcoming Changes
Work continues on upcoming features on rockets and atmospherics. The next major update will include a set of new gasses and will be available on Beta in the coming days.

We are careful with our planning, to not get overconfident - so we are reluctant to nail down specific roadmap features unless we are sure we can deliver them to an acceptable quality given our resources. With this caveat said, we can confirm a few things we are looking into for future updates:

  • New Gasses (aiming for next major update)
  • Nuclear Reactors
  • Space Station + World base in same level (in progress)
  • Travel to new world (migration to new world, using rocket)
  • Terraforming DLC (post 1.0, not before)
  • Vehicle improvements (some experimentation already exists in creative)



WIP gas/liquid symbols


Change Log 0.2.6175.26943

  • Added Logarithmic scalar to atmosphere wind vectors with a magnitude of over 4m/s. This helps reduce the amount of erratic movement imparted on the player controller when mining on Venus or other higher pressure worlds.
  • Improved performance of WorldToLargeGridCenter funtion.
  • Removed unused fields on SmallCell including reference to the world grid instance which is accessible globally already.
  • Removed some unused methods on gridsystem which become redundant either from storm changes, or room generation changes.
  • Fixed small grid objects having their meshes disabled when selecting them in the scene when in play mode.
  • Fixed AdvancedTablet was not changing cartridges as a client when clicking next/prev button.
  • Added ability to show players or items on the map motherboard screen. Tweaked the scanner list a little to use reuseable UIElementCollection. Player tracking functionality is commented out for now while we experiment more with how we want to make it available.
  • Fixed issue where attempting to join multiplayer with the wrong password would crash clients.
  • Added another pass on the map motherboard. Can now see region information by clicking on an unveiled point on the map. Added wip player toggle for testing not fully implemented yet.
  • Fixed issues where inputting the correct IP address in multiplayer could still sometimes fail due to not having a null terminated address as well as a memory leak with the RakNet instance where it would not be cleaned up properly when a connection could not be established. Credit to JacksonTheMaster for the detailed information.
  • Fixed memory leak from terrain where meshes were not being freed up. Changed useage of .mesh to .sharedMesh and removed reference to mesh on LodObject so that it can live on the LodMeshRenderer. Credit to JacksonTheMaster for the detailed investigation that led to this fix!
  • Fixed issue where Achievement "Take A Load Off" would only unlock if the player placed a standard suit storage, not a variant.
  • Fixed crew module connector grid offsets were incorrect, causing it to be missaligned with the small grid.
  • Updated crew module build states.
  • Added colliders for crew module screen.
  • Updated crew umbilical and crew module meshes and tweaked umbilical connection distance a little.
  • Updated blueprint for crew module cable connector model A.
  • Fixed devices having their mesh renderers disabled when clicking on them in the scene view while in play mode.
  • Added missing server tags around some imgui calls in the imgui profiler.
  • Added ability to add multiple begin/end blocks to imgui profiler. These will appear as tabs in the main window.
  • Removed some commented out code on wall.cs and removed some unused fields that were exposed in unity editor unnecessarily.
  • Made rocket crew module cable connector pieces snap to the large grid on the horizontal axis to make placement easier.
  • Added missing server tags around imgui in using.
  • Rewrote room generation from scratch. Mining outside was particularly slow and could block the main game tick especially when multiple players are mining at the same time. Should be 100x faster when mining outside in most cases and also much faster when building structures.
  • Fixed Remote Code Execution security issue accessible due to the formatting of ImGui.Text commands.
  • Fixed issue where Chat input would not always be focused when enabled.
  • Added imgui based profiler tool for gametick. Can be toggled with the same command 'debugthreads gametick'. On dedi this will just print the current tick's values once.
  • Fixed Small insulated tanks destroyed states were incorrectly rotated.
  • Added hidden umbilical door prefab. This will be constructed automatically alongside the crew umbilical to block air/create rooms on the large grid.
  • Updated crew module screen prefab with new model.
  • Updated crew module umbilical to correctly extend to the crew module.
  • Added ability to get into rocket crew module from door.
  • Added new crew module structures to english.xml.
  • Fixed rocket crew module not saving correctly - changed crew module save data to inherit from fuselage.
  • Fixed null ref when trying to enter crew module from umbilical with no seat present.
  • Added dispose calls for a few native collections which where causing errors in unity editor.
  • Fixed launch mount calling explode on rockets when quitting game. (This should only effect errors in unity editor).
  • Added another pass on rocket crew module and crew umbilical.
  • RocketNetwork will now cache its crew module when the rocket network changes.
  • Fixed bug in editor where selecting a structure in play mode would disable all its mesh renderers.
  • Updated rocket crew module prefab with slightly taller mesh.
  • Added first pass on cable connector grids to be built in crew module.
  • Changed IsLongStraightVariant flag on cable to BlockMergeWithOtherCables. Cable connector grids will utilise this flag.
  • Added RocketInternalCellType for cable connectors.
  • Updated fuselage blocked grids debug view as it was not working as intended.
  • Fixed issue where the tooltip when hovering over FireExtinguisherStorage or GasMaskStorage while they were full would fail to include the object types in the description.
  • Fixed issue where attempting to interact with a shower as a robot would throw null reference exceptions due to reading a null value for the robot's uniform.
  • Committed missing change meant to go with rev.26873
  • Removed references to GridController.World on every room and instead just use the static instance itself.
  • Removed unused OnRoomStateChanged action in room controller.
  • Fixed the help text for growing plants to more accurately describe the process as plants grow. The previous description was incorrectly describing the fruiting stage as the stage after seeding.
  • Updated the debug colour coding of vein types so that silicon and silver did not share a colour and can now be differentiated when using the mineables command.
  • Changed the plant sampler so that it passively consumes a small amount of power when turned on.
  • Fixed Combustion Deep Miner Sliding panel animation values incorrect caused clipping with device screw.
  • Fixed Vulcan Specific trade data was not being actioned due to incorrect world name in tradeables.xml.
  • Changed Increased the price of world specific bulk gas buys for gas trader.
  • Removed some errant text in tradeables.xml
  • Fixed Networking error with CombustionDeepMiner.
  • Fixed When turning on combustion deep miner while in error state once error was resolved the drill would not move down.
  • Changed Drill animation from a UniTask to run in updates instead.
  • Reduced the volume of the CombustionDeepMiner audio a little.
  • Fixed issue where the SwitchOnOff collider for the Large Fridge would be disabled when it was closed, leading to the fridge being unable to be turned on or off.
  • Added Logic values to Combustion deep miner.
  • Added New version of Gas and Liquid tanks that merge with the connected pipe network. These will replace the existing tanks and are build from the existing tank kits. This allows for several benefits, it means gas/liquids will no longer get "stuck" in tanks. It also means that pumps, valves and other atmospheric devices can be connected directly to tanks.
  • Changed Deprecated all varieties of Small and Large Tanks, they are no longer available to be constructed. Existing tanks will remain in saves and behave in the same way they did before the change.
  • Fixed issue where deconstructing body bags with the angle grinder could cause organs to be moved to the world.
  • Updated Deep miner model for new info panel placement.
  • Added Kit (Combustion Deep Miner) to Autolathe tier2.
  • Changed DeepMiner to have spin up and spin down behaviour.
  • Added Additional info to Deep Miner info-panel tooltip.
  • Added Thumbnails and Blueprint for CombustionDeepMiner.
  • Updated CombustionDeepMiner model.
  • Added 1st pass on Combustion Deep Miner. Similar in style to the combustion centrifuge the combustion deep miner runs on a fuel mix rather than power and can mine much faster once it has spun up to full speed.
  • Added info panel to deep miner showing local ore composition, rpm and progress til next ore.
  • Changed updated Stationpedia descriptions for deep-miner and dirty ore.
  • Changed Jetpack functionality so that the thrust is dependent on the height the player is above both structures and terrain, instead of exclusively based on height above terrain.
  • Fixed respawn points not working.
  • Removed Respawn point kit from Autolathe. Going forward these will be considered for creative use only. Existing respawn points in saves will remain functional.
  • Removed naughtyattributes scoped registry from manifest and committed updated projectmanagersettings asset.
  • Fixed Stationpedia leaving the game on pause when closed via the Stationpedia key while the pause button was active.
  • Fixed bug where ic upload to workshop could get stuck if the game was paused.
  • Added trycatch around upload to stop fatal error if steam is not initialized.
  • Fixed issue where sending messages via the text input dialog would not be sanitized.
  • Removed AnimateUI script from chat windows, and deleted script as it's no longer needed.
  • Removed some unused ui animation scripts on several ui panels with the goal of replacing AnimateUI (which makes heavy use of leantween) with much simpler lerping.
  • Removed several travel and old world selection ui prefabs that were unused or had missing scripts.
  • Removed old tutorial and scenario ui panels which had missing scripts.
  • Removed unused ping system.
  • Fixed issue where ItemKitLargeDirectHeatExchanger was unable to be split into separate stacks by the user.
  • Fixed issue where station batteries would sometimes not lose power in cold atmospheres. This was because the atmosphere it was trying to get could return as null so it exited before it could remove the power.
  • Fixed A long standing issue where atmosphere direction was not being applied to existing atmospheres on clients. This would result in clients not seeing air particle effects when inside rooms, wind sounds not playing in some grids (or wind sounds getting stuck on) and the character not being moved correctly by wind forces when in rooms. Big thanks to @FlorpyDorp from our modding community for finding the fix to this issue!
  • Removed unnecessary calls to InputMouse.SetMouseControl. This is now handled in the same place as SetCursor. Stationpedia should now correctly lock movement when the search field is focused rather than being unlocked when you delete or flip back and forth when typing. Removed delayed SetMouseControl on application focus, instead MouseModeController will be flagged to re-set cursor state on the next tick.
  • Removed unused research panel and a few related prefabs with missing scripts. Removed research manager as it had already been removed from gamemanager's manager list.
  • Fixed issue where StructureMediumTransfomer(Reversed) would not show up in Stationpedia.
  • Fixed long standing issue where mouse could become incorrectly unlocked when interacting with traders and other ui panels. Now things that affect cursor locked state will all be tracked in one place and all open uis will be tracked to fix the issue of closing one popup locking the mouse. Have removed all previous calls to CursorManager.SetCursor and simplified a bunch of logic in InventoryManager.
  • Fixed Chute import/export bins using incorrect hazard material.
  • Fixed Overflow_NegateTwosCompNum Exception that could prevent saves from loading if it had an object that was so far out of bounds as to overflow an integer value.
  • Added C# classes for CombustionDeepMiner.
  • Changed Moved shared behaviour of CombustionCentrifuge and CombustionDeepMiner into helper class InternalCombustion.cs
  • Refactored DeepMiner to inherit from DeviceInputOutputImportExportCircuit. This is to allow CombustionDeepMiner to inherit DeepMiner behaviour.
  • Added deltaTime argument to OnServerExportTick() function.
  • Fixed Rocket Mass contribution from mined ores/ices would only get updated on load or when rocket was modified. It now gets updated correctly when ores are added or removed from the cargo bay.
  • Added new readable LogicTypes to the Beacon. Players can now read the PositionX, PositionY and PositionZ logic types from a beacon.
  • Fixed Issue with MineablesInQueue logic type. It now correctly returns the number of mineables that an Aimee robot will attempt to gather. Aimee robots will also not target the same mineables as another Aimee.
  • Removed a few more old/unused prefabs from Resources which had missing scripts on them.
  • Committed missing scene change and applied change to GameControllers prefab.
  • Removed a bunch more assets from Resources that were unused. Moved a few still used assets from Resources to their appropriate folders. Removed a few other unused old c# classes.
  • Removed a few unused assets from Resources folder.
  • Removed terrain testing scene as it is no longer needed and had references to removed scripts.
  • Removed some unused, empty and missing scripts on the playercontrollers prefab.

This update involves some highly technical work to improve how multiplayer works at a base level, focusing on how multiplayer updates are sent by hosts and received by clients. These changes target not just multiplayer bugs, but also have profound impacts on performance as well. Such changes will become very noticeable with larger bases in particular.

If you are happy with our development, please consider supporting us by purchasing a DLC. Your support makes our updates possible

https://store.steampowered.com/app/3166330/Stationeers_Supporters_EVA_Suit_Bobblehead/


Multiplayer Serialization
We've optimised network messages to be 30% faster for both read and write operations.
Profiling the dedicated server running our large Vulcan playtest base revealed a couple of big performance wins around memory allocation.

We've rewritten the server side code that assembles the last tick of world changes to remove some un-necessary object creation and array double handling. We were able to apply the same approach to the client-side code that unpacks the network messages as well.

Overall, this has resulted in connections to servers with large base to feel more responsive, players hosting locally will experience more stable frame times as well.

RakNet
This change fixes a longstanding severe desync issue that many users experienced. This is where, particulary for users with a high ping to a server, they could get stuck in a massively desync'd state.

Our existing networking runs on a RakNet package exposed only exactly what was required for it to work. It handled a lot of the connection side of things behind the scenes in C++ and simply provided just a simple API for us to use. This meant that we did not have access to the full API, including many debug tools. Our Enterprise team, responsible for the Brutal framework, has built a new RakNet package for us to use that exposes the entire RakNet API to us directly via C#.

What's implemented in this update is a 1 for 1 swap out with no functionality change. However, this may already come with some benefits as it's a newer RakNet version, and it will allow us to implement a whole new suit of debug tools that ship with the game to gain more insight into what is happening when people experience multiplayer issues. This work will be done in a future patch.

Unity Engine Upgrade
The RakNet change required us to update Unity by a few minor versions. Initial results seem to be that there is no negative effect on the game, and roughly a 10% framerate improvement. That being said, any engine upgrade comes at a high risk and the potential of critical issues that hide until a later date. Updating Unity versions on a live product is a decision we do not take lightly but we felt that it was necessary to get the most of out of Stationeers as a multiplayer game.

Landing Pad Portable Connectors
We've had an ongoing issue with the Landing Pad Portable Connectors. This issue was where you would have trouble interacting with them to unwrench them, after reloading or joining. It's taken us a few attempts to isolate and fix the issue, but it is finally solved!

Upcoming Changes
In the patch notes you'll see mention of some upcoming content for rockets and a new atmospheric device for liquids. It needs some more testing on beta for now though, so expect it to come to stable in the near future.

We are careful with our planning, to not get overconfident - so we are reluctant to nail down specific roadmap features unless we are sure we can deliver them to an acceptable quality given our resources. With this caveat said, we can confirm a few things we are looking into for future updates:

  • Nuclear Reactors
  • Terraforming DLC (post 1.0, not before)
  • Space Station + World base in same level (in progress)
  • Travel to new world (migration to new world, using rocket)
  • Vehicle improvements (some experimentation already exists in creative)
  • Deep Miner changes, improvements, and content

Quickfire Fixes

  • Fixed ins IC10 instruction was parsing its arguments incorrectly. It will now correctly parse the arguments as described by the Stationpedia a=Value b=Position c=length.
  • Fixed Arc Furnce was releasing gas at 0 degrees C. It will now release hot gas when smelting.
  • Fixed StrongestContactMetaData stack operation.
  • Fixed Swapping item would cause decay damage to be healed.
  • Fixed An IndexOutOfRange exception thrown by the AdvancedTablet that could cause a save to fail to load.
  • Fixed On vacuum worlds medium and large trader slots could sometimes be populated with small traders.
  • Fixed Door control, Power Control and Mode Control Circuit-boards were not working with devices that had been updated to the new animation system.


Your support makes these updates possible
https://store.steampowered.com/bundle/2624/Stationeers_Complete_the_Set/

Change Log 0.2.6136.26812

  • Fixed Deconstructing PressureFed Liquid engine would return wrong kit.
  • Changed viewport mask on plant analyser to rect mask in a attempt to fix content going out of bounds of the screen for some players.
  • Moved network analyser panel to its own prefab and changed scroll rect mask type to rect2d in an attempt to fix text appearing outside of the scroll rect for some players.
  • Added fall-back behaviour for server hosting that was present in the old version of rocketnet.
  • Added very rough first pass on a orbital launch mount payload object to go into the rocket payload bay. This can be used to deploy a launch mount in low orbit. Currently set to not spawnable.
  • missing file from prior commit
  • Changed Get IPv4Adress to use the raknet functions for getting host ip address.
  • Changed Filtered out loopback addresses when trying to automatically get IPv4 address.
  • Added further logging when getting ip address.
  • Added If server fails to host it will re-attempt up to 3 times.
  • Added some additional logs when hosting a server fails or is aborted.
  • Fixed If raknet fails to start hosting server will be correctly aborted.
  • Added new model for rocket crew module. Removed player slot and screen from crew module and added two separate objects for these - to be build inside the module. Building restricions are not in place yet and models are placeholder.
  • Refactored RocketPayload.cs to abstract class and added DeliveryPayload class for functionality unique to the PayloadDeliveryContainer.
  • Fixed IC10 code was not running on Harm Suit.
  • Fixed clipping issue with Small Fridge where Fries would clip through the door when it was closed. The rendering of items in Fridge slots is now also disabled when either Fridge variant is closed.
  • Fixed issue with text on Airlock control being spelled incorrectly. Used to be: "Presurize". Has been changed to spell: "Pressurize"
  • Changed Updated Sorter and Logic Sorter to new model.
  • Fixed issue with emotes where the None emote would cause other players in multiplayer to see your expression as Dead and removed dropdown for changing expressions in character customization.
  • Fixed Orientation and position of liquid canister when placing it inside a PortableComposter
  • Fixed Zrillians were respawning without Emergency Suit in Stationeer Difficulty.
  • Fixed Localization issue with FireExtinguisher liquid canister slot name.
  • Removed incorrect hardcoded error string from rocket motherboard inworld ui canvas.
  • Fixed incorrectly rotated fan mesh on Landing pad Liquid Tank Connector.
  • Fixed Flickering lander tooltip on worlds with more than one storm type.
  • Fixed Swapping Items would cause all damage on item to be healed (including decay).
  • Fixed Some prefabs accidently removed from WorldManager All Prefabs list in Commit26773
  • Fixed issue where setting expressions in multiplayer would not revert back to a default expression when the duration was exceeded.
  • Fixed RocketPayloads that fall through terrain will immediately be teleported back to surface.+ Added Quantity Condition can now be used to evaluate the number of items that make up a StructureNetwork when authoring helper hints.
  • Added Case for PlantAnalyserCartridge in ThingPrefabCondition and NetworkCondition.
  • Added new Defibrillator tool to game. Currently has similar behaviour to HealPill.
  • Changed English.xml fixes
  • Fixed SimpleFabricatorBase could throw error when submerged and no power cable connected.
  • Updated Tutorial4 Airlock walkthrough with respect to console no longer requiring data disk.
  • Fixed Upgrading a single pipe or pipe utility to insulated variant deletes the contents of the pipe/tank.
  • Fixed World Liquid Renderer could throw an index out of range exception if liquid was being rendered from the global atmosphere.
  • Updated Wall and pipeHeater stationpedia description with operation range values for pressure and temperature.
  • Fixed ins Ic10 instruction was parsing its arguments incorrectly. It will now correctly parse the arguments as described by the tooltip a=Value b=Position c=length.
  • Fixed Arc Furnace was releasing gas at 0DegreesC due to the AddEnergy method not running the regression occurred following a refactor of AtmosphericEventInstance from class to readOnly struct in Sept2024.
  • Changed StrongestContactMetaData Stack Operation back to returning Opcode plus 3 bytes. It is now authored (byte)Opcode:(byte)ShuttleType:(byte)ContactSlotIndex:(byte)Contacted. Returning the slotIdHash did not work as the total number of bytes exceeded the amount available in a double
  • Updated libRakNetDLL.so
  • Fixed Door control, Power control and Mode Control Circuit-boards were not working with devices that had been updated to the new animation system.
  • Fixed Wall Light Long Wide could not be deconstructed when looking at the bulb with hand drill due to an incorrectly authored collider.
  • Changed Increased the size of All_Light_Activated Dense pool.
  • Fixed inaccuracies in Stationpedia descriptions for Portable Liquid canisters.
  • Fixed On Vacuum worlds Medium and large trader slots could sometimes be populated with small traders. Saves experiencing this issue will find the issue resolved when current traders expire and new traders are rolled.
  • Fixed an IndexOutOfRange Exception thrown by the AdvancedTablet that could cause a save to fail to load. Saves that experienced this error will now be able to load correctly
  • Changed re-enabled Liquid Filtration this device is now available for testing on beta.
  • Reenabled rocket payload bay and payload delivery container these items are now available for testing on beta.
  • Changed StrongestContactMetaData stack instruction to work with new trader slot definitions. It now returns the following packed value OpCode(byte):slotIdHash(Int32):ShuttleType(byte):Contacted(byte)
  • Added ContactSlotIdHash Logic value to MediumSatelliteDish so this value can be read via standard logic commands as well.
  • Fixed Items moving through chute networks could sometimes have the Fallen through the world behaviour incorrectly applied, resulting in the item being teleported to the nearest safe drop position (usually on the roof).
  • Removed Liquid Filtration from recipe list and made it not spawnable
  • Changed Made Payload bay objects not spawn-able for now as they require further testing on beta. They will move to stable in a patch early next year.
  • Fixed Liquid Filtration Machine was not using power.
  • Missing png meta files from engine upgrade.
  • Added Payload Bay Large. The payload bay is placed in a rocket and allows for the attachment and deploy of a payload item. Use the new deploy action in the location panel, available at the low orbit space map node. The payload bay must be turned on and open for the deploy action to proceed.
  • Added Payload Delivery Container. This allows for strategic delivery of up to 10 items via rocket. Weld up the container and attach to the rockets Payload Bay Large with a wrench. The target X and Z coordinates should be set on the Payload Bay and once deployed the container will be dropped to that exact location. A deployed Container will be trackable with the tracker cartridge.
  • Fixed physics collision bugs or terrain collider lods not getting generated on time could cause items to fall through terrain and get destroyed.
  • Changed out of bounds check for items to also check if object is completely inside terrain as part of check for returning to surface.
  • Fixed running editor validate did not clear InteractableParentIndex before re-assigning, this could result in bugged Interactables when authoring new assets.
  • Fixed Dynamic Objects in slots would block construction.
  • Changed the name of ItemKitLiquidFiltration to be more consistent with naming conventions of other Kits. Was "Kit Liquid Filtration", changed to Kit (Liquid Filtration).
  • Added new LiquidFiltrationMachine. It is similar in function to the original filtration machine except it is able to handle liquids as well as gasses.
  • Fixed an issue where an integrated circuit placed in an atmospherics device would not be set to invisible when the cover panel was closed.
  • Added TakeNormalisedLiquidVolumeScaled function to AtmosphereHelper.
  • Updated Unity version from 2022.3.7 to 2022.3.62 - updating Unity versions always comes with a high risk and there's a lot of unknowns.
  • Added new raknet and replaced all base level net code this required a minor version update of Unity to achieve. From a code point functionally there should be no change the changes in raknet may have some positive impact on multiplayer. This change will allow for us to monitor and debug network issues much easier and opens a lot of doors for us to make improvements. This commit is just a one for one swap from the old version to the new though.
  • Removed RocketNet plugin
  • Fixed DynamicCanister could sometimes be unable to be removed from connector upon joining a game as a client.
  • Changed some data types in DynamicThing.SerializeOnJoin as they were unnecessarily large.
  • Fixed Clients not getting the correct cached WorldCenterOfMass and Position values on join.
  • Added second pass at multiplayer serialization refactor. Double handling was broken on last beta video, causing a large number of issues. The buffer process has been streamlined, and will be cached. The buffer will now be reused to reduce memory churn. This should reduce strain on the server, and fix some bugs players are experiencing with desync. Future change will be replace backend RakNet implementation with newer version.

This update previously contained update details. This update has been reverted. To avoid confusion, is it being taken down.

It seems a percentage of users are experiencing a serious issue with multiplayer, while some fixes come up for users - these fixes are often counter to each others so highlight a wider issue that we need to sort out. The update post will be deleted, to avoid confusion. If you have no issue, and want to keep playing - please switch to the beta branch. Otherwise we will have to deploy at a future time. One of our own team replicated the same issue at our end, as well.

Apologies for the massive inconvenience, we really dropped the ball on this one I'm afraid.

Change Log 0.2.6126.26786
This fix addresses a fatal error when more than one character is detected at once by an Occupancy Sensor.

A potential fix for the dynamic canisters not being able to be removed from some portables connectors is in but there are still some remaining issues. We will release another hot fix when we've solved the problem completely.

Change Log v0.2.6091.26702

  • Reduced status icons size about 77%
  • Updated glowing effect for circle mood icons
  • Fixed dynamic Canisters not interactable when joining a save that has a large number of items.
  • Fixed OccupancySensor could throw Stack overthrow exception when multiple characters were in the same room.
  • Increased the OccupancySensor Stack size to 18.
Project Clinic
A month ago we started our Vulcan playthrough and we've been busy playing ever since. We've talked about our processes before but it's worth talking about again as it is core to how we make games at Rocketwerkz. This kind of play session is not a traditional development play test but rather us truly playing. Sure, we note our issues and ideas down but our goal is to actually just play the game like a normal player.

We played on the same server the whole time, but lived separately in our own independent bases. At points when we started to hit performance problems we identified the issues and increased performance significantly. We'll go over them in detail later in the post, but these changes were profound and allowed us to have a server with multiple, large, complex bases while still getting excellent performance.

As time went on in these play sessions, we start to divide our time more between development and playing. We started to tidy up a lot of what we had been adding and working on the more complex systems that we wanted to tackle. Generally in these final few weeks we end up with: 1/3 of our day spent playing, 1/3 to do small task and fix small issues, and 1/3 used to fix large issues or work on big changes.

A New Way of Playing
Before we started our play session we decided that we wanted to try all making our own, separate, bases. To do this we added what we call "Round Robin" start. This works by spreading the players across all the spawn points on the map. If there's a free spot it will put a new player there before it starts to double up.



Along with this new way of spawning we added "Community" Start conditions which provide each new player with their own set of full supplies in a lander, which allows a game to be made up of a collection of bases, instead of a single one.




Respawn Overhaul
With this spread out base play style, when a player died, it could take other players a long time to prepare and make a trip across the rough dangerous Vulcan terrain. This helped us identify some issues around the process of dying, being dead and the few ways of respawning.
Known Issue: Desync for some players
We have managed to identify long-running issues with a "desync spiral" that is experienced by some players, even when not using SteamP2P. Players get stuck in a state where they are severely behind in updates. This tends to occur where a user has a high-ping to the server, and the bases (or network updates) become large. We are producing a new version of RakNet (which we have revamped into "RocketNet") which addresses these issues. It was not ready in time for this update, but we expect to have progress in the new year.

Body Bags
Dead player bodies can have a big effect on performance and are prone to bugs, both while lying on the ground and while being dragged. Player bodies will now more quickly decay, and when they do they will enter a body bag, and their belongings will be placed in a large cardboard box.

Since body bags now exist as a transitory representation of the players state, reconnecting to an active server, and finding yourself dead is now possible. Previously, corpses would explode into dropped items, and players would reconnect with the server no longer having a reference to their old self, and they would just respawn in a fresh drop pod. The new bodybag method should give you a better insight into how a server progressed, potentially how and where you died, and add the ability for someone to try and resurrect you.



Cryotubes can be used to re-life rag-dolled players or players in body bags. The cryotube's tool tip has been expanded significantly to represent the many aspects of a characters life state, and explain how to resurrect them. If you have extra body bags laying around, and the players have respawned, or left the server, you can deconstruct them with an angle grinder.

Respawn UX
We've redone the UI and UX for respawning to better convey what your state is, and what it means to respawn. Life resource usage, and what is given on re spawn changes depending on your difficulty and starting conditions, so keep that in mind when playing with different settings.



New Respawn Kits
When respawning you will now come down in a Lander Capsule, and you'll always at least start with an emergency suit, as the previous naked landings on stationeers difficulty didnt lead to any possible recovery on many planets.

Respawn Stress
Respawning will give you a difficulty settings dependent debuff. Respawning will temporarily affect your food and water consumption speed, tool usage speed, as well as give a price penalty when buying and selling to traders.




Performance Improvements
This update includes a major round of performance optimizations across both clients and dedicated servers. We have reduced unnecessary terrain generation, significantly cut client-side physics and animation overhead, and moved many high-frequency devices to pooled audio and lightweight animation components. Terrain meshing on dedicated servers has been heavily optimised, and dynamic items outside render range no longer run full physics on clients. Save times have also been dramatically reduced by optimising compression. Together, these changes deliver much smoother gameplay, especially in busy bases and multiplayer sessions.


New Stuff
Super-Heavy Cables
The new super heavy cable has a maximum wattage of 500kW and has long variants of three, five and ten to allow for easy building of long powerful trunk lines.



500kW Fuse
A new 500kW fuse has been added to accompany this cable.



Landing Pad Tank Connector
Liquid and Gas Landing Pad Tank Connectors let you directly pump to and from portable tanks, making early gas trading easier.



Construction Safety Equipment
These items allow you to dress your under-construction areas and leave warning signs for other players to tread carefully.



Heal Pill
The heal pill will only heal you partially and to heal fully you need to use a cryotube. Depending on what damage you have taken you may still end up dying unless you can make it to a Cryotube.



No More Data Disk
Console displays no longer have a data disk slot to set configuration. This has long been confusing, and results in more complex objects, synchronization, and geometry. Now the consoles have a screw, like logic devices that, when used with a screwdriver, will toggle between configuration and operating mode.



New Food
Cheese Wedge
A new type of food only available via trading is Cheese Wedges. This can be used to create the other new food the Burger!

Burger
A new high-tier food made from cheese, tomato, flour, egg, and soy oil. Burgers can be eaten faster than other premium foods, can be stored in Burger Boxes to slow decay, and eaten directly from the box. Some traders will buy properly packaged burgers.



Super Large Direct Heat Exchangers
These Super Large Direct Heat Exchangers are the same as their smaller counterparts but with much larger surface area meaning they can transfer more heat.



Loader
The Loader will take objects from its left slot and put them in the available slots of the object inserted in the right slot. The slots will be filled in order from first to last. If no available slot is found, the left slot object will be ejected. The right slot object will auto eject once full or if the level is pulled.



Large Cardboard Box
A new larger cardboard box has 10 slots, four more than it's smaller version. Both cardboard boxes can now be painted and are useful for base inventory management.



1x3 In-line Tanks
New 1x3 Liquid and Gas in line tanks with a volume of 360L of have been added making it easier to build up the overall volume of a pipe network.



Engines
These new engines can be got from one of the Exotics Traders. The have a significantly higher fuel throughput and thrust output while having a small mass increase.



Steel Frames
Steel frames aren't new but their new build state is. You can now continue to construct of a steel frame into a new build state using plastic sheets and a screwdriver. The end result is a smooth finish. Where you may have previously used multiple walls over the top of your frames for aesthetic reasons you might now choose to simply finish the construction of the frame instead.




Inventory
A new 'sort' button has been added to inventory windows. This button will sort all items, primarily alphabetically and secondarily by quantity. This will also consolidate any stackable items, such as ores. Dedicated slots will be ignored (such as canister, battery, etc.). The only exception to this is ore slots.




Tooltips
Tooltips are one of the primary ways that information is conveyed in the game and we're always striving to improve and add tooltips wherever we can. This patch contains a load of tooltip improvements. As well as adding new or more useful tooltips to a bunch of devices we've also added better tooltips for Status Icons, and Inventory window buttons.



Status Icon Tooltips
Status icons can now have dynamic tooltips that give you specific information about why you are seeing it, and what effects it might be having. For instance, with the new respawn stress debuff you can see exactly what stats are effected. We will continue to expand the tooltip on more of these icons in future updates.


Trader Changes
We have made extensive backend balance improvements to traders to deliver a smoother and more reliable trading experience when interacting with them and completing trades. Certain traders now spawn only in specific slots, Tier 3 Hydroponics traders will always stock Dargaferns, Tier 3 traders carry more bulk goods, and Tier 1 traders carry less. Landing pads are now fully insulated instead of partially insulated.



New Trader Slots
We have added two dedicated trader slots for special traders so they no longer replace regular traders, giving you more options available at any given time.

Exotics Trader Slot
This slot is dedicated to the Genetics Trader and the Rare Items Trader.
The Genetics Trader sells Darga Ferns, genetically modified plants, thermogenic plants, and fertilised eggs.
The Rare Items Trader sells non-craftable items including heavy rocket engines, cosmetic fuselage pieces, and catalytic filters.

Utility Trader Slot
This slot is used for special utility traders and flavour traders such as the Food, Hardware, Consumable, and Appliance traders.


We have also fixed several multiplayer trader UI issues that previously made trading in multiplayer frustrating.

Contact Fuzziness
We've removed the fuzziness that was being applied to the contacts. While originally an intentional feature to make finding contacts via logic more difficult, its removal makes programing trader contacting more straight forward.


Rocket Changes



Rocket fuselage pieces can now be swapped between variants without deconstructing the entire rocket. The rocket UI is now faster and more reliable on clients, matching server behaviour and fixing multiple control issues. Space ore yields have been increased, while deep mining yields have been rebalanced to match.


Showers
Showers can now boost your Hygiene level to 150% letting you stay cleaner for longer with the added benefit of having a movement speed bonus of 5% while your hygiene is over 100%.




Vulcan
Our play session has been on Vulcan, so it got a little love. Vulcan now has two types of storms, the regular ash storm as well as the new solar storm. Some work was done on it's space map, including the addition of Janus which contains various gas cloud nodes.


Logic
We are continuing to put a heavy focus onto expanding out logic systems in the game. Several new logic values and outputs have been added to expand automation and control options. Expect more of this to continue with future updates. We will be expanding the "internal stack" available on other devices to allow even more extensive automation.

The TotalMoles logic variable on the gas sensor now returns the total molar quantity for the grid square it is in. The occupancy sensor now exposes a stack containing occupant entities and their first-level slot data, allowing logic systems to inspect what occupants are wearing, such as checking for EVA suits.

A new NextWeatherHash logic type has been added to the weather station, allowing detection of upcoming storm types. New FreeSlots and TotalSlots LogicSlotTypes have also been added, enabling better control of objects when using the Loader or Unloader.

The Vending Machine now has TargetSlotIndex which will tell you the currently selected index, and TargetPrefabHash will tell you the selected prefab hash.


QOL
Repair
We're slowly adding more ways to repair your base so you can avoid having to completely reconstruct parts as they become destroyed.
Large Tanks, Cutes, and Large Batteries can now all be repaired in place using various tools and materials. This information is available in the tooltip when looking at them.

LED Consoles
LED consoles displays will now correctly orient their displays to always be up to be in line with the other displays.

Quick Fire Quality of Life
Gas sensors are now paintable
Hard Suit Backpack now have 20 slots
Atmos Analyser Cartridge now shows temperature value of liquids.
The large fridge now has a light in it
Stationpedia pages for seeds and plants now link back and forth between them
Chargable items and devices now display their total power capacity in the Stationpedia
Added special info-boxes to Stationpedia for Cryotube and devices that will suspend metabolism.
Large Wind Turbines now rotate to point into the wind
The critical warning for waste tanks has been changed from 100% to 95% to avoid complete panic
Changed the trigger collider of the Grow Light so it now lights an equal amount in each axis.
Wall pressure is now calculated using the combined max pressure of all structures on a face, instead of per-wall deltas. This prevents weak walls from failing when supported by stronger walls on the same face. Note: this only affects walls that are back to back.


HARM Suit Changes
The harm suit had a bunch of balance changes to make it perform better in the super hot environments of Vulcan and Venus. The coolant will now heat up by ~1 degree per day instead of ~10 degrees per day. It also has a nice new helmet interior!


Notable Fixes
Dedicated servers now correctly save when the last player leaves, using a more reliable event-based trigger.

We also fixed a client respawn desync that could cause dropped items to appear at the respawn point due to missed position updates.


Localization
A new comprehensive Japanese translation has been provided by community member @JouNin.

We have also pulled in updated French, Russian, and Simplified Chinese translations from the community GitHub.

Thanks to @JouNin, @CedricDx, @AlexusYT, and @MRythm for their continued support.



Recent Community Standouts
Check out SemlerPDX's newest amazing base tour video:
https://www.youtube.com/watch?v=UXKzuIKBV3Q
Check out Cows are evil's beautiful modded base in his latest Europa playthough:
https://www.youtube.com/watch?v=0n3GnRwagtM



Update Wallpaper




Your support makes these updates possible

https://store.steampowered.com/bundle/2624/Stationeers_Complete_the_Set/


Change Log 0.2.6085.26682
Due to Steams character limit, we cannot include the patch logs for this update.

Please find them in this pastebin.
Storm System Changes
For a few years storms have been an important part of Stationeers, creating challenges for players to plan and build around. In this update we’ve overhauled their visuals and resolved a number of long-standing issues. A lot of the aspects of Stationeer's storms were hardcoded to be a certain way, and we needed to do some refactoring work to increase their performance, and create a system we could start using for multiple storms. This is only the start of storm related content we can now do, so in the future expect to see more storms roll in.


New Storm Visualizations



The old storm effects relied on thousands of particles, which was expensive, visually inconsistent, and often leaked through walls. We’ve replaced this with a new volumetric system that’s cheaper to render and produces a better result. Storms now integrate more naturally with the terrain, and we’ve fixed problems where storm effects would incorrectly appear in areas like the interior of your base. Overall, storms are now more consistent, better looking, and less costly to simulate.


Solar Storm
We’ve added a new type of weather event to the Moon: the Solar Storm. During a solar storm, the sun becomes significantly brighter and the world heats up rapidly. Solar heating inside bases and EVA suits increases substantially, and Stationeers outside will burn through oxygen faster as their suit’s emergency cooling system works overtime.



Hiding in shadow or wearing the new HARM suit are your best options if you need to leave the base during a solar storm. Plants and solar panels benefit from the increased solar output, but keep an eye out for blown cables.


HARM Suit
The HARM suit is a heavy, water-cooled protective suit designed for harsh environments. Normal movement speed is reduced to 60%, but while wearing it you’ll experience no movement penalties during storms. It’s also tougher than other suits, taking less damage from impacts and significantly less damage from lava.



The HARM suit introduces new suit mechanics: it uses water cooling for superior thermal performance and provides strong protection during both storms and solar storms. However, it comes with trade-offs. You can’t wear a jetpack, and the reduced movement speed makes it restrictive. Even so, the protection it provides makes it a valuable option in challenging conditions.


Solar Panel Re-balance
Solar panel outputs are now uncapped. Panels will over-produce on worlds with higher solar irradiance. This provides a small power increase on the Moon and a much larger one on Venus. Vulcan’s highly elliptical orbit means solar panels will now generate significantly more power as the planet approaches its orbital perigee.




Suit Storage
We’ve added two new suit storage options. They’re functionally identical to the existing storage but provide more visual variety for your bases and airlocks. A great way to store and organize your new HARM suit.




Portuguese Localization
A massive thanks to Marcelo for submitting updated Brazilian Portuguese localization files!



Recent Community Standouts
We wanted to highlight some of the excellent videos being created for Stationeers. Internally we’ve been enjoying a lot of it, and here are a couple of creators we regularly follow:

God, creator of the universe
https://www.youtube.com/watch?v=qa8mdiuOsqg
Cows are evil
https://www.youtube.com/watch?v=GvS-QGaFd0Q

Go check them out and support your favourite Stationeers content creators. Thanks to everyone who streams and makes videos about the game.


Update Wallpaper



Your support makes these updates possible
https://store.steampowered.com/bundle/2624/Stationeers_Complete_the_Set/


Change Log 0.2.5954.26176

  • Fixed Error spam from Solar Storm due to weather fade in effect not accounting for solar storm data.
  • Fixed Solar Storm visual effect not always being applied correctly.
  • Updated Portuguese Brazilian localization (Thank you Marcelo!)
  • Added Localised Font components to DeepMiner and GPS Cartridge text fields.
  • Fixed Storm effect fadeIn/fadeout throws errors on Clients
  • Fixed Interior storm sound not playing.
  • Fixed Solar Storm light was being applied twice.
  • Fixed Storm sounds were playing during Solar Storm.
  • Fixed compile error from reference to removed weather settings method.
  • Updated HARM suit interior mesh and prefab for new visor opening animation.
  • Added two new Suit Storage variants: Suit Storage Frame and Suit Storage Locker
  • Missing meta file change for storm audio.
  • Tweaked mars dust storm colors to be a little lighter.
  • Removed some duplicated lighting code for the storm effect.
  • Made storm effect fade in and out rather than suddenly appearing.
  • Updated Storm sheltered audio clip.
  • Moved shared storm effect material setting code into helper class.
  • Updated Stationpedia page for HarmSuit.
  • Added a number of un-localized GameStrings to english.xml
  • Fixed HARMSuit had worse thermal Radiation performance than HardSuit.
  • Reverted the changes to tooltip opacity as they were causing issues with empty tooltips
  • Fixed storm distance thickening effect not starting from actual start point of the march.
  • Updated storm effect parameters for mars.
  • Updated how storm effects are colored. Added a distance falloff so we can thicken the storm up over distance as desired. Added the ability to use the noise as a mask for a secondary color such as ember particles on vulcan. Moved a lot of common functionality into the helper cginc file. Updated colors for vulcan and europa.
  • Re-enabled storm audio it is now hooked into the new storm rendering system.
  • Added Storm direction can come from any direction and is not limited to cardinal directions.
  • Moved shared marching code into helper for storm shaders. Removed old storm shaders that were using generated noise.
  • Fixed Minable ores were not being generated around aimee. This meant that when the aimee was not able to explore for ores and aimees near un-modified ore viens after loading a save would not see them.
  • Removed unused normal calulation from storm card mesh shader.
  • Fixed. When storm stopped when player was outside the wind audio would continue playing (beta).
  • Removed half res storm rendering on screen space effect as the new approach is performant enough to render at native resolution.
  • Clean-up of storm shader code, which appears to have solved several visual issues.
  • Moved ReconstuctWorldRay function into the storm helper cginc.
  • Fixed default value for storm card normal offset being too high making storm cards clip into the room.
  • Removed some unused code from the old storm effect shader.
  • Fixed outline effects showing up on the storm camera. Added camera check to OnRenderObject to skip if the current camera is the storm card camera.
  • Improved blending between noise sample slices in weather effect shader;
  • Added Higher res noise 3dtexture
  • Moved storm card normal offset into the vert shader so we can have differnt offests for the depth only cards and the actual storm cards shown on the main camera. This removes some gaps around the edges of cards when the storm is being clipped to a room.
  • Added emissive sparks effect to Vulcan Ash storm.
  • Fixed outdoor storms going appearing inside rooms. Added back in the secondary camera for storm cards and are now clipping the storm marching to the back faces of the storm cards.
  • Reauthored Storm effect 3d texture to leave the blue channel free to do a third type of noise.
  • Fixed Storm Effect mesh in incorrect place in render queue (move to transparent-1)
  • Optimised Storm effect. It now uses a 3D noise texture instead of calculating the noise procedurally on the GPU. Different levels are baked into the red green and blue channels, which allows for a single texture lookup to handle several different layers. This reduces the time taken to render the effect from 8ms to 0.5ms.
  • Changed Storm screen-space shader to run at half resolution.
  • Tweaked Mars storm values to look Ok with 12 raymarch steps.
  • Thickened up mars storm effect.
  • Fixed the StructureComputerUpright prefab so that inserted datadisks no longer have the wrong orientation.
  • Fixed a small typo in the ScriptHelpWindow where the word "charactwers" has been changed to "characters".
  • Fixed storm cards not being created for some doors and shutters.
  • Removed item basic suit shoulder pad
  • Fixed Tooltip so that it now respects the Tooltip opacity setting. previously it would only respect it if the setting was changed while the player was hovering over something, then would revert back to an opacity of 1 when the player looked away and then looked back at the object.
  • Slightly reduced the storm card offset distance to minimize gaps as much as possible.
  • Fixed partially built frames showing storms inside them. Now partially built frames will exclude storms.
  • Added Storm lighting now uses 8 closest lights.
  • Added Shader settings for Venus, Mars and Vulcan storms.
  • Reduced Number of sample steps in storm shader to improve performance.
  • Removed All references to old storm effect system and removed StormLocal script from Brain prefab.
  • Added XML data classes for new storm effect.
  • Added New storm effect material settings are now authorable inside weather.xml.
  • Added Switching between screen-space and world space variants of storm effect when inside room and outside room.
  • Fixed Items would sometimes get blown in the wrong direction during a storm.
  • Removed storm audio. It will need to be replaced with a new system.
  • Fixed storm cards showing over windows on outer grids. Pushed the storm cards out slightly. This can leave a small gap on some corners which will be addressed in a future fix.
  • Tweaked spotlight lighting anisotropy on storm effect mesh to match headlamp lighting cone size.
  • Fixed brutal spawn data so that the minimum supplies crate would be closer to the lander and easier to find when you spawn on Mars, Lunar, Europa, MimasHerschel and Venus on Brutal difficulty.
  • Added variant of storm shader to be applied directly to storm card mesh. This removes the need for another camera. Have removed the storm card camera for now but left the screen space shader in incase we want to use it later.
  • Polish Pass on Storm Screen space lighting.
  • Added Support for spotlights in storm shader
  • Fixed nullref when setting material property on storm effect (beta only).
  • Updated indoor storm effect to use a different noise function with significantly less artifacting. Set some default material values for a good staring point for a europa storm.
  • Added Rudimentary lighting effect to screen-space weather shader. The 8 lights closest to the camera are sampled to light the storm effect.
  • Fixed a bug with indoor storm effect where artefacts could appear on nearby geometry. Removed a few unnecessary parameters. Marching radius is smaller now but effect looks much better and thicker.
  • Updated indoor storm effect to take ambient light into consideration. Also allowed for more dense clouds.
  • Fixed a rounding issue that could happen when wearing the HARM suit and standing on a frame. The Harm suit would try to sample the atmosphere below the player causing a divide/0 error in the suit convection code and creating run-away heating.
  • Further balance work on HARM suit atmospheric values for liquid cooling function.
  • Added a few tweaks to the indoor storm effect for better control of light absorbtion.
  • Turned off the indoor storm effect by default.
  • Fixed DevicePipeMounted from having unusual rotations under certain circumstances when mounting on vertical pipes. This was caused by the forward axis vector in the transform being treated differently to the up and right axis vectors, and the resulting rotation being incorrect.
  • Refactored lava damage to move the damage behaviour into virtual functions in individual classes. this allows more more clearly defined edge case behaviour.
  • Changed HARMSuit and helmet to be much more resistant to Lava damage.
  • Fixed when player is in a suit & helmet. Internal items and glasses etc will take no damage from lava until suit is destroyed.
  • Fixed Solar Storm Localisation error in new world screen.
  • Fixed storm card mesh gameobject position was offset incorectly.
  • Added first pass on indoor storm effects. Storm card meshes will be generated around exterior walls/windows from which a screenspace storm effect will start.
  • Updated the cost for the ItemKitVendingMachine: All costs are halved. Large vending machine requires two kits while the small vending machine requires one. Kits now stack to five.
  • Fixed harmSuit helmet not spawnable.
  • Removed duplicate harm-suit helmet prefab
  • Fixed Blocking area of medium radiators. All variants now only occupy the space defined by the object itself. (previously they would occupy all adjacent small grids as well.
  • Removed Hard-Cap on SolarPanel panel output. Solar Panels will now over-produce power on worlds with higher solar irradiance. This change effects the maximum solar output of panels on the following worlds: Moon 750W, Venus 1.15KW, Vulcan 500W-to-1.2KW (Vulcan's highly elliptical orbit means solar irradiance fluctuates greatly throughout the year). Output of solar panels on other worlds are un-changed.
  • Changed Solar Storm now increases output of solar panels by roughly 4x.
  • Added new Stationpedia values for HARMSuit. The harm suit uses a new system for determining heating/cooling. Expressed are the operational range and the safe range. Inside the Operational range of external temperatures the suit is able to hold a steady temperature with minimal cooling. Inside the safe range the suit will be able to maintain temperature via the inbuilt AC. The suit is not guaranteed to operate correctly outside the safe temperature range.
  • Fixed Canisters hidden in slots could still receive heating from the world atmosphere in some cases.
  • Added Solar Heating Factor to Stationpedia (this expresses how quickly the sun will heat up the internal atmosphere of an object.
  • Fixed HARMSuit page not displaying in Stationpedia.
  • Tweaked HARMSuit Thermal balance values.
  • Added HARM Suit. New super heavy suit with a much greater damage resistance and higher thermal performance. The HARMSuit is cooled via a liquid canister. It is effectively immune from the increased solar heating of solar storms. Due to its weight a jetpack cannot be used while wearing a HARMSuit, however a Hard backpack or mining backpack are still able to be worn.
  • Improved Liquid canister tool-tip to show a little more precision in its fullness tool-tip.
  • Added recipe for HARMSuit and HARMSuit Helmet to Tier2 tool printer.
  • Fixed build error.
  • Added back several accidentally removed poi's from europa that were present on the map view but could not be discovered.
  • Fixed missing scene commit from rev26073
  • Fixed bug where waypoints would get registered twice from their OnRegistered function.
  • Fixed bug where building a single waypoint and trying to set the next waypoint could crash the game. Have set max iterations when looping over waypoints.
  • Fixed spelling error on save list items days 'past' should be 'passed'.
  • Added Prototype Solar Storm weather event. It can be triggered using the command "Storm Start SolarStorm". Atmosphere cells and atmospheric containers exposed to the solar storm will experience greatly increased solar heating, solar panels will experience increased power output.
  • Fixed suits were not being effected by solar heating due to them being technically hidden in their slot.
  • Fixed console screens turning off when they are on the floor and the player is nearby. Have moved the player-in-range bounds slightly further back behind the console.
  • Fixed issue where having non .save files in your autosave or quicksave folder would cause saving to get stuck. Non .save files will now be ignored, however it is recommended to keep these folders for .save files only.
  • Fixed loading game with bad save data could get stuck on black screen. Some deserialization failures would return instead of throwing an error to be caught in the outer loadgame task. Have changed these returns to throw. Now, if load fails in this way, user should be returned to the title screen.
  • Fixed error in Russian language localization with wrong number of arguments
Thank You!
First of all, thank you all for the support. The terrain update was a massive undertaking for us and the response from the existing community, as well as all the new players, has been absolutely amazing.

We immediately broke our all time concurrent player record and then repeated that for several more days in a row.

Recent reviews rocketed up to overwhelmingly positive which is heartwarming to see.(if you haven't already, consider going and leaving a review, it helps a lot!)

Thank you!
 

Small Vending Machine
At a fraction of the capacity, with 12 slots, the small vending machine serves as some useful compact storage for anything from food to ingots. It's just one by three small grids in size, so much smaller than the large version. This repeatedly came up as something we wanted during a play session, and now here it is.




Terrain Optimizations and Settings
We’ve heard from many of you that you’re experiencing lower than expected fps with the new update, especially on Vulcan. We’ve done some optimisations under the hood to help improve terrain performance as well as exposed some new settings to give you better control when tweaking your performance.

Terrain Tessellation
Tessellation is a process performed on the GPU. We use it to define small details in the terrain like rocks and cracks. The Terrain Tessellation setting controls how finely the mesh is subdivided, these small subdivisions are then pushed inwards or outwards using a heightmap texture that matches the terrain color texture.



Terrain Detail
In order to render terrain out to 1.5KM, as we get further from the camera we sample voxel data at increasing steps to form terrain LODS (levels of detail). The Terrain Detail setting controls the thresholds at which we switch to lower detail LODS. Lower detail LODS bias downwards and tend to be smoother; distant features appear “flattened” at the lower quality settings.



Minable Render Distance
The Minable Render Distance setting controls the distance at which mineable ores are drawn.
NOTE: if this is set higher than the “Terrain Detail” setting distant ores will appear to “float” over the terrain.




Shadows
The Shadows setting affects the number of Cascades (Shadow LODS) and the distance that shadows are drawn. At lower quality levels we only allow large objects to cast shadows.





Community Localization
A big thank you to the community members who have provided us with comprehensive translations for Chinese(MRhythm), French(CedricDx and Gosti_FR), and Russian(AlexusYT) languages.

They created a git repository that's maintained and allows us to easily pull their updates directly into the game.

A big thank you to everyone involved!


Game Serialization Improvements
On some large bases people were experiencing game lag during saving. This was due to saving locking some processes for the entirety of the save process, including zipping the save. Saves now only lock game threads while necessary and release them before compressing the serialized data.


Steep Terrain Glitch
There was a visual glitch with the terrain data on Vulcan causing extremely weird normals on steep mountains. This means that we have regenerated the terrain data for Vulcan but we have kept the old map in the game but hidden so that those with a current save on Vulcan will not have to update their terrain data, this will mean that they will still see the weird normals on existing saves.




Indirect Addressing Fix
There was an issue with causing indirect addressing that was fixed by community member on Discord provided the fix for. Send your thanks to Elmotrix!


Your support makes these updates possible

https://store.steampowered.com/bundle/2624/Stationeers_Complete_the_Set/



Change Log 0.2.5919.26060

  • Fixed Jetpack sometimes not working when very close to ground. This could happen if the sphere cast started inside the terrain collider, added a sphere overlap to check for this case.
  • Added Deprecated flag to Vulcan WorldSetting.
  • Changed updated Dedicated Server help tip for valid worlds to hide tutorials and flag deprecated worlds.
  • Updated icarus suit helmet animation to fix visor poking through mesh when open.
  • Updated icarus suit helmet mesh with new mesh, fixing a few minor uv and vert issues.
  • Added function to format all commands as a markdown table for the dedicated server guide. Commented out for now but leaving there in case we want to regenerate it.
  • Reduced High minable render distance range a small amount.
  • Added Small y offset to distant minables to help prevent "floating" effect.
  • Changed scale in range of minables shader to be a fraction of the total render distance.
  • Fixed Jetpack would loose thrust when flying over lava. It now also evaluates the lava height when determining thrust efficiency.
  • Fixed un-localised slot tooltip for lander mkII.
  • Fixed a typo for one of Jupiter's moons. name has been corrected from "Hamilia" to "Himalia"
  • Added savetype 'manual' to possible types for loadlatest command.
  • Fixed Deep Miner destroyed state was invisible, caused destroyed Deep Miners to block constructions.
  • Fixed deep mining regions not showing up on the map motherboard for lunar, mars and mimas.
  • Added StructureVendingMachineSmall to the vending machine kit
  • Fixed Some Issues with the voxel data on Vulcan. This fix will only apply to new games created on Vulcan after this patch.
  • Fixed Some cases where regions and start locations were being direct referenced when interacting with a WorldSettingData.
  • Changed increased the distance of emissive terrain effects.
  • Fixed Grammatical errors in Moon and Mimas descriptions
  • Fixed Grammatical errors in Vulcan world description.
  • Fixed saving on very large bases was pausing the game thread for a very long time. Have moved unpausing the game tick to immediately after the snapshot of the world data has been acquired. After this the serialization and zipping will continue in the background. This should get the game tick pause time down to sub one second.
  • Added more logging to each save step.
  • Removed unused replaysaveload class.
  • Added a few more restricted characters to save names which where causing saves to fail.
  • Fixed an issue with indirect addressing for IC10 scripts. Thanks @Elmotrix for the fix.
  • Added missing blueprint for flaregun.
  • Removed some related assets, blueprints, animators and audio from already deleted weapon prefabs.
  • Fixed advanced composter not connecting to chutes correctly.
  • Terrain settings pass. Reworked and added some settings to help performance scale better on low-mid range hardware.
  • Reworked Terrain Tessellation Settings to more performant values. Added Extreme Setting and an off Setting.
  • Added Minable Render Distance Setting. This effects the render range of minable ores.
  • Added Terrain Detail Setting. This effects the Lod radius of the terrain meshes (at lower settings the near-to-mid distance terrain meshes will be less accurately rendered)
  • Added missing isKinematic checks to a few places where rigidbody velocity is set.
  • Removed references to missing scripts on a few cosmetic items.
  • Added Hidden Setting "MaxConcurrentWorkers". By default this is set to processorCount-1. Some users are reporting crashes or errors on load due to the 100% all-core-work-load terrain initialisation. This setting can be used to help mitigate application CPU usage for those users effected.
  • Fixed save folder names were being incorrectly trimmed if they contained dots.
  • Updated French, Russian, and Simplified Chinese localization files. (Credit: CedricDx(FR), Gosti_FR(FR), AlexusYT(RU), and MRhythm(CN))
This hotfix resolves three issues:

  • Error spam on death
  • An error when starting dedicated server
  • Aimee causing error in multiplayer
  • Fixed exploding canisters not destroying terrain


Change List

  • Fixed Clients would get interaction locked when picking up an Aimee.
  • Fixed Aimee Animation update was not getting formed correctly causing any Aimee on a server to break the bite-array de-serialise function and de-sync clients.
  • Added check to major update popup to not appear on dedicated server
  • Fixed error spam on respawn due to missing null check (thank you tom_is_unlucky)
  • Fixed Explosions from Canisters, Furnaces, Rocket and Trader collisions not digging out terrain.
This fixes the missing map motherboard recipe.
We believe this major overhaul of Stationeers was a necessary investment to help the project reach the wider audience it deserves. However, bringing this update to you meant taking a huge risk: pausing our regular 2-3 week updates. This has a direct financial cost, as player numbers and revenue taper off immediately without them. This project has always been more than just a job; it's taught us so much about development and, most importantly, how to build a meaningful relationship with you, our community. We've always strived to be transparent, and you've repaid us by being incredibly active and supportive. We believe this update can bring in many new players and this is where you can make a huge difference:

Spread the word: Make some noise on socials like Reddit and recommend Stationeers to everyone you think might enjoy it.

Welcome new players: Continue being the engaging and welcoming community that you are.

Leave a review: If you haven't already, please consider leaving a review for the game!

Support us directly: If you want to support us in the most impactful way, please consider purchasing our DLC.

Simon Brown - Project Lead

Your support makes these updates possible

https://store.steampowered.com/bundle/2624/Stationeers_Complete_the_Set/

The Terrain
We had to rewrite the terrain system to resolve some extremely buggy behavior as well as performance issues caused by even small amounts of exploration within the game. We did this by moving a lot of the terrain tasks to make better utilization of your GPU and have frontloaded a lot of the ram usage.
There are a number of new or changed settings. Two of the major ones that have an impact on performance are Tessellation, Shadows, and Distance Shadows.


This Stationeers update completely redefines the how terrain looks, how the game performs, and how connected you feel to the world while playing. Pictures below will do the speaking, but the new terrain looks amazing, and blows the previous worlds away. The maps are now hand authored with meaningful thought put into kilometers of expanses to explore. Yet at the same time, with this new approach performance has increased, terrain hitching has disappeared, and save files are a tiny fraction of what they used to be.



A New Look
The terrain is rendered with a completely new material that supports a range of features. The largest improvement is the ability for multiple sets of textures, representing multiple voxel types, to dynamically blend together. This is leveraged in many different ways and is a powerful tool for creating new and interesting planets. For example, on Vulcan there’s glowing rocks around the lava, while on Europa there’s a thick layer of ice and snow contrasting the black rock that lays beneath.



Regions
The maps are layered with regions that are used for different things, including names to help you become familiar with the maps and navigating. Additionally, points of interest add flavor, and more functional things such as deep mining regions and playarea bounds.




View Distance
The new terrain system can render kilometers of voxel landscape. Multiple voxel types can create mountain vistas with contrasting rocky peaks and snow layers. The voxel system also allows us to create several layers of perfectly integrated LoDs of decreasing resolution. With the old system the view distance was limited by the culling system and terrain loading requirements. This previously resulted in a short terrain rendering distance which was stitched together with a very low resolution distant terrain mesh.


Looking about 1.5km along the mars canyon


Underlying Data Structure
At the core of this update is the shift from a 8x8x8 voxel chunks to a voxel 'octree'. While the old system required data for every single voxel, data in the octree is only present where it needs to be. Large solid underground or open-air areas result in very little data needing to be stored. Only where there is actually complex topology does the data storage get more dense.

Multiple data structures are used to achieve the final terrain while avoiding performance problems. The world voxel data, which is a fixed size in memory and never changes allows for quick access due to its static nature. This is combined with another ‘delta’ octree, which starts empty and records the changes in the terrain. When the terrain is modified, we only dirty the delta octree. When we render or interact with the terrain we read first from the delta octree, and if nothing is there, we read from the read-only world data. Additionally, ore veins are now defined in their own tree-like data structure to not dirty the voxel structure unnecessarily. This provides us with definitions and controls to make them generate in continuous structures that subtly make mining different ores feel unique.


A visualization of how an octree segments the data


Moddability
A foundational goal for this overhaul was to make the entire world-creation process moddable and data-driven. We built a toolchain that allows anyone to create a world without ever needing to open the Unity game engine editor. We used this same process for our official maps; assets were generated in external tools and then imported directly into the built game. This opens the door for the community to use free tools to create and share entirely new worlds. However, be aware that generating a world is a memory and CPU-intensive process, so powerful hardware is recommended for it to complete quickly.




Worlds With Meaning
We’ve always wanted Stationeers to invoke a sense of exploration. Landing on a hostile planet and needing to construct systems to stay alive makes the planet the core antagonist. However, the previous terrain system just wasn’t up to task, as we discovered with our attempts to make Loulan an interesting place. Greater stress placed on the terrain and exploration would functionally remove performance that was needed for the base game. But with the new approach to world creation, we had the ability to make each map much more its own character.

Instead of the map being generated from random noise, each mountain can now feel unique. When you travel, you get a sense of position, and recognize far away features as points of reference. There are now vast frozen lakebeds, map dividing canyons, or towering ridges for the player to see and traverse. Additionally, we’ve used the opportunity to create biome like regions, named points of interest, and unique areas with ore distribution changes. This all contributes to you feeling much more connected to the map, and actually feeling like you are going somewhere else when you travel.


The Maps
We needed to redesign each of the planets in this new paradigm, but we didn't want to lose what made the old worlds unique. Rather than trying to replicate any specific elements of the old terrain properties, we used the mood that the old planets invoked to define the baseline for the new planets. Instead of trying to cram too much into one map, we made each world’s terrain interesting, believably consistent. The choices of terrain features didn't have to be the definition of the planet, since there are so many intriguing map ideas for us to make. This decision allows us in the future to create even more maps for planets without having to completely change what already exists.

Mars: The Canyon
We identified early on that one of the things that made the worlds feel different was the silhouette of the horizon. For Mars we wanted to maintain its characteristic rolling small hills that build into larger ones. With the new voxel types we were able to give it rockfaces and cliffs that gives it an open epic vibe. On of the test maps we used initially was a height scan of the Grand Canyon which we really liked and we decided to integrate a massive canyon into the Mars map as well.



Moon: Great Mare
The Lunar map was the first map we tackled and felt like it was an easy choice as there was not a lot of unknowns. We knew we wanted it to be a relatively flat surface cluttered with craters. To make it more interesting the map is set on the edge of a mare with some dramatic height elevation that cuts across the map.



Mimas: Impact
We considered the old Mimas felt a bit like a ‘Moon 2' but were not going to just replicate the moon for the new one. At its core it’s still a crater-ridden terrain but Mimas's point of difference is dramatic craters that rise much further up, and it features a crater so large that you barely know you’re in it if you’re standing near the center.



Europa: Colosseum
This is an example of us taking a dramatically different route. Europa is completely covered in snow with rocky, exposed mountainous ranges. Initially we wanted to create some areas that were representative of the original Europa with massive ice spikes, but it did not feel right and was hard to make work technically. This was a good example of us working to the limitations of what we built and playing and iterating with the world building team until we were satisfied. We had an awesome time playing on Europa for over two weeks and we only saw a fraction of the map.



Venus: Miasma
When looking at the old version of Venus the core feeling was best described as oppressive. We leaned into that with steep, towering, hostile ridged mountains permeating the map. The only respite from these mountains are the occasional shallow basins with toxic looking terrain colors, as well as dried up sulfur flats.



Vulcan: Foundry
The old Vulcan map was probably the most unique of the old planets and invoked a feeling that we wanted to fully capture in the new map. Everyone on the team felt that it was important to get this one right, so we slowed down and decided to expand our world building feature set to allow for more interesting lava and the ability to add fractures. The map itself went through many iterations until we landed on a craggy landscape covered in fractures and giant volcanoes. The lava means you can’t dig down too far, while the hostile landscape and environment make it hard to traverse on mining missions.



Out with the Old
Our previous terrain system had a critical flaw: it never unloaded parts of the world from memory. The more you explored, the more RAM the game would permanently consume, leading to unavoidable performance degradation. This functionally limited how far you could travel before the game became unstable. This core inefficiency led to other problems, such as bloated save files with long load times and noticeable in-game 'hitching' when actions like mining or explosions occurred.

Creatively, the system was a dead end; while the worlds were procedurally-generated, they were also homogeneous, with almost no meaningful variance. Traveling in any direction presented more of the same landscape, which limited the feeling of true exploration and prevented us from creating the unique, authored experiences we envisioned.





New Save System
The old save system was often described as unintuitive. It had confusing components, such as the backup system, which didn't always behave how people expected. A single save file misunderstanding could ruin hours of work and sour a day-long play session. So, there are two main new concepts to understand about the new save system - save files are now compressed into a single .save file and the save file structure has been changed to be a lot clearer.

The different kinds of saves we have are:



The save menu has been significantly updated, and each of these save types are displayed visually differently in the expanded save menu, to help you better understand your saves. In normal practice when restarting the game, you don't need to even expand this advanced save information, and just pressing the load button will continue your game.




Save Transformer
With all the changes to the terrain and save systems all previous saves are broken. The community has already created various tools for porting your old saves. Here's a link to JacksonTheMaster's(Discord Handle) tool. There's also a workshop mod that you can find from this website.

Stationeers Save Transformer by JacksonTheMaster




Multiplayer
We highly recommend not connecting using Steam P2P for multiplayer as it can cause desyncs and is not nearly as reliable. If the game tries to connect via Steam P2P you will be warned in game.
A major cause of client-side hitching was fixed: a bug that caused unnecessary waiting for atmospheric network updates. In our tests on large bases, this eliminated a 20-30ms frame spike that was occurring twice a second.


You may have caught EJ playing Stationeers with up to 20 players recently. Check out his Twitch here.

Beyond this, we made dozens of small changes and fixes that massively improve the multiplayer experience. Connecting to and disconnecting from servers is now much smoother and more reliable. During our internal playthroughs, once we had made these improvements, we regularly had up to 10 players online at once without any issues.


Community Walkthroughs
Three excellent walkthroughs using our tutorial system (Airlock, Smelting, and Manufacturing) made by community member, BigFootMSR(with his approval), have been officially integrated into the base game. Give him a big thanks for helping explain some of the more advanced parts of the game to new players.


Project Clinic Improvements

At RocketWerkz one of the most important things we do is play our games. Once we had our first new terrain complete enough to play, Europa, we stopped our regular development for over two weeks to simply play. Playing the game the same way as customers allows us to see where the game actually needs work. This is the core foundation for what we call project clinics. So, besides the Terrain work we have done a massive amount of bug fixing, adding content, as well as hardening and improving systems.

Beyond bigger stuff like the save and multiplayer improvements bellow you can quick fire list of all the things we’ve added or changed:


Move All Inventory Actions
You can now hold Left Control while dragging to move all items in a container, or hold Left Shift to move all items of the same type.




DensePool
A common cause of stuttering in complex bases is the process of adding and removing objects from large lists. To solve this, we implemented a new high performance data structure we call a DensePool. This system uses a "swap and pop" method, ensuring that our lists of objects are always kept tightly packed and efficient. We've refactored nearly every major system in the game to use these DensePools, resulting in a significant reduction in stuttering and memory usage, especially for large bases and busy multiplayer servers.


Multi-block Pipes and Chutes
Something that has been long requested, and during the construction of a big and spread-out base we once again saw a need for long pipe segments. While this is handy from a station construction point of view, it significantly helps reduce the number of things in the world which has a non-trivial performance impact. We then expanded this to also include chutes, which have a higher performance cost than pipes.



Logic System Upgrades
For our dedicated IC10 architects, this update delivers one of the most significant expansions to the logic system yet. We've focused on making your code simpler to write, more powerful, and far more intelligent, allowing you to create robust scripts that can dynamically adapt to their environment without throwing errors.

Streamlined Code with Direct Addressing
We've fundamentally streamlined how you reference devices. Previously, to read a variable from a specific device, you often had to load that device's ID into a register and then use a dedicated instruction like ld.

Now, core instructions like l (load), s (store), and all device branching instructions have been upgraded to support Direct Addressing. This means the instruction itself is smart enough to know if you're giving it a register, a device screw (like d0), or a raw Device ID. In short, you can skip the middleman, which makes your code cleaner and more intuitive.

Here's a practical example:
# THE OLD WAY
# You had to use 'ld' after moving the ID into a register.
move r0 123456789 # Move the Reference ID of a switch into r0
ld r1 r0 Open # Load the 'Open' state

# THE NEW, SIMPLER WAY
# The 'l' instruction now does it all.
# You can use the ID directly, or an alias.
alias myswitch 123456789
l r1 myswitch Open # Load the 'Open' state directly


Smarter Scripts with Dynamic Device Checking
We're also introducing powerful new branching instructions that allow your script to ask a device a question before trying to interact with it: "Can this variable even be read?" or "Is this variable writable?". This prevents your script from throwing an error and halting, allowing you to create universal scripts that can intelligently check what a device is capable of.
bdnvl <device> <logicType> <lineNumber>

Branch if Device Not Valid to Load: Jumps to the specified line if the logicType on the device is not readable.

bdnvs <device> <logicType> <lineNumber>

Branch if Device Not Valid to Store: Jumps to the specified line if the logicType on the device is not writable.

New Tools and Helpers
We've also expanded your creative toolkit with several new instructions. You can now create smooth value transitions using LERP (Linear Interpolation), and perform highly efficient data packing with EXT (Extract Bit Field) and INS (Insert Bit Field).

To assist with complex calculations, the Universal Gas Constant (rgas) and Tau (tau) are now available as built-in constants. In the IC Editor, these constants and all your variables will now display their live numerical values in yellow text, making debugging much easier.


A New Lander
A lander replacement has been implemented that replaces the old one and bring it in line with the drop pod you spawn in.




Planetary Mapping System



A new gameplay loop has been added that allows you to scan and view the entire map. By building a Map Motherboard and connecting it to deep scanners, you can launch a rocket into orbit to slowly reveal the planetary surface on screen. This also allows you to toggle the deep ore region overlay, so you can find new regions with different deep ore mixes.


New Computers
To better display your new planetary discoveries, two new computer variants have been added: a standing and a wall mounted version. These provide an excellent canvas for the new Map Motherboard, which connects to your rocket's deep scanning head to reveal the planetary surface as it orbits.




Rocket Gas Filtration Kit
This new machine is designed for harvesting resources directly from the atmospheric gas clouds of planets like Jupiter. To support this, you'll find new cloud mining nodes appearing on the space map.




Large Rocket Tanks
Two new large landing pad tanks have been added: a Gas and a Liquid variant. Each is 3x2x4, and holds 3000L.




Wide Airlock
A new, fully functional double-width (2x1) airlock, constructible from the Airlock kit.




Logic PID Controller
A PID (Proportional-Integral-Derivative) controller is a powerful tool for automation. It constantly works to minimize the error between a desired setpoint and a measured variable, making it perfect for tasks like precisely regulating temperature or pressure.




Compact IC Housing
A new, smaller IC housing variant with combined power and data connections for tighter placements.




Hard Hat
A new helmet that contains a built-in light.




Ice Crusher Rework
The Ice Crusher has been significantly reworked to be more intuitive, especially for new players who found the old version's lack of feedback confusing. It now features a new status panel that clearly displays what the machine is doing and any error states, a color-changing heating indicator light for at-a-glance feedback, and a physical temperature dial for direct and easy control over the heating process.




Cryotube & Sleeper Rework
The Sleeper now features a status panel that clearly shows how it works and if it's functioning correctly. The Cryotube has received a more significant overhaul and now requires a piped supply of cooled Liquid Nitrogen to operate. To make this new requirement clear, it includes an improved info panel that not only educates you on what's needed for it to function, but also displays critical medical data, including the organ damage values of any occupant.




Tracker Cartridge Upgrade
The functionality of the GPS Cartridge has been merged into the Tracker Cartridge. The old GPS Cartridge is now deprecated.




LED Display Upgrades
LED displays can now be set to show units (Kelvin, Celsius, Pa, etc.) and can display short strings of text sent from an IC.


High-Speed Mining Drill Buffs
The mineral drill's speed boost has been increased from 120% to 150%, and the ice drill's boost has been increased from 20% to 50% to better justify their high energy costs.


Improved Computer Interaction
You can now use Alt + click on computer screens, which makes UI interaction much smoother. This also allows you to open the IC editor while holding the laptop in your hand.


Emote Commands
You can now express yourself in-game with a range of new facial expressions, controlled via the emote console command. This system also includes automatic expressions for 'Death' and 'Unconscious' states for added immersion. The available commands are:






Known Issues

  • Some explosions, such as canisters, do not destroying terrain
  • The use of dr in IC10 scripts is not fully supported yet
  • Some rich ore deposits are not working correctly on the moon map



Pre-Terrain Branch
We've locked of a branch on steam called 'preterrain'. You'll always be able to go back to this if you choose.

Change Log 0.2.5903.26007
This post is too long to display the change logs so we have create a pastebin containing all the changes:
pastebin.com/LsbVNS7X

This update features some updates to the logic system, especially around traders, as well as some fundamental changes to the modding system, localization, and some nice new features, including being able to melt ice with your welder, as well as a lot of bug fixes.

It's been a while since the last update, and the reason for this is that we've been working hard on the new terrain system. While it is not included in this update, it will be available on the beta branch shortly after this update goes live.

Preview: Massive Terrain Upgrades (Beta Branch Coming Soon!)

The main goals of the new terrain system are to allow us to have more interesting play areas in hand crafted worlds, a better-looking terrain by reworking how it is being rendered as well as better voxel data for a much smoother terrain.

For now, here are some images and photos. These are test 4km x 4km maps, the final ones will be different and will be 8km x 8km. Keep in mind that these are all work in progress and things will be changing fast.


Walking across 1.5km across moon like crater. One of about 5 similar craters on this test map

The terrain system has been rewritten from the ground up

New level of detail system for distant terrain



Looking across kilometres of terrain on a test map



An alien world


Melt Ice Instantly with Welding Tools



You can now melt ice directly using the welding torch or arc welder. Simply aim at a stack of ice to start the melting process. This feature should make handling ice significantly easier, especially in early-game resource management.



Enhanced Automation: Trader Logic & Circuit Improvements



We've expanded the capabilities of the logic system, especially around trader automation and data display. The Medium Satellite Dish now includes an internal stack allowing integrated circuits to read detailed information about traders, their available goods, and even gas trades. Additionally, the Hash Display Circuitboard has a new Mode setting, enabling easy switching between Prefab and Gas/Liquid data, all controllable through your integrated circuits. These changes significantly boost the potential for automating complex trading setups.



New Achievements



Several new achievements have been added, offering unique challenges. Here are a few highlights:


  • The Spice Must Flow - Mine 10,000 units of Cobalt Ore.
  • And Yet It Moves - Track celestial bodies using a ground telescope at full alignment for 10 cumulative minutes.
  • Some Assembly Required - Write your first integrated circuit script.
  • Stack Overflow - Write data to the internal stack of another device via integrated circuits.
  • Soot Happens - Survive an Ash Storm on Vulcan (outside creative mode).
  • Why Is It Still Mark Watney? - Survive for 30 days consuming only potatoes or baked potatoes.
  • Syolnet Green is... Plants! - Harvest plants 1,000 times.
  • Khajiit has wares if you have coin - Generate over ten thousand revenue from trading.


We've also hidden a few secret achievements for you to try and uncover!



Localization Improvements & Multiplayer Connection Fix



We've made significant improvements to localization, addressing numerous translation and display issues - especially in Simplified and Traditional Chinese. Additionally, we've resolved a serious multiplayer issue that previously prevented connections for players with extended or special characters in hostnames. This should drastically improve connectivity for our international player community.

After this going live on the beta branch the community jumped into action and translated almost everything available meaning that ~99% of the XML data has now been translated for Simplified Chinese. We want to build a pipeline that will automatically include community localization but in this case they have been manually added to the build. A big thank you MRhythm for coordinating this!



Expanded Modding Flexibility

We've enhanced our modding framework, allowing mods to easily overwrite existing worlds, difficulty settings, and start conditions without causing conflicts. Additionally, modded content will now be clearly indicated in-game, making managing your mod library much simpler.

These changes will break a lot of mods. However, it fixes a lot of long-standing issues, some that have been there since launch.



Your support makes these updates possible

https://store.steampowered.com/bundle/2624/Stationeers_Complete_the_Set/



Change Log 0.2.5499.24517

  • Fixed missing recipe for gas mask
  • Fixed a few nullrefs which were stopping the main menu from showing up after failing to join a game.
  • Fixed a few terraforming exceptions on joining a game.
  • Fixed clients can't connect after engine upgrade.
  • Commented out some terraforming code (temporarily) which was throwing exceptions.
  • Fixed error spam when looking at drinking fountain when it has no pipe connected to it.
  • Added very basic saving and loading for new terrain (currently not async).
  • Fixed minables not generating deterministically in new terrain.
  • Added some more debugging for tracking terrain voxel densities.
  • Tweaked voxel debug position for new terrain.
  • Made terrain generate around point function generate in a cube instead of a sphere.
  • Fixed some chunks not generating if they are on the very edge of the world resulting in some holes in the terrain.
  • Removed mineable type from octree data. This will be stored elsewhere.
  • Fixed new terrain not saving in backups or autosaves.
  • Changed new terrain flag to be a symbol definition and added it 'Stationeers > Symbol Definition' menu
  • Fixed nullref when exiting tutorials.
  • Added Models and scripts for future content.
  • Added gameplay scripts and data classes for deploy action.
  • Added prototype deploy action to Rocket Space Map. This is in preparation for rocket deploy missions.
  • Allowed new terrain chunks to be different resolution.
  • Fixed possible nullref when mining on new terrain.
  • Fixed switchgrass had two mature stages.
  • Added the ability to melt ice using the welding torch or arc welder. This will call smelt on the stack of ice once every 0.5 seconds.
  • Fixed locker kit having the wrong default option selected. LastSelectedIndex was being serialized into the prefabs so it may have been affecting other kits as well. This field has now been marked as nonserializable so all kits will use their 0th constructable as the default.
  • Added Pneumatic Mining Drill to the Mining Supplies Package
  • Fixed low quality, pixelated lens-flare for the road flares
  • Fixed station batteries, small and large, not requiring frame support
  • Removed a couple of storm sounds that were too tonal.
  • Added more aggressive distance cut off for wind turbine audio.
  • Changed Reduced audio voice limit as a possible fix for audio stuttering and volume issues noted in larger bases.
  • Fixed SensorLenses would get burned by fire when worn while helmet was closed.
  • Fixed Glasses would get burnt when helmet slot was closed.
  • Fixed the broken build state of the Area Power controller being visible in the blueprint when placing it.
  • Changed audio voices back to 64.
  • Lowered large transformer reverb send.
  • Changed Some ambience audio clips to load into memory compressed instead of streaming from disk as the streaming thread was getting overwhelmed in larger bases.
  • Changed Rocket Avionics, Rocket downlink and rocket batteries to be single build-state devices. Build-states on these single grid devices was inconsistent with other devices in the game.
  • Tweaked priority of rocket engine sounds.
  • Fixed issue with filter degradation in the FilterMask when not being worn
  • Added work in progress chunk pool class and wrapper class. The intention of this pool is to be a normal object pool except allowing for if a chunk at a specific position is requested, and one already exists that has been used for that location and level of detail, it will be returned instead so that it does not need to be recalculated
  • Fixed Pressure Regulator and volume Regulator setting tooltip not showing input setting for back regulators.
  • Added chutes to meson scanner rendering
  • Fixed Meson Scanner not showing burnt cables and burst pipes
  • Changed some rocket manufactory recipes to used steel instead of iron
  • Deprecated old heat-exchanger devices.
  • Changed OreScanner, MesonScanner & Celestial Scanner recipes to: 5 silicon, 5 Electrum, 5 Waspaloy.
  • Fixed Rocket Uplink buildState used cable coil heavy instead of standard cable coil.
  • Fixed storms not moving items on dedicated server.
  • Added Every 4 mine actions undertaken at an asteroid deposit will add 1 scan point to the location.
  • Fixed Rocket umbilicals revert to closed state on load.
  • Fixed Inworld liquid could be hidden under floors & liquid visualiser would sometimes clip through ceilings.
  • Added Confirmation panel step to delete node button on spacemap.
  • Fixed small typo in english.xml
  • Fixed thumbnails for pickaxe and emergency pickaxe
  • Fixed thumbnails for composite wall 1 and iron wall 1 being incorrect in Stationpedia
  • Changed Stationeer Difficulty now has a 1.5x distance Multiplier between spaceMap locations.
  • Added SpaceMapDistanceMultiplier value to DifficultySetting. This Setting does not apply to the Distance to orbit.
  • Added the ability to close the large fridge from the inside of the door. The trigger collider used on the outside now extends through to the inside.
  • Added beds suspending life functions for humans. The ILifeSuspender interface now requires the class to implement IsSuspendingLife, instead of IsPowered, and leaves it to the implementing to decide what the requirements for this are.
  • Added automatically changing name from Recruit to the players steam name if it is found when loading the player cookie
  • Added new 4x4km grand canyon map for internal testing the new terrain system. It is currently not accessible in the game and will be enabled at a later time.
  • Added first pass on terrain chunks loading near dynamic things.
  • Made mineables generate correctly around player as chunks are created.
  • Added first pass on lod for distant terrain chunks.
  • Changed the display name of Insulated Liquid Tank Big to Liquid Tank Big (insulated) and Insulated Liquid Tank Small to Liquid Tank Small (Insulated) to bring the naming convention more in line with the Insulated Tanks.
  • Removed Duplicate ItemKitRocketBattery prefab.
  • Fixed mining was doing unnecessary work on zero density chunks.
  • Fixed some terrain chunks leaving small bits of unmineable terrain.
  • Fixed mining performance issue on large terrain sizes
  • Fixed nodes not collapsing correctly when mining on new terrain.
  • Made various improvements to chunk dirtying logic to remove allocations and unnecessary lookups.
  • Fixed mining new terrain doing unnecessary work subdividing nodes when sampling density.
  • Potential fix for T-Ray scanner throwing exceptions
  • Updated wrong texture file for Sugarcane plant.
  • Fixed Fragment Handler exception when de-serialising atmospheric data on joining a server with a very large base.
  • Changed reduced reverb on loud distant objects.
  • Fixed Meson Scanner throw exception trying to render an invalid batch.
  • Changed Gas Generator Audio Reverb setting.
  • Fixed "Setting linear velocity of a kinematic body is not supported" spamming in dedicated server console.
  • Fixed string Format error spam that could occur when looking at a pipe atmosphere or any other atmospherics device when the pressure inside was greater than 1GPa.
  • Updated Build a basic power setup helper hint to match Europa power supplies start conditions.
  • Fixed apc still works when destroyed
  • Fixed APC reversed blueprint
  • Fixed incorrect build-state tools on composite window shutter connector
  • First pass on improved lod system for new terrain.
  • Disallowed mining below bedrock level on new terrain.
  • Fixed can't close manual hatch when on a ladder
  • Made mining work again on new lod meshes.
  • Changed lod prefab so only lod0 meshes will have a mesh collider. This should speed up generation for distant lod meshes.
  • Fixed Some atmosphere grids get stuck with high winds on clients.
  • Fixed medium shelf blocking grid extending too far out from the front of the shelf
  • Removed old chunk object and replaced it with a non monobehaviour chunk.
  • Made mining work with lod meshes for new terrain.
  • Changed lod lookup to be an array of lookups, one for each lod level. This allows lod objects of different levels to exist at the same point which fixes a bunch of problems when multiple dynamic things are requesting lods of different sizes.
  • Improved performance of checking loaded/unload lod areas.
  • Added a min and max terrain height to trim out unnecessary lod objects far above and below the terrain bounds.
  • Fixed editor script being included in the build causing it to fail
  • Enabled smooth normals for angles under 30 degrees on new terrain
  • removed smooth normals for new terrain
  • Changed all power tools to consume a standardized amount of power (1000 joules) on use. A property was added (BasePowerUsage) that can be overridden on subclasses as necessary.
  • Added first pass of stack on MediumSatelliteDish. Added a small stack to the dish along with template for some instructions. These will allow the dish to read and write extended data associated with the current communicated trader. This will be able to be used to more easily automate trader contacting using the internal stack system on the dish itself.
  • Optimised collider setup on large Wind turbines. Colliders on the rotating blades was causing the physics tree recalculations every fixed up-date. Fixed update is now 1ms faster on large Europa playtest base.
  • Separated occlusion testing and rendering for mineables for new terrain system and made it allocation free. Occlusion testing is now done once per second but this is a first pass and will be made much smarter
  • Fixed Ice will now melt when put into DynamicGasCanister slot when the canister is empty.
  • Added a cached vector3 position to chunk objects alongside the Vector3Int to reduce the large cost of casting these every time we submit the mineables to the renderer
  • Updated the new mineables code to not use dictionaries as this was costing a lot to look up.
  • Added checking for mineable occlusion to the player moves event so that we are only updating the mineables when required while the player is moving around
  • Added an event that will run when the current player moves a about a chunks worth of distance
  • Added an AllTick that runs alongside ServerTick or ClientTick
  • Fixed AllTick being run every millisecond
  • Added first pass on pooling system for lod meshes.
  • Changed Ambient light mode from trilight to skybox when in game (it will remain as trilight mode in main menu scene and new world scene).
  • Changed added easing to transition in and out of eclipse so the change is less sudden.
  • Changed skybox settings during eclipse. Europa skybox will now experience a dawn moment, the sky will lighten, although some stars will still be faintly visible.
  • Changed Ambient Lighting settings during eclipse. Eclipse on Europa will still be dark, but terrain, mine-ables and structures will still be faintly visible.
  • Changed reduced the default ambient light max intensity value from 0.36 to 0.3
  • Fixed Default value for ambient light not being set on planets with no atmospheric scattering. This resulted in it retaining the default unity value of 800% an the terrain being very over exposed.
  • Stopped DynamicGasCanisters returning the relevant kit when being deconstructed after they have been broken. Created a new property inside the DynamicGasCanister script for getting the _hasBlown state.
  • Added TraderInstruction enum parsing to logic system.
  • Added second pass on internal stack memory for MediumSatelliteDish. Working implemenetation for TraderInstruction.WriteTraderData. This is written with the index to start writing at. Three instructions will then attempt to be written to memory, being the traders Id hash (its type), some trader meta data, and then some signal data. Third pass will feature implementations for filtering actual trade buy and sell data into the stack, not just meta data.
  • Removed temporary property from DynamicGasCanister left over from previous commit.
  • Made lod requesters remove themselves from lods correctly when destroyed.
  • Fixed RocketMotherboard required a connected rocket in order to open the map. The panel will now open with no valid rockets connected, but certain rocket specific fields will be blank/un-interactable
  • Changed layout launch mount nodes with relation to home planet nodes on the space-map. Launch mount symbol now appears laid over the plant and rockets travel "up" into orbit.
  • Moved some helper functions into a dedicated LodHelper class.
  • Fixed several issues where lod objects were being queued up for generation multiple times.
  • Fixed two dynamic location panels created for starting node when loading game with existing launch mounts.
  • Added Third pass of internal stack for MediumSatelliteDish. WriteTraderData will write three meta data memory to stack. WriteTraderBuyData will populate the stack at a index to a max count with buy data, WriteTraderSellData will do sales. This will populate the stack with their respective packed memory. Only working for trades that are items, currently, but this will change. Currently you can use filtering, but the filters are applied to everything. Intention is to change this to only use that since the last Write command, but that will come in third pass. Non valid (i.e. old) WriteTraderBuyData or WriteTraderSellData will be cleared when next tick is processed.
  • Removed apply queue for terrain mesh jobs as it is not needed.
  • Added ability to pre-populate lod pools.
  • Removed unused Obi Solver plugin as it was causing builds to fail.
  • Experimental fix for multiple concurrent clients joining causing multiplayer desync issues.
  • Prevented DynamicThings from taking damage while inside a parent slot that hides them. They still take damage if not hidden.
  • Added Gas Type trading to the MediumSatelliteDish Internal Stack. Now basic gas trades both buy and sell will be added to the internal stack. Their gas types will be condensed into a single bitflag that can be interrogated for gas types.
  • Added overlay text option for ImGuiDebugHelper.
  • Removed unused test lod requester class.
  • Added Fourth pass of internal stack for MediumSatelliteDish. Now have Buy and Sell Child prefab data loaded into the stack. Additionally Gas data is loaded into the stack as well. Filters are applied to child items as well. Now fully functional at interrogating trader inventory. Next change will ensure the filtering is local to that "block" of write instructions, allowing the internal stack to be segmented for multiple requests.
  • Added Fuel Mix and Air Mix GasType enums, as these are just a flag combination. They now have recognized sprite images as well. This means that the Hash Display circuitboard will recognize Air (Oxygen and Nitrogen) and Fuel (Volatiles and Oxygen) and display an image for that. Useful with traders.
  • Added Hash Display Circuitboard now has Mode, that is used with the new HashType enum, with both HashType.Prefab (default) and HashType.GasLiquid. Consoles now accept setting their circuitboard mode via the logic slot set/load instructions (ss or ls). This allows you to set a console circuitboards mode from IC.
  • Fixed Harvester contained coroutines. Moved to Unitask reducing potential for memory churn when TryPlantSeed or TryHarvestPlant was called via any IC scripts, which could be often.
  • Fixed DEFINE instruction would produce NaN as it was configured to not check Enums or other defines.
  • Cleaned up some of the achievement code a little, with some minor optimizations.
  • Added "The Spice Must Flow" Achievement for mining 10,000 Colbalt Ore.
  • Added "And Yet It Moves" Achievement for tracking celestial bodies using a ground telescope at full alignment for ten minutes cumulative.
  • Added support for stat based achievements
  • Added "Some Assembly Required" Achievement for writing a script to an integrated circuit.
  • Added "Stack Overflow" Achievement for writing to the internal stack of another device using an integrated circuit.
  • Added "Soot Happens" Achievement for surviving an Ash Storm on Vulcan when not in creative.
  • Added "Why Is It Still Mark Watney?" Achievement for surviving for 30 days eating only potatoes or baked potatoes.
  • Added "Syolnet Green is... Plants!" Achievement for harvesting 1000 times from plants.
  • Added an Achievements command for debugging achievements.
  • Optimized the Update100MS and Update1000MS method caching as well as made their assessment automatic, meaning that those using the methods in future won't have to also remember to update the "Is" method.
  • Added "Khajiit has wares if you have coin" achievement for over ten thousand revenue from trading.
  • Added a hidden achievement.
  • Removed steam check before awarding achievements. This check was redundant. It also generated a lot of memory garbage, as it was looking through all steam achievements each time. Additionally more minor cleanup to achievement code, including auto generating more of the backing dictionaries. This makes it much easier to add new achievements.
  • Added three more hidden achievements.
  • Fixed use of Allocating Physics commands that have been replaced with non allocating version. Note: this will limit explosions to interacting with a maximum of 1000 colliders. This is quite a lot. Previously explosions were causing a lot of memory garbage to be cleaned up. Now it will not cause this, but there is a hard cap of 1000 things being interacted with. This might need some refining further.
  • Removed Old terrain lod when new terrain flag is active.
  • Changed LOD settings to increase render distance of new terrain from (4,4,4,4,4) to (8,8,8,8,16). This pushes rendered terrain out past the far clip plain distance.
  • Reverted change to terrain job processing to ensure we wait to finish jobs before the next frame.
  • Added difficulty setting for calm weather period multiplier. This will, if set, multiply the initial calm weather grace period at the start of a game.
  • Added difficulty setting for Achievements. Modders can set or use this with any modded difficulty settings. All difficulty settings work for achievements except for the "creative" difficulty setting, which by default is "disabled".
  • Removed duplicate IThreadedWorker class.
  • Changed LodObjects that have requesters to have a 10x load value.
  • Fixed thread profiler not working with terrain threads. use profiler enable command to profile terrain threads.
  • Added "spherising" to new terrain shader
  • Added ability to have voxel type in octree. Not fully implemented yet or used for anything but the option is there and can be used for multiple things
  • Added calculating normals from voxel data to achieve smooth normals
  • Made ProcessJobs wait for executing lod object jobs as soon as ExecuteAll is called. This may be less performant but does fix error spam and a few strange issues where the dirty indices array would not be emptied after all jobs were finished leading to some lods not being able to be dirtied again. More improvements to come on this.
  • Added various different data classes now receive what mod they are being loaded from as part of their initialization, allowing them to remember what mod they are from for later display.
  • Fixed the spawn item data in the new world process was very large text, using headers for the whole lot. Now they are sized the same as the rest of the text. Additionally there was a whole bunch of background image gore with how the UI elements were rendered, this has been cleaned up with icons to indicate better what can be clicked on and what cannot be.
  • Fixed the mod load order was being done in reverse. This needs to be checked, but it was very unintuitive. The mods were being loaded in the reverse order from what was displayed visually - probably confusing a lot of people.
  • Added image that shows over top of modded Worlds, Start Conditions, and Difficulty Settings. This means that you can see what content is modded or has been overwritten easier.
  • Added Difficulty Settings can now be overwritten with mods. If a mod is loaded, and the difficulty already exists, the mod will overwrite that difficulty setting instead of throwing an error and stopping as it currently does.
  • Fixed incorrect spherical effect variables on terrain2 material
  • Cleaned up the starting equipment list to make it more readable.
  • Added SortOrder attribute option to world settings, so that modders and others can sort the order their worlds will appear in the world settings list.
  • Added a yellow mod icon to the starting screens so you know if data is being overwritten or loaded from mods.
  • Fixed mods could not replace various things, such as worlds or difficulty settings. Confirmed that mods can now replace worlds, difficulty settings, and start conditions. You don't need these to be different file names either, the XML is very permissive. This should allow, now, the replacement of pretty much anything data wise in the game that in the past would throw errors (such as star maps).
  • Fixed modconfig.xml was being generated inside the executable folder, or trying to at least. This caused critical issues and wiped the mod order constantly, breaking mod loading for GeForce now users and lots of other people. But even if that had worked, the mod loading was broken anyway. Now the mod loading is done in the order displayed in the load order list, loading the "core" mod at the spot indicated. There may be issues with this that still need to be resolved. The modconfig file will now be generated in wherever save and settings files are generated.
  • Removed sever expensive memory allocations for new collections in the Lod requester logic. These collections are now cached and reused.
  • Changed LodManagers work loop to be state-based. The manager now goes through one step each frame. certain steps like applying the meshes or waiting for the jobs to complete will run over multiple frames to ease frame-time spikes.
  • Added caching of marching cubes object as well as the mesh object to the lod object to reduce allocations
  • Added back face rendering to terrain terrain. This helps a lot with terrain seams and should help us hide them in a naive way without the need to perfectly fix them in an expensive way
  • Moved consolidation of queued up lod changes to where job are assigned. This helps to fix missing lods in some instances.
  • Fixed Upright wind turbine data can't be read as the port is power only. Changed the port to be power and data. (Credit: Tsoleht)
  • Fixed Sun flare not showing through the glass of the StructureCompositeWindowShutter prefab.
  • Rewrote new terrain shader to fully support the required features and removed a lot of the unused features
  • Fixed rare null reference occurring when autosave is attempted during a specific phase of character death.
  • Lods will now overlap at lod boundaries to hide seams (wip).
  • Fixed Tablet not working until hands are swapped if it was in the left hand when the player loads a world.
  • Fixed VoxelTerrain.cs generating 50kb GC per frame due to multiple new array creations in the Minable batch rendering code. Refactored to use pre-allocated array and removed all GC allocations.
  • Fixed if statement formatting for previous commit
  • Changed OnNextDay to be specific function calls rather than a subscription delegate event list. This is much more readable and debuggable in the code, and reduces memory churn. Added the IOnEachDay interface that is checked against to make it easy to add classes to this. Entity was already using this kind of functionality so it has been migrated to this, reducing memory churn when instantiating new entities such as chickens and players.
  • Added a timeout on the capsule lander light. It will now stop working at the end of the first day.
  • Changed IAnimComponent to use a serializable base class and then cache it only when generating the base prefab. This means each time it is instantiated a GetComponentOnChildren does not need to be run, as this was always being run for everything thing when they were instantiated.
  • Fixed a serious potential issue that prevents joining or hosting multiplayer games with hostnames that may contain non-ansi characters. This potentially affected a number of users who are using different languages and their computers or the destination hosts were using an extended characterset. A new and more advanced system is used to get the current host ip, however this requires extensive testing. It may also fix some other hostname issues that players are experiencing.
  • Changed reduced the amount of the most distant terrain Lods as they were over the horizon.
  • Changed Mineables are now only rendered on LOD0 Meshes and on chunks that have a rendered mesh (i.e only mineables that are close to the surface are rendered)
  • Changed some VoxelTerrain functions and fields to be static.
  • Added Some profiling tags
  • Fixed LodMesh prefab not on terrain layer.
  • Changed tooltip when hovering over the handles of the CrateMkII from saying "Button1" to "Drag" to bring it in line with the DynamicCrate.
  • Fixed some text boxes contained illegal string keys and would cause exceptions if they were localized.
  • Added additional localization commands to assist with debugging and fixing localization issues.
  • Fixed a number of text renderers had no font switching occurring and did not have localized strings. More of this to follow.
  • Fixed a variety of font and localization issues with Simplified and Traditional Chinese (credit: MRhythm)
  • Fixed a massive quantity of localization issues due to missing calls for Localized font. This includes the Hash Display, trading screens, spawn screens, and others. (credit: MRhythm)
  • Changed LodObject helper class to be pooled. This reduced the amount of GC allocation when requesting and un-requesting terrain lods.
  • Changed increased the size of the LodMeshRenderer pools (the lower level lod pools now have a much larger starting count)
  • Fixed a performance issue with Objectpool class where returning an object to the pool could be very expensive for large pool sizes.
  • Cleaned up lod classes a little, made pooled mesh object use naming convention for pooled objects.
  • Moved the lod object pool to a new LodObjectCache class which will also hold and manage the lookup for currently active lod objects. This is because these two things are tightly coupled - getting/returning from the pool will add/remove from the active lookup.
  • Added additional checking for prefabs to the localization checkkeys command.
  • Fixed 42 missing strings for prefabs. (credit: NoName)
  • Fixed dedicated server build failure due to missing server specific imgui helper function definition
  • Fixed could spawn under terrain when terrain height at starting point was higher than 40m.
  • Increased distance of GetSafePoint for spawn raycast.
  • Removed unused debug draw on lodmeshpool
  • Fixed missing RW_Server check in localization.cs
  • Changed ImguiHelper class to be active when RW_Server defines is enabled. This should help prevent some dedicated server builds failing.
  • Refactored access to the terrain octree to be accessed only through the voxel terrain manager instead of directly accessing it
  • Fixed error spam when reloading into a world caused by pools not being correctly reset.
  • Changed lod object pools to have one pool per lod level.
  • Added back missing code to remove rendered mineables from a chunk when returning lods to pool.
  • Fixed a few instances where lods would render around dynamic things when they shouldn't
  • Reverted Imgui changes from rev24361 to test if they were the cause of steam build to failing to run.
  • Fix for Dedicated Server build issue.
  • Reinstated Imgui Change from rev24361 as it was not the source of build issue.
  • Changed LodManager now only moves off idle state when it has pending work to do.
  • Fixed Black seems at lod overlaps. Overlap meshes shadow casting is now disabled.
  • Made dynamic things request new lods after they have moved a set distance rather than when their chunk has changed.
  • Fixed rendered mineables not being cleared when leaving a game.
  • Removed unused TerrainManager class.
  • Added desired depth parameter for getting octree density. This fixes marching on higher lods not sampling corresponding higher octree levels resulting in very large seams.
  • Changed lod bounds to extend out into the next lod by one rather than back into the previous lod by one. Turning off shadows on the boundary is less reliable now as the next lod up will not always be higher so have removed setting of boundary indices for now. Will revisit this.
  • Removed the remainder shadow boundary culling code as it was no longer required.
  • Changed Liquid Particle solvers to have their game objects deactivated when idle. The particles had quite a high physics overhead when sitting idle in the scene. This will mean higher cost to physics system when water is spreading as the activation and deactivation of particles causes some physics tree re-calculations.
  • Fixed null ref when closing and then creating a new game.
  • Fixed an issue where Sounds triggered by interactables were calling play logic multiple times.
  • Fixed an issue where Looping sounds that were paused for concurrency were getting stopped.
  • Added Concurrency setting for wall light sounds. (on-going work to reduce number of virtual voices in large bases).
  • Fixed OnOff sound reversed for wall light.
  • Added Audio Concurrency Setting for Atmospherics Devices and Volume pumps to reduce number of virtual looping sounds on large bases.
  • Added AudioUpdate for things that need to change audio values on a regular tick. (this logic currently runs in UpdateEachFrame but can be moved over as an on-going effort to reduce update churn)
  • Changed Things that run updateEachFrame now have this cached on the prefab on prefab load (in the same way as 100ms and 1sec update is handled).
  • Removed some unused shadow changing code on the lod object.
  • Added TerrainSettings to world settings data for loading individual octree terrains with their respective settings and textures.
  • Changed Furnace audio to be distance culled. Added audio concurrency setting for furnace and arc furnace audio.
  • Changed Moved Furnace and character audio logic into audioUpdate.
  • Changed Audio Update does not run in batch mode.
  • Fixed a tooltip issue where it incorrectly indicated that the stack in hand was full when hovering over another item in a locker. The tooltip now correctly appears when the player has a full stack in their active hand and is hovering over another stack of the same type inside the locker.
  • Changed Move Audio Behaviour for CombustionCentrifuge from UpdateEachFrame to AudioUpdate.
  • Added Audio Concurrency Settings for Deep Miners and Centrifuges.
  • Added SuitStorage to PoweredDevices AudioConcurrency.
  • Added Audio Concurrency Setting for Batteries & Transformers.
  • Changed Moved WindTurbine audio logic onto AudioUpdate and added separate audio concurrency setting for large wind turbine.
  • Fixed prefab audio issue with on windturbines on previous commit.
  • Fixed a few issues where lod meshes were not being returned correctly to their cache.
  • Smoothed suit foley audio to suit slower audio tick rate.
  • Fixed Recursive call in PooledAudioSource.ReturnToPool(). It was calling Stop(), which would recursively call ReturnToPool.
  • Added warning for possible issue when already returned lod meshes are returned to the pool again.
  • Fixed HighPassFilters not being disabled when audio-sources were disabled.
  • Further smoothed character foley audio.
  • Removed HPF Filters from wind-turbines audio to reduce their DSP load.
  • Changed moved some more classes over to using AudioUpdate.
  • Changed reduced ambient light during eclipse on Europa.
  • Changed Ambient audio loadType back to streaming.
  • Changed Temporarily disabled out of bounds check and Made Terrain not block atmospheres until issues are resolved with these functions.
  • Added TerrainSpawnRequest class for spawning initial terrain colliders around player spawn location.
  • Fixed bug where if the player is a client and has the IC editor window open and a storm happens, setting the pause toggle button to true would cause the player to get pushed around by the storm while their screen does not update. Setting the pause button to false after that would push the player back to their initial position. The player no longer moves when the pause toggle is true under those conditions. Caused by clients being able to pause the game when they should not have been able to.
  • Refactored LodMeshCache to more clearly define the difference between deactivated and uninitialized objects.
  • Renamed LodMesh to LodMeshRenderer
  • Fixed Client being able to pause their game from using the pause button inside Stationpedia in multiplayer. The pause button now has no effect in multiplayer.
  • Changed moved request Lod logic into LodManager Update loop.
  • Fixed lumps around mine-ables with new terrain.
  • Added rolling lookup for lodobject state to track empty lod objects that do not require mesh recalulation.
  • Changed recursive RunJobState method into a while loop.
  • Reverted spawnpoint changes for now as the terrainspawnrequest was causing some missing lods. Will try using the octree data to determine spawnpoint instead.
  • Fixed player spawning under the terrain. Will now look at the octree to determine where to spawn.
  • Added check to stop moved things requesting lods multiple times in the same frame.
  • Cleaned up creating of new lod objects.
  • Added total count to lod object cache.
  • Changed the lod object pool over to a more simple pool system which incorporates the active lookup concept rather than using the object pool alongside another active lookup. This saves having the active lod objects in two active collections. This also fixes several issues with missing lods due to a long-standing bug with the old pool system.
  • Added another hidden test map into temporary folder in streaming assets. Folder/file structure is still wip.
  • Changed max terrain height in VoxelTerrain from 64 to 256. Terrain height information will eventually be moved into xml data.
  • Added check so lod deletion queue can ignore already deleted lods.
  • Added New Minable Generation algorithm and data classes. Weights are equally assigned for now to leave an even distribution of generation shapes for easier review.
  • Changed sizes of lod object pools based on lod level. Will tweak these as we establish reasonable upper bounds.
  • Changed normalised Minable density setting. 1 is now standard density.
  • Optimised minable vein placement algorithm.
  • Fixed World-size not being applied to voxel terrain on loading map.
  • Fixed issue where putting a ProgrammableChip into an advanced tablet would cause it to clip through the screen. This was happening because the OnEnterInventory method for the ProgrammableChip was overridden without calling base.OnEnterInventory.
  • Changed exception to a console window error when reactivating a lodmesh that is already active.
  • Upped the pre-populate size of the level 4 lod mesh cache.
  • Fixed Valve flow direction arrows being applied incorrectly to the digital valves. The digital valves can mix fluids in both directions but the direction arrows present when trying to construct either of them implied that the flow was one-way.
  • Moved Minable RenderBatch Generation onto OcclusionManager threaded work.
  • Increased Minable render distance to 96m.
  • Added Minables can now be mined.
  • Fixed ThreadWorker.Workers and ThreadWorker.NextWorker were incorrectly set to static.
  • Added VeinGenerationWorker class.
  • Refactored Minable Vein Generation to be multithreaded.
  • Fixed issue where SuitStorage would not remove gas from stored suit's waste tank if the suit had no internal pressure. This meant that it would work normally if moved from the player's suit slot directly into the SuitStorage, but not if dropped on the ground first.
  • Fixed respawning not cleaning up lods for old player body. Now on respawn, lods will be cleared and regenerated. Still more work to be done on this.
  • Added remove requesters step to lod manager processing.
  • Added restriction for generating lods so it won't generate at values less than zero. This may be updated to use map specific sizes.
  • Added back in lod object debugging and removed some unused chunk debugging code.
  • Made dynamic things stop/start requesting lods when they enter/exit a slot
  • Fixed OutOfBounds terrain being rendered.
  • Removed 4k test map.
  • Added 64m and 128m test maps with offset correctly authored.
  • Fixed Offset not being correctly applied to terrain resulting in spawning in a corner of the map. This issue was compounded by our test maps being incorrectly authored.
  • Added new 4K test map with correct offset values.
  • Changed Some VoxelTerrain functions to be static.
  • Moved Minable Textures out of resources folder.
  • Simplified DrawMeshInstancedIndirect.cs and cleaned up to be allocation free and removed a number of unused methods.
  • Added Spherization to Minables shader.
  • Optimised Minable rendering to use DrawMeshInstancedIndirect.
  • Fixed issue where social media buttons would not work when clicked inside the GameMenuPanel but would work when clicked inside the MainMenuPanel. This occurred because the method for the buttons in the GameMenuPanel was not set.
  • Fixed bug where multiple requesters could not find existing active lod meshes.
  • Moved stale lods list into lod manager.
  • Moved remove lods into its own step in run job state.
  • Fixed lod mesh cache getting into a bad state when lod object meshes are cleared before re-processing. Lod object meshes will now be retained if they are still active.
  • Fixed hitching when executing terrain jobs due to too many worker threads being initialized. Will now use processor count - 4.
  • Changed 64x63 test map to use only full voxels (the other test maps have a layer of half voxels several layers deep that make mining feel weird)
  • Hooked up old mining behaviour to new terrain system.
  • Fixed Build Error
  • updated 4096x4096 text world to use correct ore weights and mine amounts/times.
  • Changed Moved ore goggle meshes to XML data.
  • Fixed Ore Goggles now work with new terrain.
  • Increased render distance of explosives.
  • Added Staggered explosion behaviour to remote detonator.
  • Fixed Explosions now work with new terrain
  • Fixed Missing Shader form previous commit.
  • Changed 64x64m test world to have maximum ore density.
  • Moved vein registration into oct-tree space (to ensure consistent behaviour when doing integer division for registration).
  • Added vein de-duplication step for new vein generation algorithm (prevents minables of multiple types from generating at the same location).
  • Fixed Dirt Canister not showing DirtCanisterState if it was in the world and did not have a parent Voxel Tool
  • Added first pass on separating terrain deltas from map terrain data. This is to lay ground work for serializing terrain delta state.
  • Changed Delta Node now calculate their partner node on the readonly octree as needed rather than caching a reference to it.
  • Refactored some functions in VoxelOctree that had unclear arguments.
  • Fixed Items fall through the world when loading a save with new terrain. Added InitialiseLodsOnLoad() to LodManager which generates all requested lods in a single frame before unpausing game on Load.
  • Added NewTerrain now only serializes delta changes rather than full terrain file.
  • Fixed an issue where new terrain would not deform when explosion happened.
  • Added flood fill method for filling voxels inside the terrain mesh.
  • Added a few helper methods for getting neighbour nodes from any given octree Node.
  • Added Clients now receive New Terrain deltas on join.
  • Fixed Issue with Dirt Canister not showing the correct DirtCanisterState in the world or on the client. This was caused by the SetDirtCanisterState method not being called at the appropriate times.
  • Added Clients now receive terrain change updates from server.
  • Added horizontal size to floodfill to stop the progression if the edges of the map are reached. This should just be a precaution as the map will usually fill the entire octree horizontally.
  • Added new method for generating terrain from a heightmap that only generates a "crust" and then floodfills under it which is much faster than before. This also fixes the "spongy" terrain that we were experiencing before
  • Added missing horizontal size to floodfill
  • Changed UV coordinates for charging bars color.
  • Fixed Visualizers on the DirtCanister prefab. Incorrect visualizer meshes and UVs were being used.
  • Fixed a small issue where Client joining a session threw a null reference exception and prevented the host from continuing to play. This was to do with the new terrain trying to be loaded while the terrain settings were null.
  • Removed some unused debug functions from VoxelTerrain.
  • Fixed Voxel tool now works with new terrain.
  • Cleaned up some places where vector3s were being handle ambiguously in terrain and minable functions.
  • Fixed new Terrain and minables did not align with the large grid. When the terrain mesh and minable position is set they are now offset by 1/2 voxel size.
  • Added function on node to get siblings directly below.
  • Added new fill method for octree.
  • Fixed an issue where the Voxel Tool would not use the last bit of dirt inside the equipped Dirt Canister. This was caused by an incorrect comparison in CanRemoveDirt that checked if the CurrentCollectedDirtValue was greater than UsageEachVoxelPlacement, instead of greater than or equal to.
  • Fixed Desired depth not being evaluated correctly in getDensity function. This fixed the last of the terrain seam issue and improved fidelity of distant terrain.
  • Fixed a number of places were a depth argument was taking in a size for octree calculations (and updated those functions to work correctly with the correct input).
  • Changed baked terrain data is now stored in a ReadOnlyVoxelOctree, changes made by the player are stored in the object based tree VoxelOctree. This results in a 90% reduction in terrain ram usage 6GB to 600MB and a 70% reduction in terrain load times 13s to 4s (tested on 4k map).
  • Added ReadonlyVoxelOctree class this is a highly optimised octree that is backed by a byte array and is readOnly.
  • Added some additional debugging info for terrain performance testing,
  • Fixed a performance issue with ReadOnly octree which was causing get density function to take too long to run.
  • Added HelpText for TestOctreeCommand.
  • Removed un-needed locks on some lod Manager functions (all calls were coming from main unity thread).
  • Changed Terrain Lods will now refresh faster when there is less work scheduled (i.e during mining).
  • Fixed Bug where having sequential ladders on opposite sides of a wall would cause the player to teleport to the other side of the wall.
  • Added changes to New terrain ore veins are now saved and synced to clients.
  • Added wip octree fill method which is significantly faster.
  • Cleaned up relationship between readOnly octree and delta octree.
  • Added IOctTree and INode interfaces.
  • Fixed VoxelTerrain.MaxDepth pointing to Octree when ReadonlyOctree was initialised.
  • Changed Octree Constructor to require a pointer to a masterOctree it can be null if the constructed octree is the master Octree.
This hotfix resolves the critical multiplayer bug preventing joining any server. It also contains some other minor fixes such as not going back to the main menu after failing to connect to a server.
This hotfix adds the missing recipe for the gas mask.

Additionally, we are aware that there is a blocking issue with multiplayer and will deploy a fix as soon as possible.

In the meantime, the 'previous' branch has been updated so you can safely play multiplayer using that branch.
Engine Upgrade
We've updated Unity to align with our other projects and leverage recent editor improvements. While most changes will be invisible in the final product, some saves may see minor performance gains.

The update spent extra time in Beta since upgrading engine versions often introduces risks. For example, this update caused significant UI issues, which should now be resolved. However, please report any lingering problems. As noted in a recent post, our beta userbase has decreased due to more frequent updates, which has also reduced issue reporting.
 

Gas Mask
The new Gas Mask accommodates two filters, filtering specific gases while blending with the ambient atmosphere. This feature is particularly useful for managing contamination in bases or isolating sections with abnormal atmospheres.


Bespoke Storage Options

We've introduced bespoke storage options: single-slot shelves designed for specific items. The initial implementations are for the Gas Mask and Fire Extinguisher, both emergency items that benefit from being easily accessible.




Future Content

In the change log you will see a lot of work is being done on the terrain update as well as some other features that will be released at a later time. You won't find any of this enabled, but we will post some screenshots soon with our progress.
   

Your support makes these updates possible

https://store.steampowered.com/bundle/2624/Stationeers_Complete_the_Set/



Change Log 0.2.5366.24104

  • Added first pass of global vegetation visualiser. It currently shows the global count of gorse, flax and grass and uses the clutter system to draw them.
  • Fixed soybeans not inhaling Nitrogen. Added life requirements data for soybean and updated plant.xml for soybean to point to the new life requirements data.
  • Added Grow-able plant versions of the Global Vegetation plants: Grass, Flax and Gorse.
  • Fixed null ref when looking at certain plants with the plant analyser tablet.
  • Fixed ImGui related build issue.
  • Added first pass on new terrain generation and put it behind a feature flag.
  • Removed some references to deleted objects in the worldmanager.
  • Removed some unused classes.
  • Committed removed metafile for terraforming script.
  • Fixed editor script being included in the build
  • Fixed Global Vegetation was using incorrect model for gorse and flax.
  • Fixed NRE when deconstructing iExtendable Structures.
  • Changed clutter chance calculation to use System.random as simplex-noise algorithm was not returning an even spread of results.
  • Added Models and scripts for future content.
  • Added easier to use debug helpers for imgui
  • Added first pass on mining new terrain.
  • Fixed error in WorldManager prefab instance in Scene.
  • Updated unity version to 2022.3.7f1
  • Added default colors for imgui debug methods.
  • Fixed an issue loading old saves with active weather event whether a partial weather event could trigger. (i.e items would get damaged and force applied but no weather effects)
  • Added scripts and prefabs for future content
  • Fixed Error spam when using vegetation debug command.
  • Changed Power Generated by wind turbines during storms is now effected by the storms wind strength, it will vary over time during the storm rather than be a fixed value.
  • Fixed mining new terrain was not subdividing octree in certain instances.
  • Fixed terrain generated from heightmap was offset from origin.
  • Improved performance of mining on new terrain (more improvements to come).
  • Fixed Performance regression in UI Update loop caused by creative spawn panel. There are still a number of issues with the panel so plan is to replace it with a new system as it is very old and poorly optimised.
  • Updated rider unity integration module
  • Updated unity linux toolchain modules
  • Fixed a performance issue with OreScanner cartridge. Players with one or more OreScanner cartridges in their saves will see increased fps.
  • Changed Global Vegetation can now use any plant type. Global vegetation plants now have a GeneCollection that represents the global average genetic make-up.
  • Added Dynamic Atmospherics Scattering driven off GlobalAtmosphere composition. (Only enabled when mixing to GlobalAtmosphere is enabled)
  • Added white GGHost logo to PreferredServerProviders folder and a commented reference in ServerProviders.xml
  • Added LayoutElement component to the ServerProviderButton.prefab
  • Moved serverProviderPanel from join game menu to create world menu
  • Refactored a few parts of terrain generation for better clarity.
  • Added Gas Mask. The gas mask just mixes with the external atmosphere while filtering any gas based on the filters inserted into it's two slots.
  • Added very basic first pass on minables showing up in new terrain. Not yet threaded.
  • Made mineables in new terrain drop ore when mined.
  • Added new Creative spawn panel. The old panel was rendered un-usable by the engine upgrade. The new panel uses Imgui and is much more resilient. Items are now listed by their localised prefab name and search functionality has been improved. Clicking on an icon or text will select the prefab and close the panel. Clicking on a plus symbol next to an item will spawn it while leaving the panel open. The window is now resizable and the previous search will be remembered upon re-opening the panel.
  • Fixed Server Build error.
  • Fixed Custom plants not showing in new spawn menu
  • Removed ability to click on text to select spawn prefab in creative spawn menu as the method to calculate it did not always work.
  • Tweaked terrain shader for new terrain.
  • Added the ability to specify a prefab hash for a slot during asset creation that restricts the slot to only accept the specific item.
  • Added gasmask storage that can only store the gasmask storage
  • Fixed gas mask slot types not being the correct type
  • Fixed missing thumbnails and blueprints
  • Added stationpedia entries for the new storage and the gas mask
  • Added fire extinguisher storage
  • Fixed authoring tool copy function being broken (hold F and attack to copy a target structure)
  • Fixed issue with server list not displaying
  • Made new terrain block air in most cases (wip - some edge cases still remain).
  • Added verbose logging in MoveToParent to help debugging corrupted saves
  • Fixed Stationpedia being moved offscreen when attempting to drag on while on the main menu. The window is still draggable while the game is running but will be fixed in place when in the main menu.
  • Fixed 'Mark Watney' and 'Still Mark Watney' achievement no longer working after plant update.
  • Removed unused plant prefabs (which are no longer in world manager).
  • Removed unused scripts inheriting from plant.
  • Slowed down mining slightly on new terrain.
  • Removed kit, recipe and related assets for stellar anchor which was partially removed from the game some time ago.
We have found and fixed the issue that caused us to roll back the last update.

https://store.steampowered.com/news/app/544550/view/4482864232593883517

The Issue
The last update introduced a critical issue related to plants. The new method for importing these assets made them susceptible to system language settings. While we have global settings in place to prevent such issues, they didn’t work as expected in this case.

The issue didn’t surface during testing, and we later discovered it only occurred on Windows 11. Since all our development machines run Windows 10, we were unable to reproduce it initially.

Another factor was the lower number of players on the beta branch. Over the past year, our update cadence has increased to roughly one update every two weeks. While this has encouraged more players to stay on the default branch, it also means fewer bug reports are coming from the beta branch. Overall, this is a positive trend, but it does reduce the chance of catching certain issues early.

Rolling Back
After spending an entire evening trying to resolve the issue, we decided the best course of action was to roll back the update. This allowed us to fix the problem without the pressure of the update being live.

Rolling back an update is always a tough decision, as it can disrupt players who have already loaded the new content. Fortunately, this update didn’t contain a lot of new content, so the impact on saves was minimal.

Thank You!
A huge thank you to the community members on Discord who helped us diagnose and retest the issue. Your assistance was invaluable, especially with such a difficult problem to reproduce.

We deeply appreciate your patience and support during this process!
This Issue has now been resolved.

Thank you all for the excellent response, feedback, and helping us work the issue.

We really appreciate the Stationeers community!


Due to a critical issue we've had to roll this patch back.

Not everyone was experiencing this issue but enough that it justifies rolling back until we can resolve the problem.

This update is still available on the Beta branch.

If you have been playing on Default and have any of the new items(any of the 3 new plants or the Icarus suit) then you will need to switch to beta.

The update will be available on Default branch as soon as we have a solution.



Data Defined Prefabs
Until now our pipeline for creating new prefabs, things in the game, was very Unity dependant. This process has largely stayed the same since the beginning of the project, and while it does allow us to add new things to the game quickly it does not follow the data driven mindset that we now follow.

We've taken a small subset of prefabs, plants and moved them to be defined entirely in XML. This means that to add a new plant we simply create a new custom plant in our game data XML. This data points to the relevant meshes and textures that are loaded at run time, instead of build time.

A few extra tools have been included with the game to help generate the blueprints and thumbnails required.

thing blueprint <Mesh Path> <Angle Threshold> <Merge Distance> <Scale> // Generates blueprint

thing thumb <Reference ID> <Zoom> // Generates thumbnail from thing by reference id




We would like to roll this out to all kinds of things the game but have started with something smaller to prove the concept. Being able to define completely new devices purely from XML would be the ultimate goal but we will see how this goes before making any decisions.


New Plants
We've also added 3 new fruit plants to help test the new system. When consumed these new plants will have a positive effect on your mood, but they are not currently used in any recipes, they will be later when we do a food update.

The new plants are Strawberry, Blueberry, and Watermelon.




Your support makes these updates possible

https://store.steampowered.com/bundle/2624/Stationeers_Complete_the_Set/



Change Log v0.2.5314.23994

  • First pass on moving plant life requirements to xml.
  • Added Scripts and models for future content.
  • Fixed Multigrid structures not registering to every cell they block.
  • Fixed Global Atmosphere mix calculation issue in previous commit (rev.23875)
  • Added Prototype Global Liquid Renderer. Very large quantities of Liquids in the global atmosphere will now be rendered via a liquid plane.
  • Added strawberry xml plant example.
  • Added first pass on importing plants from xml. Meshes, textures and plant stages can be defined in xml and will be imported at runtime. Blueprints can also be created but for now, the wireframe edges will have to be manually entered into the xml. Later on we plan to make this automatic or add a tool to export edges for custom meshes.
  • Fixed nullref on dedicated server when instantiating prefabs from source list.
  • Added Missing scene update from last commit
  • Fixed normals on strawberry meshes.
  • Added thumbnails for strawberry plant and seedbag.
  • Made custom plants fail to register if their name is already taken to stop potential name conflicts with existing things.
  • Changed Global Liquid visualiser now uses the same system as in-world liquid. Global liquid will now not be drawn inside rooms.
  • Removed 1st global liquid prototype from scene.
  • Missing class name changes from last commit.
  • Removed some unused files and directories
  • Removed associated meta files for removed directories
  • Added scripts and prefabs for future content.
  • Made organics printer recipes resolve their prefab references after all data files are loaded.
  • Moved blueprints out to their own file and made them DataCollections.
  • Renamed CustomPlants.xml to plants.xml.
  • Moved tomato plant and seedbag to xml.
  • Renamed PrefabResolver to DataResolver.
  • Removed Director.cs
  • Refactored WeatherManager to remove un-necessary abstraction & complexity in Storm scheduling code.
  • Added Additional storm properties to the weather event data. ParticleId, Allowed Directions, Damage Multiplier.
  • Changed Storms can now come from any of the 4 cardinal directions.
  • Changed Worlds can now have multiple storm types.
  • Changed Moved weather data into a library in weather.xml. WorldSettings can now reference weatherID form the library or they can declare them inline.
  • Fixed items in input slots being invisible in tier one manufacturing machines
  • Fixed some manufacturing machines / printers only allowing ingots in their input slots. It is intended for them to be able to get blocked up if you poorly manage your manufacturing
  • Added plant meshes and textures to streaming assets.
  • Removed a few empty directories.
  • Updated SeedBag template material with new normal and spec textures.
  • Changed plant template to Plant script rather than Potato.
  • Stopped nullref when plant blueprint is not setup. Instead a default blueprint will be used and an error will be logged.
  • Added blueberry and watermelon plants.
  • Added Rain Storm particle effects and sounds.
  • Changed Exposed Weather Event Fog start and end distance and weather audio to XML.
  • Added Rain weather event to weather library.
  • Updated plant blueprint default mesh.
  • Added ServerProviderPanel for managing ServerProvider buttons
  • Added empty ServerProviders xml file for populating button data
  • Added ServerProviderButton prefab
  • Added system for setting up and managing links to server providers
  • Slightly changed how damage from toxic gases is calculated. Partial pressure thresholds are per gas rather than combined. This may change as we test further.
  • Moved water usage, breathed gases and toxic gases for plants into the liferequiements xml.
  • Fixed normals for plant meshes.
  • Changed Updated stationpedia to show in-world volume of each Liquid type.
  • Changed In-World Volume Multiplier for gasses is now calculated at run-time based on gas Properties. In as a general rule the more cryogenic the liquid the lower in the inworld volume multiplier. This will solve pressure anomalies and run-away phase change effects that were happening to players condensing cryogenic liquids in world grids. Under the old fixed multiplier of 50x some condensed Gasses would take up more volume once in liquid form which would spike the pressure causing a feedback loop of Condensation phaseChange.
  • Added Rain and snow weather effects will now trigger when Condensation/Freezing happens in the global atmosphere.
  • Added Snow Weather Effect.
  • Moved switchgrass, potato and corn to xml.
  • Added ability for custom plants to be set as microwave ingredients, chemistry ingredients and animal food.
  • Fixed potato meshes having bad normals.
  • Added IAnimalFood to some plants and refactored how animal food is registered.
  • Updated ItemSwitchgrass mesh.
  • Added blueprint edges for a few more plants in xml.
  • Added command for generating blueprint wireframe edges with the format: "thing generateblueprint <mesh path> <angle threshold> <merge distance>". This will output edges to a text file which will have to be added the blueprints.xml manually for now.
  • Fixed life requirements not being set on xml based plants correctly.
  • Moved fern and darga fern to xml.
  • Removed unused seedbag meshes.
  • Committed auto prefab changes from editor due to new IsCustomThing field.
  • Tweaked generate blueprint command to output a file with a more descriptive name.
  • Added blueprints for darga fern and fern.
  • Updated normals for darga fern mesh.
  • Fixed an issue with LerpToGlobalAtmosphere() function that was causing Rockets to generate large numbers of instanced atmosphere grids. Issue introduced in rev. 23827. This was causing frame-time degradation and occasional frame-time spikes due to garbage collection. Users who were experiencing this issue may find it takes a few minutes for the performance issue to resolve upon loading the game as the erroneously created atmosphere-grids will have been serialized and will take several minutes to clean-up.
  • Fixed deconstructing cladding not using any power. They now use a small amount
  • Added blueprint info for migrated plants.
  • Moved soybean, cocoa, sugarcane, wheat, mushroom, rice and pumpkin to xml.
  • Added max stack quantity and reagent mix to xml based plants.
  • Converted hades flower and winterspawn to xml.
  • Added scale variable to MeshReference so imported models can be scaled appropriately.
  • Added Models/scripts for future content.
  • Fixed a tooltip error.
  • Fixed all obj normals.
  • Moved celestial textures into their own folder
  • Fixed plants from xml not showing up in the debug spawn menu.
  • Moved celestial textures back to root texture folder for now so as not to break mods.
  • Fixed switchgrass not producing the hay item when harvesting.
  • Updated ItemStrawberry mesh and blueprint.
  • Added a new command 'plant grown all' which makes all plants progress to the next growth state
  • Fixed some plants not showing the correct growth state. For example the strawberry was showing the wrong mesh when it was fruiting and not showing the correct mesh until it was seeding. All the new plants have been fixed as well as a few existing plants such as the tomato
  • Stopped plant grow all command moving plants to dead stage. Specifying a plant tray with plant grow <id> will still move plants to dead stage.
  • Updated ItemSwitchgrass mesh.
  • Added thumbnails for new plants and seedbags.
  • Updated ItemSwitchgrass thumbnail and blueprint.
  • Changed "thing generateblueprint" command to just "thing blueprint".
  • Added wip thumbnail generator command that can be used to generate a thumbnail for a thing: "thing thumb <reference id> <zoom>".
  • Fixed blueprint wireframe generator not including some edges.
  • Added switchgrass blueprint wireframe edges back in.
  • Updated blueprint wireframes for ItemFern and ItemDargaFern.
  • Increased size of ItemFern slightly.
  • Added editor tool to generate wireframes.
  • Fixed an issue where rockets saved while in space would get deleted on load due to an incorrect grid registration.
  • Fixed seedbag blueprint wirefame being slightly offset.
  • removed missing script reference from Asteroid.prefab
  • Fixed game loading issue when current weather event is null.
  • Fixed server provider button logos not being centered on the viewport
  • Removed Debug.Log calls
  • Removed chat popup window when running in editor.
  • Moved a few reagent classes into their own files.
  • Removed missing script on some voxel prefabs to stop errors while starting dedicated server.
  • Added Icarus suit to the tool manufacturing. You must own Icarus to be able to print it
  • Added new help text for the thing command
Liquid Device Interaction
A system to allow liquids to interact with devices has now been added that will mean that some devices will now have an adverse reaction to being submerged in water. Devices currently behave in one of two ways when in contact with liquids, they will either fry the attached cable or enter into an error state.

Manufacturing machines will enter an error state when in contact with liquids, and Area Power Controllers, Transformers and Station Batteries will blow the cables directly connected to them.

Before a device's cable blows you will be given some time visual and audio cues.



Currently the list of devices affected in this way is pretty short, but more interactions may be added later now that we have the system in place.


Better Water Visualizer
The liquid visualizer had a lot of literal edge cases where it would not look that good, for example the liquid could clip through some configurations of walls and windows, as well as being hidden under flooring.



This is no longer the case as we are doing a simple check to see what configuration of walls is around the liquid visualizer and shift it as necessary.

Additionally, the screen space affect that you see when you're underwater would stop working if you left a game and started a new one, but this has now been resolved.


Buoyancy Changes
A quick addition to the buoyancy system has allowed us to select some objects to not be buoyant. Again, we've just picked a select few items to enable this on and will add others as we see fit.
The current list of things that will sink are ores, ingots, and crates.




Pools of water
To prevent a small film of liquid spreading through your entire base we made the decision to have small "pools" of water not spread at all. The result of this was that it was easy to end up with lots of small pools around your base that were hard to collect. We've done two things to help with this:

Floor Drain Collection Radius
Floor Drains will now collect liquid from a 6-grid radius allowing you to have fewer floor drains to handle spilled liquids.



Liquid Vac
The Liquid Vac is much more powerful now cleaning up liquids 50 times faster. This, combined with being able to see the small pools on top of flooring, should allow you to quickly clean up any pools of liquid.


   

Your support makes these updates possible

https://store.steampowered.com/bundle/2624/Stationeers_Complete_the_Set/



Change Log v0.2.5284.23867

  • Fixed BatteryChargerSmall not being able to be connected to logic
  • Changed SpaceOreStackSize from const to static for modding purposes
  • Fixed Mars was getting too cold at night during its Solar apo-apse.
  • Changed Global Atmosphere now has a fixed volume and its state is serialised in the save data.
  • Changed Reworked how the global atmosphere is created and simulated. Phase-change can now occur in the global gas mixture. Gasses will now freeze into "icecaps" or condense into "ocean". Currently this simulation is not exposed to the player. We will be investigating ways of surfacing phase changes in the global atmosphere to the player in future updates via storms and or other visualisers.
  • Fixed launch mount kit being invisible
  • Updated Some future asset blockouts.
  • Moved Methods form PoweredVentMultiGrid into a static library so they can more easily be used by other classes.
  • Fixed some build issues due to imgui
  • Fixed Pressure of canisters not displaying properly in their Stationpedia entries
  • Fixed small Typo in Stationpedia entry for Large Extendable Radiator
  • Renamed IsUnderLiquidLevel helper to IsSubmerged.
  • Increased Liquid draining speed of Passive Liquid Inlet.
  • Fixed Passive Liquid Inlet not draining liquid from neighbouring grids when its grid was empty of liquid.
  • Increased Speed of Liquid Vacuum.
  • Added ISubmergedHandler to allow devices to have special behaviour when submerged. Currently, manufacturing machines will error when underwater and transformers and apc's will blow their cables.
  • Added Prototype Extendable structure for testing.
  • Fixed placement issue with structure Extension prototype.
  • Added boolean value for buoyancy so that non-buoyant dynamicThings sink but not as fast as falling
  • Fixed Flickering liquid blocks when liquid was falling.
  • Fixed Underwater effect would not play upon loading into a game for the 2nd time.
  • Removed Min liquid height clamping. (previous band-aid fix for liquid hidden inside floors).
  • Fixed Liquid would sometimes be "hidden" underneath floors, it is now offset to the correct height so it sits on the floor.
  • Fixed Liquid Visualiser Z-fighting and clipping through walls that were placed on an internal face of a grid.
  • Optimised Liquid Rendering Update loop. Render batches are now calculated and prepared on the gameTick thread using a double-buffer approach. This avoids blocking the main game thread with a costly iteration of all atmospheres and a needless recalculation of the water meshes every frame.
  • Fixed Liquid Vacuum and Liquid inlet not considering in-world liquid volume when performing their liquid movement logic.
  • Fixed Liquid Visualiser Prep running in batch mode.
  • Fixed Manufacturing machines would still build when in error state.
  • Changed SubmergedHandler system to instead be handled case by case on device in the power tick. Made input and output cables on transformers, batteries and apcs burnout when the input/output port itself is under water rather than the entire device.
  • Updated IsSubmerged to use the render threshold rather than zero for minimum atmosphere volume checks.
  • Added 100ms update and 1000ms update to Thing. These are opt in slow ticks for main thread game logic. (i.e audio, fx)
  • Added Spark effect and sounds to Apcs and transformers that are submerged in liquid.
  • Refactored some duplicate code from battery, apc and transformer into ElectricalInputOutput.
  • Added submerged effects to station battery.
  • Refactored ISubmergeable functionality to bring it more in line with project standards.