1. Stationeers
  2. News

Stationeers News

Project Clinic | Developers Playtest

While we do regularly do playtests, it can be easy in the hustle and bustle of chasing down bugs or working on big features for the team to miss the full experience of playing the game. So we initiated a "project clinic". Think of this like taking the project to the Doctors, and then treating as much as possible right then and there, and scheduling followups with specialists for anything you can't. So the project has had all it's shots, and a whole heap of a lot of little things fixed and tidied up.

The rise of our "Interop" Layer

[h3]Our "interoperability" layer is used for the first time to deploy a new version of "RocketNet", our internal multiplayer technology[/h3]
For our playtest we played extensively with both SteamP2P and dedicated servers, with up to eight of us playing at any one time. As part of this we identified a number of issues that we needed to fix. Some time ago we made the decision to cut our own path and do as much as possible ourselves, particularly on the network and simulation front. We have our own internal "enterprise" team who worked on taking "RocketNet" as a concept and implementing it, first in our unreleased project "Art of the Rail" and then in Stationeers.

After releases of our games, including Stationeers, we have always felt that where we had the agency to be able to solve issues - we could. So we have been bringing as much as possible under the control of the studio, which involved removing steam functionality and replacing it over time with our own. The goal being that anyone can play with anyone (including pirated copies of the game), and that the game will be able to outlast those who work on it, the studio, and even steam.

This week not only have we improved our technology for "RocketNet" and "RocketImgui", but it has been done so using a newly developed Interop Architecture. This allows us to introduce new data architectures and streamline how the C++ plugins we develop (think, extremely high performing code but very complex to write and maintain), and the C# code at the game level (simpler, but not as performant code). Not only were the enterprise team able to quickly iterate to fix the issues we identified, but this new interop architecture worked flawlessly. This opens the way for us to move more and more of the game outside of game engines the studio uses, and develop specialist and highly performant code for areas we need for simulation and more.

Recently you may have seen layoffs at Unity, the maker of the Engine we use to build Stationeers, and also controversy around games made with Unreal Engine such as Redfall. We feel the decisions the studio made over the past few years to ensure we could build survival games that can truly scale, are now proving to be the right calls.

Clinic Highlights

[h2]Enhanced Networking and Multiplayer Stability[/h2]
In this update, we have focused on improving networking and multiplayer stability. Players will now be able to reconnect to a lobby/game after leaving, and we've fixed various issues with server connection and Steam P2P clients. Additionally, we have updated the RocketNet plugin to fix issues with max player limit, ensuring smoother gameplay.

[h2]Enhanced Repair System and New Repair Options[/h2]
Players can now repair walls and frames using the tools and materials of their current build state. Damaged items like Solar panels, Suits, and Robots will display required materials in their tooltip for repair, enhancing usability. Additionally, the repair speed for glass on solar panels has been increased, and Duct Tape Mk2 repair speed is now faster, making maintenance more efficient.

[h2]New Logic System Additions and Updates[/h2]
The latest update brings new functionality to the logic system, including the addition of color and vent enum constants to assist with referencing in scripts. We've also introduced:
  • 'Load Batch Named Slot (LBNS)' instruction, which enables loading into a register matching device and name hashes using the provided batch method.
  • 'Set Slot (SS)' instruction, which enables you to write to slot contents for the first time. Note that the slot itself must support it. Documentation on which slot types support what LogicSlotType is limited, this will come with future updates. A good example is in Suit Storage, you can open and close a helmet.
  • 'Set Batched Slot (SBS)' instruction, which is the same as the above instruction, but allows you to do it to batches of devices.

These enhancements provide players with more options and versatility when working with logic systems. A big thank you to content creators such as "CowsAreEvil" and others who have been doing great deep-dives into all the possibilities that come from our new systems.

[h2]Solar Irradiance and Lighting Improvements[/h2]
We've addressed an issue with Solar Irradiance for Air, which was using the default SolarScale and not adjusting for different worlds. This led to heating discrepancies due to solar radiation. Now, the heating of air will be more accurate across various worlds. Moreover, we've made significant improvements to the First Person Helmet, reducing clipping issues by adjusting the near clipping plane. Additionally we have done a full pass of materials, shadows, and lighting settings to unify and clean them up. This has resulted in performance improvements and dramatically better shadows in many circumstances.

[h2]Sleeper, Cryo, and Unconsciousness Improvements[/h2]

The sleepers now actually put you to sleep and we have iterated on the sleepers to ensure that, so long as they have power and their atmosphere is maintained, they will keep players alive. Survival, and mechanics around this, will play a huge part in a massive series of updates we have planned dedicated specifically to dramatically expanding the role, function, and focus of survival in the game. All the updates we have done so far, and before, lead heavily into those updates.

[h2]Pipe Cowl and Wall Vents[/h2]

Wall vents mix two atmospheres, say on each side of a wall or floor, without requiring any pipes. The Pipe Cowl is useful when you want to exit gases, but you don't want to have to place a passive vent on on a frame.

[h2]Advanced Tablet upgraded[/h2]
The advanced tablet now contains an IC slot and a speaker. So you can play sounds on it using the SoundAlert LogicType. Additionally, it can access any humans suit slots (including toolbelt, if advanced), via the "device" notation. This can be combined with the new set slot and set batched slot instructions.

[h2]Playing Sounds on Items[/h2]
Any items supporting SoundAlert allow you to play sounds on them via logic. Want to have your suit warn you? Advanced tablet (see above)? Now you can! Look for the sound definitions in the ingame variable listing, such as Sound.Alarm1, and so forth.

[h2]Solid Fuel (Hydrocarbon)[/h2]
The smelting system has been extended to allow recipes to define atmospheric requirements to create something. Our first example of this is taking Hydrocarbon, commonly from Coal, and putting it under immense pressure and temperature with only Volatiles in the atmosphere. This will allow you to produce Solid Fuel, which stacks much higher and burns for far longer in the Solid Fuel Generator.
Modders note: if you don't want the RequiredMix to have to be pure, remove the "Pure" requirement, as this forces only the listed Gas Moles to be in the atmosphere to be valid

[h2]Quality of Life Updates and Bug Fixes[/h2]

We've made several quality of life updates and bug fixes in this update, such as adding a direct connect button to the join server window, improving Stationpedia's search functionality, and optimizing the WeatherManager to use UniTask instead of Coroutine for item damage. Furthermore, we've fixed numerous bugs, including issues with deep miner save data, laptop interactions, and audio playback. We've added a whole host of tooltip improvements to help with accessibility, and even fixed some long standing annoying stuff like some cans being rotated differently than others.

Your support makes this possible

Over the last year, we’ve completely refactored the net code making multiplayer more stable, we’re continuing to improve the connectivity, and we’ve improved some big systems to allow us to bring you better content and new game loops. All this while transitioning to a weekly update cycle.

All the community support, feedback, and involvement have made this possible. So thank you!

[h3]If you like the progress we have made, please consider taking a moment to leave a positive review. This makes a huge difference to the project. We've been working hard for the last five years, and feel confident the game has substantially improved over this time. Many projects steer clear of the hard tasks, and we are proud to have taken them on.[/h3]


Additionally, you can support us by purchasing DLC that we've made to allow those who enjoy the game to support us, and in return get something a little fun to use in-game.

https://store.steampowered.com/app/2089290/Stationeers_Human_Cosmetics_Pack/

https://store.steampowered.com/app/1038400/Stationeers_Zrilian_Species_Pack/

https://store.steampowered.com/app/1038500/Stationeers_HEM_Droid_Species_Pack/

Hotfix deployed v0.2.4039.19189
  • Fixed tooltips for repair not showing up.
  • Fixing linux dedicated server missing dll issues STAT-1794
  • Fixed hydration increasing when your suit is empty. This should also fix the issue of hydration decreasing dramatically slower when breathing very cold gas.
  • Fixed Logic Dial knob rotated incorrectly by 90degrees.
Hotfix v0.2.4036.19180
  • Fixed mining belt Mk2 not working with Mining Drill correctly.
  • Fixed Arc Furnace new collision was preventing accessing the entry slot by hand.
Changelog v0.2.4035.19177
  • Fixed Storm Visual and Audio Effects would play in rooms that where not really storm accessible if an unfinished frame was located in the square. This occurred because if a cell grid object existed, wall checks would not be undertaken. Now wall checks will be undertaken if a found grid structure CanPassAir is true, and if so, don't allow.
  • Optimized CanAirPass state checking for structures and doors, reducing memory GC churn and unnecessary list generation and iteration.
  • Updated all things with glass to use new glass materials
  • Updated all glass materials to use new transparency shader
  • Fixed possible the characters in multiplayer spawning and being invisible for their body mesh.
  • Added custom transparent shader that does not cast any shadows
  • Changed Increased print times for Battery and Large Battery 5s to 50sec, and 10s to 100s respectively.
  • Fixed build errors due to editor methods not being wrapped correctly
  • Fixed rotation of some cans, spray cans, filters, and seed bags were facing so their front was obscured when in lockers and crates. Now they face forward so they are easy to read what they are.
  • Fixed deconstruction an Advanced Furnace full of reagents would cause them to be created automatically as ingots. Now correctly spawned as Reagent Mixes.
  • Removed sleeper fog effect, will do this with a shader in future instead
  • Fixed Can't read LandingPad atmosphere with logic.
  • Fixed error when loading game with old sleeper variant.
  • Fixed Arc furance prefab throwing error when saving game
  • Added fog effects to Sleepers.
  • Tweaked lighting shadow values and added some optimized shadow meshes for some of the lights.
  • Fixed some keyboard actions could be undertaken while unconscious or asleep. Restricted input actions available to player while asleep and additionally cleaned up some Human code, added caching of key components.
  • Fixed deadlock when attempting to apply leak effects to a suit when a player entity is expected by could not be found.
  • Code Clean-up for Sound Alert code. Cached hash values for audio clips and moved duplicate code into static function.
  • Added ISoundAlert interface.
  • Fixed Sleeper and Cryo DisplayName was being changed when actually it should show up in the tooltip itself. Added a message on both that is localizable to the tooltip, not changing the DisplayName of the object itself as this would cause issues when renaming.
  • Fixed incorrect parameter definition LOKAL to LOCAL in german translation files. Specifically effecting stacker.
  • Added sleeper occupant name to DisplayName so that tooltips show the name of the occupant in the sleeper.
  • The sleeper and cryo tube tooltip will now show the occupant name when they are occupied by a player
  • Added caching of KitItem SkinnedMeshRenderer. Should reduce the cost of applying skinned meshes when players change clothing.
  • Fixed a varienty of rendering issues associated with changing clothes during logging in on multiplayer or moving in and out of rendering range. Character uniform or suit would be invisible as the character was occluded at the time the change took place.
  • Changed Moved Head Lamp recipe to Tool Printer.
  • Fixed bug where you could not interact with sleepers while wearing a suit
  • Removed un-used OnEnitityDeath Event.
  • Fixed when clicking GiveUp when unconscious player would revert pack to being alive instead of respawning new character.
  • Fixed Null Error when another client character was occluded.
  • Fixed Volume doesn't update on playing alert sounds on HardSuit, Helmet, PassiveSpeaker, AdvancedTablet.
  • Added color state indicators to sleepers. Will show White when closed but no occupant. Green when occupant and is alive. Red when occupant is dead.
  • Fixed MultiConstructor kits could cause exceptions if the LastSelectedIndex was greater than the contents. Added sanitization checks to remove any nulls.
  • Added proper tooltip to indicate that you can upgrade the manufactory devices rather than just a construction step.
  • Changed the tool use with Printer mods to be the screwdriver, as the welder made no sense and was not intuitive.
  • Fixed some glass casting shadows and causing weird pixel issues.
  • Added automatic network state checking for atmospheric devices when in an error state due to network changes. As we optimized the game it reduced the time between an error on a device due to a network change and the creation of the new networks. This meant that devices could stay 'Error' till they were turned on and off. Now the Atmospherics Tick will check for a new network automatically when needed.
  • Fixed SoundAlert when played on items would continue even if item was off or unpowered.
  • Added IC slot to Advanced Tablet along with a speaker. The Advanced Tablet has access to the root human, and provides access to the slots on any root human via the devices (d0, d1, etc...). This means you can use the Advanced Tablet to play a sound when something happens to the player. Say they walk into an airlock without a suit and helmet on, you will be able to play a warning sound.
  • Replaced some enum casting names to avoid collisions. This may break some scripts! SoundAlert is now Sound, and is not directly cast as part of the processor. It is a constant type. Additionally, SlotType is now SlotClass. Please check the in-game variable help for a complete listing of any changes.
  • Fixed Glass Door shows interaction buttons before door is completed. Now correctly hides the interactables until door is properly completed.
  • Added ability to repair the ChuteBin and Deep Miner.
  • Fixed overhead lockers were disobeying the lack of RequiresFrame, despite not requiring it. Now overhead lockers can be correctly placed without requiring a frame, allowing them to be mounted to walls easily as they were intended to be.
  • Fixed Upgraded Manufacturing devices (such as autolathe, electronics printers, etc...) show their buttons for access while they are booting. Now their screen based buttons won't be accessible until their screens have correctly booted.
  • Added Pure Gas rule option for MoleMixtures. Currently only implemented for Solid Fuel (Hydrocarbon). To make solid fuel, you must have high pressure, temperature, and a mixutre of only Volatiles as well as Hydrocarbon reagents inside the furnace. Displayed in the Stationpedia automatically for recipes.
  • Fixed MoleMixture requirements not scaling with output produced. Now the quantity is correctly scaled for the requirements.
  • Added ItemPipeCowl made on the Pipe Bender for making Pipe Cowls for placement at end of pipes.
  • Added Wall Vent. Available on the new Kit (Passive Vent). This has no pipe connection, but it will allow two atmospheres to be connected and mix them. This is useful if you have made a series of rooms that would otherwise not be mixing atmospheres.
  • Added Pipe Cowl to Kit (Passive Vent). This is similar to the existing passive vent, but useful to place at the end of pipes, rather than having to be mounted on the wall.
  • Replaced ItemPassiveVent with ItemKitPassiveVent, that is a multiconstructor. This kit has a new mesh and has Pipe Cowl in addition to the Passive Vent.
  • Added players cannot enter a Sleeper or CryoTube while wearing items that provide an interior atmosphere. A tooltip will indicate why you cant complete the interaction. This avoids state issues of being inside an atmosphere while wearing something that prevents that atmosphere from keeping you alive. This allows a number of state and UX issues to be solved.
  • Added players will receive stun until they fall asleep inside a Sleeper or Cryotube, and become unconscious. This potentially fixes state issues that were preventing the cryotube from healing properly. There is now a slight difference between being unconscious and being asleep. When inside a sleeper and sleeping the respawn dialogue will not show.
  • Added players inventory windows will be hidden while unconscious.
  • Fixed humans were not correctly closing their eyes when unconscious or dead, and would continue blinking.
  • Added Stun damage will reduce maximum speed. This means you will walk slower the more stun damage you have.
  • Added SortingClass enum lookup for Slots in instructions. All slots for any ILogicicable Device will be able to report the SortingClass of their enclosed item. Useful for manual mode on sorters.
  • Fixed LogicSlotType.Pressure was returning in Pa, not KPa, and doing so inconsistently as tanks were reporting in KPa. This may affect some scripts, but it was inconsistent so needed to be changed.
  • Added SBS 'Set Batch Slot' Instruction for IC10. Same as SS 'Set Slot' Instruction but applied to a batch via the device hash. Current use case for testing was closed all helmet visors in suit storage. Future options to be expanded.
  • Added SS 'Set to Slot' instruction on IC10. This sets a value to the provided variable on the occupant on a slot. Only current use case is really the Suit Storage and Advanced Suit local IC. Future changes to Circuitboards will have more functionality here.
  • Added Open, On, Lock, LogicSlotTypes. Only usabled on some devices, those that have Helmet or other similar slot types. Currently not an easy way to verify what devices allow you to write. This will be developed later.
  • Extended ILogicable to Toolbelt and Miningbelt Mk2s and all Power Tools and batterycells to allow them read/write when referenced in the advanced suit.
  • Added d2 mapping to Toolbelt Slot for the Hardsuit. The toolbelt item will need to be ILogicable, so only the Mk2 toolbelts will currently work here.
  • Revised the SuitStorage LS instruction handling as there were many issues with it. This is a significant change so it may cause some scripts to work differently.
  • Added Wall Flat Panel Open for use with ladders.
  • Changed Platform Gratings to be crafted off the Floor Grating kit, rather than the ladder kit.
  • Fixed collision on sleepers was causing physics issues when exiting sleepers in some circumstances.
  • Added new Ladder Platform mesh that works with the floor grating mesh better.
  • Added variant for Ladder Platform that has the panels rotated.
  • Fixed exiting structures as a client would exit in the slot position, not the exit position. This could results in clients getting stuck. Now clients exit in the correct exit position for the device.
  • Changed construction and deconstruction for sleepers and cryo to be in line with others of similar type. Uses plastic sheets instead of iron sheets and drill instead of screwdriver for first stage deconstruction.
  • Changed Padded walls to take Plastic instead of Steel Sheets
  • Fixed hazard color uses a different yellow than game base yellow
  • Fixed emotes from clients not being sent to other clients
  • Fixed dedicated server attempting to play trader sounds.
  • Fixed inconsistent shadow bias settings for lights could cause artifacting for some shadows. Now a fixed shadow bias is set across all thing lights and the world sun light.
  • Added atmospherics whiteware devices can be repaired by using electronic parts and screwdriver.
  • Added able to repair Airlock Gates using Steel sheets and a welder.
  • Fixed lens flares were hexagonal due to their value being overflow. Tweaked the values to be aligned with the new nearClipPlane.
  • Updating RocketNet plugin to new version to fix issues with max player limit STAT-1794
  • Fixed Solar Irradiance for Air was using default SolarScale, not being adjusted for different worlds. This means the heating of air due to solar radiation was higher than it should be for some worlds. Users relying on heating via solar irradiance on worlds such as Europa may observe a reduction in how it was, as this value was incorrectly high.
  • Fixed clipping issues with First Person Helmet by reducing the near clipping plane.
  • Added Solar Irradiance to the DayLight Sensor. Now the sensor will report the local solar irradiance value to the logic system as well as in the tooltip.
  • Added ability to repair the Liquid Pipe Radiator and passive vent.
  • Improved network console command
  • Removed logging of all prefabs on world manager awake
  • Fixed DynamicGasTankAdvancedOxygen deletes gas when a gas canister is put in the slot.
  • Fixed Suit not updating its current state when not on a human player. Now state is updated whenever inventory changes and any status coloring is updated accordingly.
  • Added Load Batch Named Slot (LBNS) instruction. This will load into a register matching device and name hashes, using the provided batch method.
  • Fixed LBN instruction was missing description help text.
  • Added repair tool options to more devices. These will show up in the tooltips for things when damaged.
  • Fixed suits not showing correctly when moving in and out of render distance.
  • Fixed recycling food gives you back plant reagents. Example: Put in tomato soup, get a tomato. Now INutritional is not recycled.
  • Fixed child items not being correctly sanitized when being recycled.
  • Added repair tool options to many devices and structures such as autolathes, doors, airlocks, and lockers. These will show up in the tooltips for things when damaged.
  • Fixed loading in with suit or armor in your hands, is treated as in slot for rendering purposes causing weird suit state for entities.
  • Fixed toolbelt mesh was being enlarged when holding a suit when it was not in the correct suit slot.
  • Fixed marine armor mesh would stay on character when armor was taken off. Now the Armor will correctly be removed from the players renderer when the armor is dropped or taken off.
  • Fixed some issues associated with suits when players spawn in. There may still be some bugs existing, but this should fix at least some of the instances where suits are incorrectly colored or uniforms not rendered at all.
  • Fixed decay not being paused in cryotubes and also fixed the issue where, when dropping an almost decayed body, they could explode into a skeleton immediately
  • Removed SoundAlert reverts back to 0 after playback finished as was breaking dedicated server.
  • Fixed player count not being sent in pings to server
  • Fixed Marine Helmet behavior was not consistent with other helmets when entering suit storage. Now light will be automatically turned off, like all the other helmets and headlamp.
  • Fixed NRE Error when clearing jetpack emissions.
  • Changed (kit)SDB Silo from electronics printer to Autolathe.
  • Changed (Kit) sorter build time from 1s to 10s.
  • Fixed AdvancedSuit and Helmet not syncing SoundAlert to clients.
  • Changed pipe valves to use new animation component.
  • Added direct connect button to to join server window. It is only interactable when a valid IP address:Port is entered in the IP:Port field.
  • Removed Direct Connect function from Join Server button. It will now only try to join the selected server in the browser.
  • Changed Jon Server button only becomes interactable once a server is selected.
  • Added can add ices directly to dynamic gas tanks. The ice will be exposed to the atmosphere of the tank, and will melt if the melting requirements are met.
  • Fixed Completion ratio on Printers sometimes went over 100%.
  • Fixed another case where Steam P2P clients need to restart the game after failing to connect STAT-1794
  • Fixed Centrifuge and CombustionCentrifuge don't show processing percentage on clients.
  • Fixed ImportingThing and ExportingThing not being set on clients (mainly required for some additional tooltip info client-side).
  • Fixed StructureNetwork Rebuild list was being added to when server was hosting with no clients connected.
  • Fixed StructureNetwork Rebuild list and new Structure Networks list not being cleared on ClearGameAll.
  • Fixed SoundAlert sounds on HardSuit, Helmet and PassiveSpeaker now have the same looping behaviour as the sounds on the klaxon.
  • Added SoundAlert variable on HardSuit, Helmet and PassiveSpeaker will now be reset to 0 once playback of a non-looping sound is complete.
  • Removed logging for when a there is no free audioSource in the audio pool.
  • Fixed Multiplayer de-sync issue on clients when a chute that was connected to two other chutes was deconstructed.
  • Added Debug command for chute networks. "chute network". Similar to the "atmos pipe" command, this will show the the reference ids of chutes,networks and the Occupant if there is one.
  • Refactored ChuteNetwork class to inherit from StructureNetwork.
  • Fixed ReferenceId error on join for the first client when connecting to via p2p to another player hosting the game. New structureNetworks list was being added to when hosting but no player connected.
  • Fixed bug where clients could not interact with inventory buttons such as 'split half' if the item was in a slot with index > 10
  • Fixing bug preventing players from rejoining a lobby/game after leaving STAT-1794
  • Added Ability to play sounds on HardSuit, Helmet, Passive speaker and Klaxon using the "SoundAlert" logic type. See the "SoundAlert" Stationpedia page for available sounds. If setting these values via an IC script the editor will parse the sound names directly e.g. "s db SoundAlert FireFireFire".
  • Added Volume LogicType to HardSuit, Helmet and PassiveSpeaker. Default value is 50, max value is 100.
  • Added Sound channel types can now be overridden in code when playing a pooled audio sound.
  • Fixed Reduced radius of deep miner audio. Reduced the amount of reverb send on deep miner audio.
  • Fixed bug where holding a full stack and clicking a partial stack would not swap the stacks
  • Fixed null ref with tooltip repair state text
  • Fixed Prefab error on load from ItemSolidFuel.
  • Added tooltips for damaged items that can be repaired using ISolarRepairer, ISuitReparier, and IRobotRepairer. Now damage things like Solar panels, Suits, and Robots will display in their tooltip what can be used to repair them, to help with usability.
  • Added Flush variable. This is added to the Helmet as a logic variable, to expose the "flush" functionality to the logic system.
  • Added can repair walls and frames using the tools and materials of their current build state. If they are damaged, will show required materials in the tooltip for repair.
  • Added stacktrace informnation to console as aged text to assist with player bug reporting.
  • Refactored WeatherManager to use UniTask and not Coroutine for item damage.
  • Increased repair speed for glass on solar panels
  • Increased Duct Tape Mk2 repair speed.
  • Fixed a few of english strings had extra "Item" due to batch processing of strings error.
  • Fixed ConditionOperation constants were listed twice.
  • Added color and vent enum constants to assist with referencing in scripts.
  • Added Pixel Light Count slider back to settings and adjust the quality preset values.
  • Fixed laptop was not set as "tool" item type so could not be put in toolbelts. Now correctly added as tool type.
  • Moved Voice Language setting to audio screen and added when the setting is changed, a notification in the new language is played, so the player has an indication of what the new trigger is.
  • Fixed Laptop does not automatically close when in a non-hand slot, causing issues in container slots. Now the laptop will automatically close (turn off) when moved to a non-hand slot.
  • Fixed audio buttons playing sounds multiple times when hovering over
  • Tweaked stationpedia so search bar is always visible
  • Fixed stationpedia bug where navigating back to search results resulted in a blank page
  • Changed Logic dial, Logic Switch, Logic Lever, Logic dial & logic writer switch to use new anim components.
  • Fixed Clients see incorrect values on logic dial when Max setting is set higher the 127.
  • Updated stationpedia description for centrifuge. Added note about de-gassing
  • Fixed bug with deep miner save data duplicating states
  • Fixed Null reference exception on load caused by omni power transmitter change (beta).

Integrated Circuitry

Our IC system somewhat loosely models MIPS "instructions". So its like a small virtual processor and you define instructions that you want to run. This update includes some new instructions, a breaking change to one set of instructions, and some feature improvements to the IC editing system. In addition or as part of these updates number bugfixes and optimizations have been added to the IC system itself as well as the editor.

[h2]Predictive Instruction Help in IC Editor[/h2]
If what you have typed matches an instruction, the editor will include helpful information in the background to assist you in formatting the instruction correctly.


[h2]Variable and Constant changes[/h2]
[h3]New IC Constants[/h3]
A variety of new constants can now be added to your code. These will resolve as numbers, but can remain in your script for ease of use. Think of these as "special" numbers the processor has that you can always address without having the define them on a register. This should reduce the number of instructions you need in code.
  • nan; A constant representing 'not a number'. This constant technically provides a 'quiet' NaN, a signal NaN from some instructions will result in an exception and halt execution
  • pinf; A constant representing a positive infinite value
  • ninf; A constant representing a negative infinite value
  • pi; A constant representing ratio of the circumference of a circle to its diameter, provided in double precision
  • deg2rad; Degrees to radians conversion constant
  • rad2deg; Radians to degrees conversion constant
  • epsilon; A constant representing the smallest value representable in double precision

[h3]Improved Naming of resolving types[/h3]
In addition to the above how you reference slots and gas types by constant has changed. These are detailed in the "Variables" help. You can reference a gas "type" using "GasType.Oxygen" or similar. All available mode types that can be used in scripts are now listed in the Functions help in the IC editor. You may need to change your scripts for this.

[h2]Network Read/Write[/h2]
The ability to reference devices networks via a special syntax. This allows cable networks to be the store of temporary data (Channel0 to Channel7), and IC's to be able to reference a devices network connection, and then load/set data on that connections network.

[h3]This is potentially very powerful, with the primary use case of this is where you want to share data between multiple networks. An IC will be able to read/write to any cable network connected to any device referenced on it.[/h3]

[h3]Network Referencing Examples[/h3]
If we take a normal load instruction:
l	r0	d0	Setting

This will load "Setting" off device 0 into register 0

Now we read something of that devices network connections:
l	r0	d0:0	Channel0

This will load "Channel0" off device 0's connection "0". If you check stationpedia, you can see a list of connections a device has. Every "opening" of all types is a connection, so pipes, cables, chutes - they all count as a connection.

In my example above, this IC is polling for data on that channel. However, there might be no data here, so we created some "NaN" handling instructions to detect and manage this. There are NaN based branch and select instructions.

To save to a cable network, you can reference in the same way:
s	d0:0	Channel0	r0

That will write to Channel 0, on device 0's first connection.
[h3]Cable Network Volatility[/h3]
Cable networks are volatile. If you look at their ID's, you can see they change almost every time you make a cable change. This is because cable networks are just a construct to hold a concept of a "group of cables". Therefore, they should not be considered a good store of information. Each time they make a destructive change, their data will be gone. If you ask them for this information, it will not exist. You will receive a "not a number" value (technically, on the IC, its a special kind of NaN called a QNaN, as a SNaN will generate an exception on the IC).
[h2]New and changed IC Instructions[/h2]
[h3]Load Reagent Instruction Syntax Change[/h3]
[h3]This is a BREAKING change. Old instruction syntax will no longer work. This is regretable, but it was the only way to fix the bug associated with the values being localized for clients and not working on servers.[/h3]

[h3]Referencing Hashes using Preprocessors[/h3]
Hashing is a process of converting the value from a string (meaning text) space to integer (meaning numbers) space or an index value or a string, that has a length of fixed size. Previously with IC chips this meant that you had to look up a devices "PrefabHash" when you wanted to check device types. This was difficult, confusing, and not easy to read.

This HASH preprocesssor can also be used with the sbn and lbn instructions to reference only specific devices named something. These additions might take a bit of getting used to but they are performant and quite powerful.

Now you can use a "Preprocessor Macro" command, HASH(..), to keep the text in your script but have it "Hashed" before being run by the processor. This means you can keep the text of the prefab type in your script, but still have it run correctly in instructions.

In this example, we move into register 0, the hash for Coal Ore. You can find the prefab name of any object using the Stationpedia (F1) in game:
move r0 HASH("ItemCoalOre")

[h3]Load batch Named[/h3]
Instruction allows more precise control over which devices are affected by the load instruction based on their name hash.
lbn    

[h3]Store batch Named[/h3]
Instruction allows more precise control over which devices are affected by the store instruction based on their name hash.
sbn    

[h3]Load Batch Slot[/h3]
Instruction enables batch operations involving slots, streamlining the process of working with multiple devices.
lbs     

[h3]Select NaN (Not a Number)[/h3]
Instruction provides a way to check for NaN values in IC operations.
snan  

[h3]Select NaN Inverse[/h3]
Instruction is the inverse of the snan instruction, selecting non-NaN values.
snanz  

[h3]Branch NaN[/h3]
Instruction allows for branching operations based on whether a value is NaN or not.
bnan  

[h3]Relative Branch NaN[/h3]
Instruction is similar to the bnan instruction, but it branches relative to the current line number.
brnan  

These new instructions expand the capabilities of the IC system and provide greater flexibility and control for players when working with Integrated Circuits.
[h2]Improved Search Features[/h2]
The function help menu now has a search to be able to quickly find the instructions you're looking for.


Trader Improvements


[h3]Trader Navigation and Collision Fixes[/h3]
We've addressed issues with traders colliding with objects and not being correctly centered on the landing pad when loading the world. These fixes ensure a smoother experience for players interacting with traders and provide more accurate positioning for shuttles on the pad.

[h3]Economy Changes[/h3]
We've made several adjustments to the trader volumes, prices, and item availability to improve the balance and encourage player interaction with the trade system. These changes aim to enhance the in-game economy and provide a more engaging experience for players trading resources and items.

Performance Improvements

We're gradually making optimizations to devices that share like components, this time it's devices that have the animated import/export slots. This will help increase performance where there are a lot of these devices present. We've done this for a number of things, such as on/off switches, and we'll continue to work through them.

Localization Improvements

We've added new German translations and fixed some issues with slot names in non-English languages to provide a more consistent experience for all players. We're also working on adding more language support in the near future. To make this process smoother and more efficient, we're developing a new pipeline to allow the community to contribute to translations in an easy and organized way. This will ensure that updates and improvements to the game's localization can be integrated quickly and accurately, providing a better experience for players around the world.

Your support makes this possible

Over the last year, we’ve completely refactored the net code making multiplayer more stable, we’re continuing to improve the connectivity, and we’ve improved some big systems to allow us to bring you better content and new game loops. All this while transitioning to a weekly update cycle.

All the community support, feedback, and involvement have made this possible. So thank you!

[h3]If you like the progress we have made, please consider taking a moment to leave a positive review. This makes a huge difference to the project. We've been working hard for the last five years, and feel confident the game has substantially improved over this time. Many projects steer clear of the hard tasks, and we are proud to have taken them on.[/h3]


Additionally, you can support us by purchasing DLC that we've made to allow those who enjoy the game to support us, and in return get something a little fun to use in-game.

https://store.steampowered.com/app/2089290/Stationeers_Human_Cosmetics_Pack/

https://store.steampowered.com/app/1038400/Stationeers_Zrilian_Species_Pack/

https://store.steampowered.com/app/1038500/Stationeers_HEM_Droid_Species_Pack/

[h3]Changelog v [/h3]
  • Fixed Inventory events were incorrect for some items. This could have caused inconsistent results for some inventory reliant functions. This bug will have existed for quite some time, so there is a chance this causes issues being fixed. Maybe however help with some obscure inventory related bugs.
  • Added extra non-shadow casting light effects to jetpack.
  • Fixed belts and other items causing weird shadow artifacts while a portable light was in the inventory.
  • Removed animators from Sound Cartridges, Research capsules and MKII toolbelt.
  • Replaced Animator on GasMixer with new anim components.
  • Changed OmniPowerTransmitter to use new animatorComponents.
  • Removed Animators from cooked food (added in error): CookedCondensedMilk, CookedCorn, CookedMushroom, CookedPowderedEggs, CookedPumpkin, CookedRice, CookedSoybean, CookedTomato.
  • Removed Animators added in error to some canned food.
  • Removed Animators from dynamic liquid tanks.
  • Deleted DynamicLightNetworkTest debug prefab.
  • Removed Animators from mining backpacks that were added in error.
  • Changed dynamicCrates to use new animation components.
  • Refactored script help search. Now correctly uses type hashes so that text can be matched in search. Also change formatting for colors in search to improve readability.
  • Added automation for setting up activate button prefab.
  • Removed animators from access cards.
  • Removed animators from music machines and replaced with animator components.
  • Removed Debug error print when pooled audio sources destroyed in editor.
  • Fixed TraderShuttles permanently removing AudioSources from the audio pool.
  • Changed Increased size of audio pool and audio collision pool.
  • Added IAudioParent Interface.
  • Refactored audio pool to use IAudioParent for sound positioning.
  • Added Transform Property to thing and removed it from child classes.
  • Changed StopAllAudio function on Thing returns any parented pooledAudioSources to the pool.
  • Implemented IAudioParent interface on trader shuttle.
  • Changed Trader shuttle sounds now send less signal to the reverb channel.
  • Fixed script help for variables was not sorted.
  • Changed Slot variable references for scripts begin with SlotType to be consistent with GasType.
  • Fixed a number of pipe devices not animating their lights correctly: PressureRegulator, BackPressureRegulator, PressureRegulatorLiquid, BackPressureRegulatorLiquid, LiquidVolumePump, Digital valve, LiquidDigitalValve, PipeAnalyser
  • Fixed Animations broken on some devices.
  • Added improved search handling to the variables page for script help.
  • Added enum references to variables page in script help. Now all constants, variables, and enum types that can be used are shown in the variables page. Entering the name directly, or its category directly (eg. "LogicType" or "LogicSlotType") will bring up the item or the category, respectively.
  • Increased number of Virtual and Real voices in the scene, helping to fix audio issues in large bases. This may mean for large bases there could be some performance impact. If so, optimization will follow. Currently the audio was being silently ignored.
  • Removed many coroutines across the project that were generating memory garbage.
  • Refactored GameAudioSource to remove all Coroutines and replaced with UniTasks. This reduces the memory garbage generated with fading and playing audio effects. This is a pretty significant change so any sound exceptions please report. Additional code pass to cleanup and making the process of fading audio cleaner and simpler.
  • Fixed some game sounds stop playing after playing for a while. Pooled audio sources were not being protected from deletion. This means if an object was playing sounds while it was destroyed it would delete the audio source, and it was no longer available in the pool. Eventually when this pool was empty, no more sounds could be played for that pool type. Took the pooling system from Art of the Rail and applied it to Stationeers. This is an efficient and protected generic system that we can use for pooling any objects in the game, not just audio.
  • Changed chute outlet to use new animation component.
  • Fixed some items using animation component not having their state synced when first built.
  • Fixed portable lights and road flares would cast weird shadows when on a local player. Now when on a local player, their local player shadows will be turned off. This means that they will still cast shadows, but not on the first person player (and their helmet) themselves.
  • Changed SBD Silo to use new animation component system.
  • Moved stationpedia page and other classes out of stationpedia
  • Changed ChuteBin to use new AnimComponents.
  • Fixed volume text not showing on stationpedia
  • Changed Sorter to use new animation components.
  • Fixed config cartridge showing wrong logic types
  • Swapped out unity animator of custom components on unloader.
  • Fixed HASH(..) IC preprocessor was occurring on the IC, not before being handed to the IC. This was causing inconsistent results when spaces were in the hash, as the IC has no ability to understand a space is not part of syntax. There were multiple other bad things about the previous implementation. Now the HASH(..) is executed before being handed to the IC, meaning as far as the IC concerned it just receives an integer. This is consistent with the IC architecture, as well as avoiding a serious of other bugs and issues.
  • Added `lbn` IC instruction, `load batch named`. This instruction runs the same as the `lb` load batch command, with the additional step of testing against a hash of the name of the devices. The load instruction will only be applied to devices that have a name hash that equals the one provided.
  • Added `sbn` IC instruction, `store batch named`. This instruction runs the same as the `sb` store batch command, with the additional step of testing against a hash of the name of the devices. The store instruction will only be applied to devices that have a name hash that equals the one provided.
  • Fixed HASH(..) failed to mask where the encapsulated string contained spaces. Now an entire string up until a quotation mark will be hashed. You cannot hash a quotation mark, even if it is escaped. Doing so will at best halt execution.
  • Added IC instruction 'lbs' which load slot variables as a batch. This means you can pass in a device hash, a slot index, and the variable, and depending on the batch mode, you can conduct a math operation and get a value of a batch of things.
  • Cleaned up how instructions are displayed in the Script Help. Now there is a standardized system for displaying the instruction parameters with better information to make it clearer what you need to input.
  • Added depreciated instructions and variables are displayed in the editor. Now they are shown with 'strikethrough' to indicated they are depreciated and should not be used. They are also not shown in the help files.
  • Added ChuteImport Export bin prefabs.
  • Added Lever Animation component
  • Removed unity animator from stacker and replaced with animator components.
  • Added Automation for setting up animator components
  • Updated thumbnails for high volume has canister and extra large wireless battery
  • Added Abstract class InteractableAnimComponent.cs
  • Refactored ExportAnimationComponent to use InteractableAnimComponent class.
  • Added ImportAnimationComponent.
  • Added ImportBin and ImportBinHazardStripes prefabs.
  • Changed Solid fuel Generator to use new import component and removed unity animator.
  • Fixed Error spam when trying to merge insulated pipe with normal pipe.
  • Added Type Name and Type Hash to Reagent entries in stationpedia. Click on their values to automatically copy them to clipboard.
  • Removed Reagent Referencing in IC instruction 'lr' using localized string for lookup. This is a BREAKING change. If you previously wanted to reference a reagent in IC as part of the 'lr' instruction, you had to enter the localized word for that reagent in your language. However, this would break in multiplayer if the players were running different languages, or if the localized text changed even slightly at a later date. See addition in changelog below for how to use the new syntax that replaces this.
  • Added hashed value for 'lr' command. Now to reference a reagent in the 'lr' command you must pass in a register. This brings the instruction in line with others. The syntax is now 'lr '. You can generate the hash using the new HASH(..) preprocessor, such as 'HASH("Iron")' or lookup the hash on the Stationpedia.
  • Added special tradeable items (first pass)
  • infinite filter, extra large gas canister and extra large wireless battery.
  • Fixed Error spam when trying to place a structure somewhere that was blocked by an existing frame.
  • Fixed Could place walls and floor pieces on the internal faces of the Stairwell piece, it was designed to only allow placement of wall pieces on exterior faces (like a frame).
  • Fixed Comms motherboard contact resolve bars behave incorrectly when dish is rotating.
  • Adding comments to help in the creation of world log event types
  • Made world log sync to clients
  • Cleaned SmallGrid Connection Validation function and removed debugging logs.
  • Added LineNumber Logic Variable. Allows the logic system to query the current line number of a integrated circuit executing on a circuit housing. Useful to query the current state of an executing system. You can also write this value using the logic system, but use with caution as change of this value is not expected by the processor architecture, and it will attempt to honor the changes you make and may cause unexpected results. The processor housing will make best efforts to clamp your values to acceptable ranges but you may be able to halt execution when doing this incorrectly.
  • Added `snan` instruction for select 1 to register when provided value is 'not a number', 0 when false.
  • Added `snanz` instruction for select 0 to register when provided value is 'not a number', 1 when false.
  • Added connections section to Stationpedia pages. This will list all connection information for any device that supports connections. This means any chute, pipe, or cable openings on the device. This include includes a number that is the connection "index", which is used for referencing that connection with the new device network syntax on Integrated Circuits.
  • Added a preprocessor macro to IC processor to allow the generation of hashes at compile time. Using this you can automatically generate PrefabHashes using human readable text, that will be compiled into a hash before execution. To use this, surround the prefab name in the words, and in quote marks for example: HASH("PrefabNameHere"). Note that the HASH and the contents of the string are case sensitive. Using a different case inside the string will generate a different hash.
  • Refactored MIPS processor constants. Now have 'nan', 'pinf', 'ninf', 'pi', 'deg2rad', 'rad2deg', and 'epsilon'. These can be used anywhere you can use a number.
  • Added processor constants to be included in script help function area. Autogenerating their descriptions and values, and searchable.
  • Remove old prefab file for GasTankAir that had been unused for many years and was causing errors.
  • Fixed Slots not having the correct name in non English languages
  • Added new German Translations
  • Added Structures and devices now show helpful error tooltips when they can't be built. Previously the tooltip system would fall back to the "requires support" message which was often incorrect and misleading.
  • Added Second pass of the Device Network Referencing for MIPS instructions. Now correctly able to load and store from the 'Channel0' to 'Channel7' variables. 'Setting' variable is no longer supported as it was from first pass.
  • Added entering a command or variable name exactly as it is spelled and pressing enter on script reference screens will now bring up that entry. So entering 'l' and pressing enter, will show the 'l' instruction.
  • Added 'bnan' MIPS instruction that branches when provided value is 'not a number'.
  • Added 'brnan' MIPS instruction that relative branches when provided value is 'not a number'.
  • Added log panel to comms motherboard
  • Missing file from prior commit
  • Added Export Animation component. Removes need for unity animator on new devices with export slot.
  • Added ExportGate prefab.
  • Changed Deep Miner swapped out unity animator Export handling with new component as test case for new system.
  • Refactored help for Slot Variables, Variables, and Functions within the IC Editor. Now uses a threaded text search system and updated the UI to match the stationpedia UI. Uses the same search options as stationpedia (separate blocks to search using comma, etc...).
  • Added First pass of Device Connection Referencing for Integrated Circuits. Currently load and set support use of : where conn is the connection index for the device. This then attempts to set or load on that network. Cable Networks now implement ILogicable, meaning they can have data stored or read from them. They are, however, volatile. They should not be considered to exist always and should be used for data transmission rather than a reliable data store. By default their data will be NaN. Future functionality will make it easier to check NaN inside IC code.
  • Optimized Device connection registration to cache their connection data for cheaper checking for open ends. May provide minor performance improvements when editing very large cable, pipe, or chute networks,
  • Fixed Text parsing bugs with IC editor related to device and register referencing. Additional optimizations for text parsing IC scripts were also applied, but unlikely to be significant enough to notice in the brief time parsing occurs.
  • Added logging system to keep track of trader events
  • Decreased T1 traders to have 75% volume, down from 100%, on bulk tradables
  • Increased T3 Traders to have 150% volume, up from 120%, on bulk tradables
  • Fixed ship fuel purchase text not mentioning that it is x100 mole.
  • Increased Chance a ship wishes to buy fuel to 1/2, from 1/5
  • Increased volatile ice sale price from .5 to .75 on the ore trader
  • Decreased oxite, and volatile ice trader volume by 75% on the ore trader
  • Decreased volatile gas sale price from 10 to 7.5, and increased trader volume from 1000 mole to 2000 mole from the gas trader.
  • Decreased volatile ice buy price from the gas trader from 1 to .8.
  • Decreased all max ice purchase volumes from 1000 to 600 on the gas trader.
  • Fixed shuttle position not being correctly centered on the pad when loading world if the pad is evenly sized
  • Tweaked large shuttle size and collider size so they no longer collide with walls in a 6x6 hangar
  • Fixed logic transmitters getting added to the transmitters list twice making cycling though active transmitters get stuck
  • Fixed logic transmitters list not being cleared between loading worlds
  • Fixed bug where trader contacts would get stuck on the comms terminal after departing mid approach or being destroyed
  • Fixed gas trader will buy used filters
  • Fixed missing thumbnail on 'ship fuel' trade item
  • Added missing fertiliser slot name to localisation
  • Made hydroponics tray and tray device fertiliser slots use the same scaling
  • Fixed a few null ref exceptions that could occur with comms motherboard when disconnecting landing pad
  • Fixed bug where item counts in vending machines could be higher than expected if more than one device is connected to the landing pad.

Performance Power-Up

Performance


In this update, we've focused on performance, specifically for players with large automated bases experiencing lower frame rates. Key improvements include optimizing physics and chutes, reducing physics update tick time by 50% through better caching for dynamic objects in slots, and improving server tick for bases with many chutes and chute devices.

Additional enhancements encompass streamlining the decay tick, Trading Motherboard Computer screen interface, Satellite Dish scanning logic, and the Computer screen render optimization. These performance updates aim to provide a smoother, more responsive gaming experience, particularly for players with complex bases.




Hem Droid Quality of Life Improvements


https://store.steampowered.com/app/1038500/Stationeers_HEM_Droid_Species_Pack/

We've added some quality of life improvements for those who own the Hem Droid DLC. Although these have been designed for the Hem Droid the Disposable Battery Charger can be used by other species as well, to recharge their suit battery.




[h2]Hem Droid Sleeper[/h2]

While regular sleepers have catered to the other species, Hem Droids have been missing a dedicated option. The Hem Droid Sleeper is specially designed for Hem Droids. As long as it has the required power it will keep Hem Droids batteries charged.

[h2]Disposable Battery Charger[/h2]

For emergency situations we've introduced the Disposable Battery Charger that can partially recharge your battery immediately. When used it is consumed but will recharge the battery of your suit, or if you’re a hem droid, the battery in your suit.

[h2]HEM-Droid Repair Kit[/h2]

The HEM-Droid Repair Kit has been added to the game for players using Hem Droid characters and functions as the heal pill does for the other species.


Self Contained Stairwell


We've included a 3x1 stairwell to offer a more compact option for moving up and down your base. This new stairwell design aims to optimize space and improve navigation within your Stationeers base.



Localization and Voice Packs


We're actively working on improving our localization from multiple angles: Ensuring more of the game is localizeable, having the game localized for some languages, as well as improving the pipeline, both for us as well as for community translations.

We are paying for languages to receive a full new pass of translation, and then will accept community suggestions for better localization. This should help provide cleanup on the current messy state where some English strings were changed, but not retranslated.

[h3]Chinese Voice Pack added[/h3]

The voice pack we're adding this week is Chinese! You can also select the voice pack independent of the localized text. This means you can have your suit voice pack warnings in German, Russian, or Chinese, while still having the text in English. More voice pack languages will be added in the future as well.



Your support makes this possible

Over the last year, we’ve completely refactored the net code making multiplayer more stable, we’re continuing to improve the connectivity, and we’ve improved some big systems to allow us to bring you better content and new game loops. All this while transitioning to a weekly update cycle.

All the community support, feedback, and involvement have made this possible. So thank you!

[h3]If you like the progress we have made, please consider taking a moment to leave a positive review. This makes a huge difference to the project. We've been working hard for the last five years, and feel confident the game has substantially improved over this time. Many projects steer clear of the hard tasks, and we are proud to have taken them on.[/h3]


Additionally, you can support us by purchasing DLC that we've made to allow those who enjoy the game to support us, and in return get something a little fun to use in-game.

https://store.steampowered.com/app/2089290/Stationeers_Human_Cosmetics_Pack/

https://store.steampowered.com/app/1038400/Stationeers_Zrilian_Species_Pack/

https://store.steampowered.com/app/1038500/Stationeers_HEM_Droid_Species_Pack/


Change Log v0.2.3920.18842
  • Added vertical sleeper variant for robots. Will regenerate robot battery or suit battery if present. Will damage non robotic entities.
  • Added HEM-Droid Repair Kit. Fully repairs HEM-Droid character. Created at Tier 2 electronics printer.
  • Added 1x HEMDroid Repair Kit to Starting load-out for HEM-Droid characters.
  • Added DisposableBatteryCharger. Disposable single use chemical battery that will partially recharge a HEMDroid battery or Stationeer suit battery.
  • Added stairwell variants to stairs kit
  • Added Chinese voice language pack
  • Added countanimator command.
  • Added debounce to server search
  • Fixed incorrect slot names for sleepers and cryo tubes
  • Update description for stairwells and droid sleeper
  • Fixed bug where you could call down the same trader to multiple landing pads. Now, when trader begins approach, the land button will be disabled. Also added a safety check so stop this behaviour if called by other means.
  • Changed sleeper and cryo tube behaviour with regards to robot batteries. Now, robot batteries will continue to drain inside regular sleepers and cryo tubes. To maintain robot batteries when offline, use the 'droid' variant of the sleeper.
  • Updated droid sleeper to use more power when charging
  • Fixed bug where you could call down the same trader to multiple landing pads. Now, when trader begins approach, the land button will be disabled. Also added a safety check so stop this behaviour if called by other means.
  • Changed sleeper and cryo tube behaviour with regards to robot batteries. Now, robot batteries will continue to drain inside regular sleepers and cryo tubes. To maintain robot batteries when offline, use the 'droid' variant of the sleeper.
  • Updated droid sleeper to use more power when charging
  • Fixed GrowLights that are turned off when game saved stop working on reload.
  • Changed GrowLight light radius to more closely match area of effect on plants.
  • Fixed DisposableBatteryCharger sounds not playing sounds when charging another player.
  • Fixed Emissive material on DisposableBatteryCharger, now show blue emissive when charged and red when discharged.
  • Fixed Can use DisposableBatteryCharger when it has been discharged.
  • Fixed Some issues around grow light plant lighting.
  • Made trader shuttle collision box a little smaller. Tweaked how often collisions can occur by adding a debounce time.
  • Fixed Laptop positioned incorrectly in right hand.
  • Refactored set hand position function to make it more flexible.
  • Changed data and power cable lists on device from fields to properties
  • Fixed fertilizer not affecting plant yield
  • Re added changes from rev. 18797 and fixed a few bugs where batteries and apcs weren't supplying power correctly
  • Fixed bug where devices connected through power port only would be accessible by logic. Now, devices will only be accessible by logic when their data port is connected.
  • Fixed Clients see airlock control as disabled when joining.
  • Fixed AdvancedAirlock doesn't update PressureExternal and PressureInternal values on clients.
  • Fixed Settings would get saved when game was paused. Possible cause of access violation error when saving game bug.
  • Changed moved sound mixer channel volume management out of the Settings.OnValueChanged Function to AudioManager.
  • Fixed Changing music volume setting would reinitialise main menu scene.
  • Fixed Chinese Suit Voice assets too loud.
  • Fixed Voice assets to use Compressed in Memory LoadType.
  • Fixed A number of sounds not playing (regression rev. 18757).
  • Fixed server list search
  • Fixed bug where all tablets in the world would receive scroll events regardless of whether they were in your hand
  • Fixed no server password icon displaying on the server List
  • Fixed none of the filters on the server list working
  • Optimised ServerTick. Bases with lots of chutes and chute devices should see a small fps gain.
  • Optimized Decay tick. Now runs on threaded game tick rather than blocking main thread.
  • Fixed dead bodies still being able to be moved around in some instances
  • Optimised Trading Motherboard Computer screen interface. Reduced time to refresh the screen from 5ms to 0.2ms.
  • Made some visual tweaks to the plant analyser cartridge to make it more consistent with the other cartridges
  • Fixed incorrect capitalisation of kPa in some instances
  • Fixed IC motherboard dropdown not matching the correct chip holder
  • Fixed IC motherboard connected devices displaying wrong code
  • Fixed spelling mistake in plant analyser cartridge
  • First pass on tidying up tablets/cartridges
  • Made scrolling better (still have yet to find the cause of scrolling not working sometimes)
  • Removed paging from network analyser as regular scrolling is now more usable
  • Replaced much of the plant analyser cartridge object with prefabs
  • Changed font for plant analyser and config cartridge
  • Moved Satellite Dish scanning logic onto the power tick.
  • Fixed Computer screen render optimisation was turning on when any player was in view screen is now only rendered when local player is in view.
  • Optimized Physics caching for dynamic objects in slots. Result: 50% reduction in physics update tick time. Players with lots of physics items in slots should notice a small fps improvement.
  • Fixed a few issues around dropping suits and uniforms which could cause bodies to disappear for clients
  • Fixed Using screwdriver on power-tool to remove battery be would actioned even when interaction was aborted.
  • Fixed bug where starting/ending a game quickly would leave the screen faded to black
  • Fixed TransformerMedium Reversed not registering its lower half on the small grid.
  • Fixed Laptop rotates 90degrees when dropped.
  • Tweaked wording in one particular hydroponics tutorial stage
  • Fixed battery/motherboard drop position when removed from laptop.
  • Cleaned up chat canvas code
  • Potential fix for chat bubbles not billboarding
  • Removed ping column until we can provide that information
  • Removed GetIntegerSafe Function as it was causing a lot of GC allocation and general slow down.
  • reverted some changes to chat causing a potential build error

Hotfix v0.2.3893.18771

This hotfix is for the programmable chip motherboard matching the incorrect devices to the displayed items

The Multiplayer Update

We will be getting back to the larger themed updates soon but for now, we’ve been focusing on two main things: Improving multiplayer through the addition of Steam P2P, and bug fixing and improvements.

Steam P2P




[h3]Why was it removed in the first place?[/h3]
When we prioritized the low-level changes during the multiplayer refactor, we had to temporarily remove the existing implementation of Steam P2P. Now that we've completed that work, Steam P2P has been re-enabled.

[h3]What does this mean for you?[/h3]
Previously, hosting a game required enabling upnp on your router or manually port forwarding, which could be difficult or impossible on some networks. However, with Steam P2P, all the tunneling is handled automatically, so you can connect to the host using your Steam ID.

If Steam P2P is not available for some reason, the game will fall back to direct connect, or you can manually enter the IP and Port.



[h3]What's next?[/h3]
This now puts multiplayer Stationeers in the best state that it's ever been. Earlier today we had a 10-player play test that went very smoothly. If you've been holding off playing due to connection issues preventing you playing with your friends then perhaps now is a good time to try again.

Of course we'll continue to harden and polish multiplayer but we are very happy with the progress over the last 12 months.

Plants and Hydroponics

This patch we’ve been focused on finding and fixing a number of bugs and UX issues associated with growing plants. We’ve improved the UX of the plant analyser cartridge to clearly show when a plant is deficient in either light or darkness. Time spent in a light or dark deficient state will cause the plant to accumulate illumination stress which will slow down growth speed.




Bug Fixes and Improvements

We’ve done a lot of bug fixing to address some issues that have come up from the last updates, as well as a few older bugs. Next update will contain more of this kind of work as we take a step back to harden before we start work on the next big packet of work.

Your support makes this possible

Over the last year, we’ve completely refactored the net code making multiplayer more stable, we’re continuing to improve the connectivity, and we’ve improved some big systems to allow us to bring you better content and new game loops. All this while transitioning to a weekly update cycle.

All the community support, feedback, and involvement have made this possible. So thank you!

[h3]If you like the progress we have made, please consider taking a moment to leave a positive review. This makes a huge difference to the project. We've been working hard for the last five years, and feel confident the game has substantially improved over this time. Many projects steer clear of the hard tasks, and we are proud to have taken them on.[/h3]


Additionally, you can support us by purchasing DLC that we've made to allow those who enjoy the game to support us, and in return get something a little fun to use in-game.

https://store.steampowered.com/app/2089290/Stationeers_Human_Cosmetics_Pack/

https://store.steampowered.com/app/1038400/Stationeers_Zrilian_Species_Pack/

https://store.steampowered.com/app/1038500/Stationeers_HEM_Droid_Species_Pack/


Change Log 0.2.3888.18748
  • Fixed missing 'seeding' logic slot description in stationpedia
  • Fixed missing emissive material on centrifuge info panel
  • Fixed incorrectly coloured thumbnails for turbo pumps
  • Fixed erroneous EndConnection method call in Client.Disconnect
  • Added delay after disconnect handshake
  • Changed Extracted P2PSession request processing into its own function.
  • Changed Ordering of Disconnect handshake message.
  • Removing incorrect log saying the steam lobby was instantiated incorrectly, but it wasn't
  • Removed some unnecessary steam p2p debugging logs
  • Fixed Clients pass in host steamId 0 when calling P2P disconnect.
  • Added Separate Client/Server logic for p2p Disconnect.
  • Added ClientDisconnected Callback to on Client.cs when client Disconnects from steam p2p.
  • Cleaned up logging for DeleteOutOfBoundsObjects.
  • Fixed floor grating kit collider size
  • Fixed drain switch collider size
  • Fixed dynamic gas canister tooltips not appearing when the canister is wrenched to a connector
  • Fixed Broken Build State Prefab errors on centrifuge devices.
  • Improved Error handling when loading devices with build-state errors.
  • Fixed advanced composter not restarting processing when loading save
  • Added "DeleteOutOfBounds" Command. Removes everything that is more than 8km from world origin.
  • Added When Loading a game everything further than 8km from world origin will be deleted.
  • Fixed Index out of range exception on Atmospherics thread caused by atmospheres outside of playable area.
  • Adding steam lobby setup - waiting for invite acceptance to be fixed before enabling this
  • Fixing steam p2p disconnections
  • Fixed race condition breaking steam lobbies occasionally
  • Removed unused logs
  • Added Setting UseSteamP2P.
  • Removed Setting P2PHostEnabled.
  • Added Client side connection logic for using SteamP2P to connect via server browser. Client will attempt to connect using SteamId and if fail will fall back to using RocketNet direct connect. Note: currently disabled until Master Server is updated to serve SteamId in session data.
  • Added "SteamWorks" scripting defines to ProjectSettings.
  • Fixed an issue where wearing and removing a suit could cause your body to not be rendered when far away from the removed suit
  • Fixed Access Cartridge doesn't work on large fridge.
  • Added green/red colouring on plant analyser text for when required/toxic gases are in/out of range.
  • Fixed PlantAnalyser reads growth data from dead plants.
  • Fixed If GrowthEfficiency for plants became greater than 255% it would wrap around back to 0.
  • Fixed Wall heater incorrect colour when turned off.
  • Removed 'create character' popup when joining game
  • Fixed issue where after character is destroyed (e.g. via cleanup) you can't respawn and have to exit and rejoin
  • Fixed Logic memory and logic Dial tooltip showing setting as 32Bit floating point number.
  • Fixed Logic tooltips now show numeric values using correct culture.
  • Fixed build error from light blueprints.
  • Fixed light blueprints show broken models
  • Fixed Newly built lights have a lens flare effect even though they are turned off.
  • Fixed Blueprints showing flare on wall lights.
  • Fixed several places where values were not syncing on clients correctly
  • Fixed Tablet could only show Illumination stress up to 255%. (Illumination stress has no cap but will decrease faster the higher the value once the plant is no longer deficient).
  • Fixed Illumination stress value not serialized.
  • Fixed CarbonDioxide requirement percent display was show HydrationEfficiency value on plant analyser tablet.
  • Added HydrationEfficiency to Plant analyser tablet.
  • Changed Plants that are light or darkness deficient will recover x2 faster once put into the correct state.
  • Added Light/Darkness Deficient text now shown in red on plant analyser.
  • Fixed suit pressure and temperature setting not syncing for clients
  • Fixed missing tool names for some tooltips
  • Fixed Small colliders on Pipe Heaters.
  • Fixed Error when opening pipe heater placement blueprint.
  • Fixed Sometimes proximity sensor and occupancy sensor data-port would not connect to cable.
  • Fixed Sleeper "get In" collider size such that it doesn't block interaction with items in the sleeper.
  • Changed "get in" interaction time to 0.5s.
  • Fixed Labeller now accepts correct symbols for the users current Language Culture. (i.e German language users can now use the correct decimal point symbol "," for their region.)
  • Fixed ic motherboard arbitrarily ordering connected devices in its dropdown. Will now order alphabetically.
  • Fixed LogToClipboard command
  • Fixed spelling error in comms terminal.
  • Rounded wattage values in comms terminal
  • Fixed Hay not processable by recycler. Putting 1 hay in recycler now adds 1 Biomass to the recyclers internal reagent mix
  • Fixed some ic error tooltips not being cleared after errors are resolved
  • Adding Steam Peer-to-peer - currently disabled until steam's "Join Game" option from friends list is working
  • Fixed small collider on small battery charger.
  • Fixed Plant analyser works when unpowered.
  • Fixed Some genetics value ranges were returning incorrect data for seeds when analysed with plant analyser.
  • Added missing tooltips to ic chips in laptop and aimee slots
  • Fixed a few IC issues. Previously chips would hold a single error state for both compilation errors and runtime errors. Have split this into two separate errors. Devices holding ic chips will now flash error if the chip has a compile error or run time error.
  • IC chips with compilation errors will now no longer execute
  • IC chips with errors should now show the correct tooltip when adding/removing them from slots
  • improved logging around upnp
  • Fixed inconsistent arrow key and return key behaviour in ic script editor when paused
  • Removed all functionality from deprecated landing pad.
  • Added More robust handling of spawning and de-spawning of trader pilot.
  • Fixed Trader Pilot could get left behind when ordering shuttle to depart before landing completed.
  • Fixed manufacturing devices showing the incorrect next item on the tooltip
  • Fixed misspelled prefab name in recipes
  • Moved prefabs from resources to assets/things attempt two
  • Reverted asset move
  • Moved all things in resources folder to assets/things
  • Fixed Client joining while in IC editing window puts input into an invalid state. Now when a client connects, if the player is using a UI window it will be saved (if applicable) closed.
  • Fixed Null Reference exceptions when shuttles crash into each other.
  • Consolidated some duplicate clean up code in shuttle movement Unitasks into a clean-up function.
  • Fixed Unable to connect to a server after a failed connection attempt has occurred.
  • Added RemoveMoles AtmosphericEventInstance function.
  • Fixed Watering plants with water canister added water at 0degrees kelvin.
  • Added Correct plant tooltip for when plant is dead.
  • Fixed instance where gas in a pipe network would not get saved during autosave, causing the pipe to be empty upon loading the saved game.
  • Added Autosave now schedules the Game Simulation Tick to pause at the end of the current execution and then awaits gameTick pause state before proceeding to copy the world data.
  • Added AutoSave will cancel if it detects atmospherics data modified during the save process.
  • Added If an AutoSave is cancelled due to invalid data it will reattempt to save again after a 2second cooldown.
  • Fixed LFO-Volume waveforms were not timed correctly on clients.
  • Fixed LFO-Volume settings not updating in multiplayer.
  • Fixed Light Round, Light Round Angled and Light Round Small not casting shadows.
  • Changed Several Plant Analyser Cartridge values to better inform the player of the plants light needs: Illumination Stress, Light Deficiency, Darkness Deficiency.
  • Light Deficiency and Darkness Deficiency will show "No Deficiency" if the plant has received enough light and darkness. Illumination stress will accumulate if the plant is deficient in light or darkness. When these deficiencies are resolved the stress will begin to reduce slowly over time. Illumination stress will reduce Light efficiency which is a multiplier to growth efficiency.
  • Fixed Light and Darkness accumulated values not being serialised for plants.
  • Fixed When a planter is lit by multiple grow lights turning off one grow light causes the plant to be unlit.
  • Fixed Plants could grow when they had no water.
  • Fixed dynamic hydroponics getting lit at 180% light intensity by grow light.
  • Fixed Plant analyser cartridge does not clear state when looking away from Plant.
  • Optimized Performance for grow-lights.
  • Changed Grow light emitter to point source, reduced radius of grow light emitter to match the current effective radius of grow light. Removed shadow casting from grow light.
  • Updated incorrect blueprint on refrigerated vending machine kit
  • Removed old Unity NetworkTransport networking method
  • Removed ROCKETNET and ROCKETNET_LOGGING defines since they are no longer needed
  • Fixed comms motherboard not correctly sorting landing pads in the same manner as Satellite Dishes.
  • Fixed saved landing-pads that did not have a centre or Gas storage would print an error on load.
  • Made custom project view fetch even faster
  • Fixed jetpack thrust settings not updating for clients
  • Fixed bug with overflow chute not overflowing when output end is blocked
  • Fixed landed shuttles not loading in at the correct rotation
  • Made custom project view fetch faster