1. Stationeers
  2. News

Stationeers News

Stationeers Reboot | Our Refactor is ready!

We have been working hard over the last eight months, building a new team and adopting a new approach based on lessons learned with our other studio projects, such as ICARUS. As part of our review of the project, and where it was at, we identified major changes that needed to occur in the project, in order to progress the game to where we all want it to be.

This rework would require us to touch nearly every system in the game, reworking from the ground up systems such as Multiplayer and how our memory was managed in the game. This was a huge effort, and very daunting - taking us away from the regular update cadence we have been providing. Finally, all this hard work has bought us here: the start of a great process of discovering what Stationeers can really be.

Optimization




Much of our work has been devoted to redoing entire systems so that they work well at scale. Our teams on our other projects provided input and advise, bringing knowledge from some very senior staff with decades of experience to help the project. This has allowed us to provide massive improvements in performance and stability for both singleplayer and mutliplayer.

This video from a community member demonstrates some of the optimizations we were able to achieve:
https://www.youtube.com/watch?v=XlO1sBk7JqU

Where to from here




Pushing the work to "main" is really just the first step. During this period of refactoring the foundations we have been sketching out what we want the game to be, and with this work done, we can begin updates like we were before. However, there will be one big difference: we won't be restricted by the performance and systemic issues like we were before.

Our focus for the next few weeks will be continuing to bugfix and improve this build, while we work on our additional content to come.



How you can help


We are immensely proud of the efforts of our team, and grateful for the assistance of the other teams at the studio - who have been able to bring experience and advice to the team to get us here. Please do consider leave a positive review for our efforts so far, and help us spread the word about the reboot of the project!

Additionally, please consider supporting us by buying the DLC we put together as a form of "supporters edition" for the game.

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

Dedicated Servers


Running the game with the parameter -batchmode will run it in dedicated server mode. We haven't yet got this build deploying in the Stationeers dedicated server branch. This is a completely different approach, much more optimized and robust. We will be releasing these as soon as we can, but the upside is they provide a tremendous step up from the server offering we had before. This will give server hosters the ability to run true public servers, with good player numbers. This was totally impossible before.

Accessing the old version


The previous version is available on the "previous" branch on steam, and will remain there indefinitely for those who have any issues with this new version. However this will be unsupported, as we can't apply any fixes to it.

Join us on Discord


Join the crew on discord and let us know your thoughts and any bugs or issues you have. This update would not have been possible without the tremendous support of the community over the last eight months, and since the start of the project.

Checkout our other teams projects!


These other projects have been able to help us with assistance and advice, please check them out to see if you'd enjoy them.

https://store.steampowered.com/app/1286190/Art_of_the_Rail/
https://store.steampowered.com/app/1149460/ICARUS/

Changelog

There are so many fixes, optimizations and changes (+900 changes, across +10000 files in the project), that steam won't accept that much text in a post!
TOO MANY CHARACTERS FOR STEAM, SEE FULL LOG ON PASTEBIN!
  • Another fix for helmet offset bug
  • Fixed NRE when requesting network data and a client is null
  • Fixed missing script editor error when selecting game controllers
  • Fixed two rovers being created when building a rover.
  • Fixed BuildStates being set twice on server.
  • Fixed Plants and seeds throw error spam when destroyed by lava.
  • Fixed On Loading game tanks/portable machines attached to connectors would be halfway in the floor.
  • Added server settings changes support
  • Fixed NREs when trying to join a server from the list
  • Fixed Error spam thrown by chickens
  • Fixed Can't drag dead players.
  • Fixed Can't drop your old body if you pick it up after respawning.
  • Fixed Key bindings not being reset after respawning.
  • Fixed Gasping breath on starting a game with a new character.
  • Fixed player animations not being synced to clients when the is occluding them
  • Fixed advertise server setting not working
  • Changed Slot rotation of canned food.
  • Fixed Double clicking on a server in the server browser doesn't work.
  • Fixed layering issue with GasMask when removing/add to head slot
  • Fixed Items in Lockers incorrectly rotated.
  • Added client side terrain generation to significantly reduce the amount of data sent over the network
  • Made ore generation actually deterministic to allow for client side terrain generation
  • Optimized ore vein generation
  • Fixed loading screen from being disabled to early for joining clients
  • Added destination IP for meta server
  • Potential fix for when suit becomes invisible to some players after client joining
  • Fixed gameObject layering issue for backpack and helmet when entering non-human slots
  • Fixed bed's missing material.
  • Fixed Objects in Right hand are rotated backwards on Load and Join.
  • Fixed When using ParrelSync in editor additional clones do not get assigned a unique client ID when a clientId is assigned to the primary instance.
  • Fixed issue with reagent mixer switch not showing error state
  • Fixed animation curves not being deserialized correctly on clients
  • Fixed New elevators Starting with a speed of 0.
  • Fixed Gas Canisters bought from Gas Traders were Empty.
  • Refactored TraderContacts to iReference-able system.
  • Fixed Trader Contacts not syncing to Clients.
  • Fixed Trading on clients not synced to server.
  • Fixed Electronics thread error message when un-loading world.
  • Fixed Computers sometimes unable to to see devices on their network (i.e Computer with CommsMotherboard not receiving updates from satellite dish).
  • Fixed Unable to buy more than 1x of a non-stackable item from a trader in a single transaction.
  • Fixed respawn conditions not loading when app starts
  • Fixed and improved respawning system where respawn conditions weren't assigned properly
  • Removed embedded TMP package in favour of registry version
  • Removed embedded TMP package in favour of registry version
  • Changed some min/max and default settings values
  • Fixed wrong material assigned.
  • Fixed refresh rate setting showing "resolution"
  • Removed more settings from menus
  • Added RefreshRate as a new dropdown in settings menu
  • Fixed NRE when trying to print to console before buffer is initialised
  • Fixed compiler error in AtmosphericScattering. #endif in wrong place.
  • Removed old console panel and moved remaining logs to be output through the new console
  • Removed most instances of from logs
  • Fixed autosave not working until the setting was toggled off and on again
  • re applied custom world fix
  • Fixed Building new Sequencer music machine prevented game from saving.
  • Fixed Error spam when looking at input screws of a new sequencer machine.
  • Fixed Clients unable to interact with Logic Math Chips: Compare, Math, MathUnary, MinMax & Select.
  • Added Stationeers can now set the speed of an elevator by writing to the ElevatorSpeed Logic Variable on any of the shafts (speed value written will propagate throughout the Shaft network).
  • Fixed Error on Server when clients body decomposes.
  • Fixed Error Thrown by suit when a body decomposes.
  • Fixed custom worlds in multiplayer
  • Fixed world setting data not being set to clients
  • Fixed ReagentProcessor not turning on when Bench is on
  • Fixed Elevator Speed Slow down. Have increased speed over original by 50%.
  • Fixed a bunch of errors thrown when clients die.
  • Fixed Stun Damage not healing over time when in a safe breathing environment.
  • Fixed throw time. Back to 1 sec (was accidently increased when throw power was increased)
  • Changed Ragdoll stops after a period of time on death.
  • Fixed humans eyes being opened when sleeping
  • Fixed humans eyes being opened when dead
  • Fixed sensor lens graphic not disappearing after ore is mined
  • Fixed Glitchy timing for Music machines clients.
  • Tightened up timings of rhythmic playback on music machines for host/single player.
  • Fixed SawLead patch not working on Leads cartridge.
  • Added trigger zone to computers to turn off screen when outside bounds to save on CPU costs for world UI
  • Fixed dropdown issues on Sorter and Fabricator PC screen
  • Improved scrolling with up/down buttons on computer screens.
  • Fixed Error spam on Opening Server browser.
  • Fixed music machines not working on client.
  • Another Fix for Crash on client when merging Networks.
  • Added support for joining from server list (upcoming feature)
  • Fixed New Elevators built in Beta not working. You can fix any bugged elevators in your save by either: disassembling them and rebuilding them OR using a logic writer to set all the elevator Shafts On Variable to 1.
  • Updated Elevator carriage tooltip to show when an elevator is not working because the shaft its trying to move through is turned off.
  • Fixed Hard crash on clients that could happen occasionally when networks were merged.
  • Added better syncing of Filter enum on comms motherboard
  • Removed batch mode check for a series of initialisation calls when app start
  • Added an overload to process one cmd line for CLI commands
  • Changed Increased Throw power by 50%.
  • Fixed Velocity of client players now effects the velocity of thrown items. (previously only worked for host)
  • Fixed Items dropped by clients drifting to the start drop position.
  • Fixed Items precision placed by clients drifting slowly to target position (they now snap).
  • Fixed Throwing sound not playing.
  • Fixed client not being able to depart a trader
  • Fixed client side filtering for comms computer
  • Fixed render distance on modular rocket itemkits.
  • Fixed SmartGasCanister not updating visualizer on clients.
  • Fixed instances where tablet (and other tootips) were not showing fractional values.
  • Removed some extra logging in dedicated. not needed
  • fixed NRE for internal atmosphere on dedicated server
  • Fixed Internal Atmosphere is not initialised on Dynamic Gas Canister when starting new game in Dedicated server.
  • Removed more DEDICATED_SERVER defines
  • fixed manual saves on dedicated server
  • Fixed Removing a pipe,cable or chute from a network would cause adjacent network elements to disconnect from their connected devices.
  • Fixed items in slots having the wrong position/rotation
  • Fixed issues with changing appearance within a game
  • Fixed Dynamic items stuttering when rotating on clients.
  • Fixed ToggleLogBps command.
  • Removed unnecessary error logs
  • Fixed syncing issues with player cosmetic data
  • Removed half precision for rotation and position on dynamic thing update messages
  • Fixed Error where server send bad new network data on join "Error: Clients should not be assigning a new Reference. Client is trying to assign a new reference for CableNetwork: 0".
  • Disabled Some network logging.
  • Potential fix for items on characters being incorrectly rotated/positioned on join.
  • Removed some debuging code
  • Fixed client having local authority over everything until they take control of a character
  • Fixed AngleGrinder spin-down sound plays when saving game.
  • Fixed AudioEventUpdates being added to queue for things that didn't have sounds.
  • Fixed Signs sync correctly to clients.
  • Fixed LightOnOff Sounds play when suit battery is empty.
  • Changed Halved the size of the terrain clutter
  • Fixed stuttering movement on physics items when piled on top of each other.
  • Fixed error thrown on client when body decays.
  • added support for spaces for arguments surrounded with quotations in console window. Use case: 'loadgame' command for paths or filenames.
  • added 'leave' or 'exit' command to exit a game session
  • Changed exiting client side message to a lower level to handle all IExitable implementations
  • Fixed Client not receiving the last atmosphere update when an atmosphere is evacuated.
  • Fixed console input not working by disabling in world debugging until solution can be found
  • Fixed Rover tire sound playing in vacuum.
  • Fixed Rover movement is stuttering in single player.
  • Fixed client getting out of Sleeper
  • fixed issue where join message was OK but didn't break loop resending if failed.
  • added log command
  • Added save commands to ingame CLI
  • Improved text wrapping in ConsoleWindow
  • Fixed Build Error.
  • Fixed Some devices get disconnected from a cable network when it was merged with another network in certain configurations.
  • Fixed Devices labelled by clients or server do not have the custom name set on other clients.
  • Fixed Pipe label is invisible when placed on server. (now shows default text).
  • Fixed Playing FX on fire Extinguisher when in batch mode.
  • Modified Sentry Config
  • Added some verbose logging to join queue process
  • Fixed Steel frame not blocking sound.
  • Fixed Exception thrown by suit on join: UnityEngine.Renderer.set_enabled(UnityEngine.Renderer,bool).
  • Fixed Exception thrown by battery when disconnecting.
  • Added batch mode checks to sound playback in audio manager.
  • Fixed spawning things through CLI
  • First pass on trade transactions on clients (Trading now work on clients but with some bugs)
  • Improved CommandLine code for future proofing scaling
  • Fixed Clients not seeing Global Atmosphere Temperature correctly (bug Introduced rev.16267).
  • Fixed Incorrect interaction tool-tip on plants in Dynamic Hydroponics planter for clients.
  • Fixed Clients not seeing plants at correct growth state on join.
  • Fixed Seed packets throwing an index out of range exception.
  • Fixed mismatch in read/write type in client trade request message
  • Fixed NRE thrown by suit.
  • Fixed Index out of range error caused by suit.
  • Second iteration on fixing traders
  • Added the ability to re-smelt advanced alloys in the advanced furnace, as the inability to do so was confusing to players.
  • fixed Constantan only having a upper smelting temperature of 9999, instead of the 99999 all others hav
  • Fixed Case where server could send an internal atmosphere update with an unassigned parent ReferenceId. It caused error spam on clients when connecting to a Dedicated server.
  • Fixed Atmospherics exception caused by changing the DeregisteredAtmospheres collection on the thread during NetworkUpdate Write function.
  • Fixed Gas Displays not showing the correct Mode on clients when joining.
  • Fixed Errors thrown on client and server when joining during a storm.
  • Fixed Advanced composter creating 120x too much gas at super cold temperatures.
  • added error log when client is receiving atmosphere.parentId as 0.
  • fixed issue with trying to get steam avatar when steam sdk not intialised
  • Fixed Atmospheres undergoing changes in Pressure would have their Temperature flipflop between incorrect values on client.
  • Fixed Error on client when player decomposes.
  • Fixed Clients now run their atmospherics tick immediately after receiving the atmospherics network update. (previously it was running on a fixed timer which could result in multiple or no client side ticks between updates).
  • Fixed Clients sometimes seeing a vacuumed out atmosphere as having a small amount of gas remaining.
  • Changed Atmosphere message now sends Temperature rather than energy. Small variances in molar Quantity or Energy Quantity at the extremely small ends of either scale could result in wildly inaccurate pressure and Temperature readings on the client. Client now infers total energy based on the Temperature (not the other was around as was handled previously).
  • Fixed exception where client is trying to create an internal atmosphere on a structure in batched mode
  • Fixed Human spawning in batched mode. You can join a dedicated server now but its not spawning in the correct player model yet, it will create a new one.
  • Removed placeholder auto launch arguments
  • Fixed -new launch command
  • added -load launch command
  • Added GameManager.IsBatchMode static property to replace DEDICATED_SERVER preprocessor
  • Fixed Wireless power transmitter causing error on load.
  • Fixed case where cables could become invisible.
  • Fixed clients mining causing critical error on server
  • Disabled Position message updates for items hidden in slots.
  • Optimised Dynamic item network message by order of magnitude. Bandwidth reduced from 200KB/s to 20KB/s on test case.
  • Fixed Clients Destroying items that are out of bounds (only server should do this)
  • Reduced Initial Judder of item when throwing on client.
  • Fixed Quaternion must be unit length error on Client.
  • Removed bandaid fix for items being offset (pos/rot) in slots
  • Fixed Helmet being rotated incorrectly on clients when they join
  • Fixed server error when clients connect to saves with a trader landing pad
  • Fixed IC Code on computers getting wiped when client joins.
  • Fixed Clients don't get correct IC message errors.
  • Fixed build error
  • Fixed WirelessPower not working on Clients.
  • Changed Config Cartridge to run on logic thread.
  • Fixed IC source code not getting sent to clients in certain cases.
  • First pass on fixing traders for clients
  • Added console command 'steam' to check if Steam is initialised and if DLC is valid for user.
  • Fixed NRE Error thrown by Jetpack on respawn as client.
  • More NRE checks when leaving game.
  • Fixed Hash display values being inconsistent on client.
  • Added null/destroyed checks in CameraController. Causes a lot of NREs when leaving game
  • Fixed Several edge cases where Atmospherics thread could break on load (Thanks @GamersCircle).
  • Removed null checks on string binary writer
  • Fixed client side error when a null string is passed over the NetworkUpdateType
  • Fixed NRE when building on client with empty off-hand slot.
  • Fixed Logic displays, dials and a number of other logic devices animating based on the previous setting rather than the current setting on Client.
  • Fixed build error
  • fixed debug overlays
  • fixed font/spacing on the console
  • Fixed ModularRockets not loading in correctly.
  • Fixed ProgrammableChip not syncing.
  • Fixed syncing ProgrammableChipMotherboard device dropdown
  • Fixed cables and pipes doubling up when clients place them
  • Fixed syncing of ProgrammableChipMotherboard
  • Fixed Error on Client when stacking items using mouse control.
  • Fixed placing advanced furnace kit causing NREs with InternalAtmosphere
  • Fixed Occasionally Global atmosphere would be created when mining out sealed rooms underground.
  • Fixed Clients not being sent atmosphere updates when the number of moles of gas in a pipe or tank was very low.
  • Disabled Sentry
  • Fixed an instance were clients were creating atmospheres they weren't supposed to.
  • Optimised Network message for rotatable things (reduced rotation precision on client from doubles to FP16).
  • Fixed a number of issues with clients interacting with logic chips in multiplayer.
  • Fixed Gas Displays and Advanced airlock not working on clients.
  • Fixed Numerous issues with circuitBoards not working correctly for clients in multiplayer.
  • Fixed OnFinishedLoad and OnFinishedThingSync not being called on clients.
  • Fixed InitAllDevices not being called on clients.
  • Added All LogicChip synced variables to byte array message.
  • Fixed items in slots being at wrong rotation when rejoining game as a client
  • Fixed editor issue when playing game without SteamId assigned in inspector
  • Fixed NRE for InternalAtmosphere on Jetpack and Canister
  • Removed redundant IsOutgoingQueueFull check (Thanks Baughn)
  • Fixed issue where GameMetaData wasn't reaching new joining client as current joining client is processing.
  • Increased the acks and max sent message queue size values
  • Added unreliable network channel for handshake messages
  • Fixed Atmosphere error caused by client's room manager creating atmospheres.
  • Re-organised Bitflags for network update types.
  • Fixed MusicMachines, CircuitHousing, Logic BatchReader not syncing to clients.
  • Fixed ores being able to have negative stack values
  • Fixed BitArray de-sync edge case that would cause "Error: Thing is null during network update. ReferenceId:0".
  • Fixed damage states not syncing on client join
  • Removed intialising steam sdk in unity editor.
  • Fixed LogicMotherboard syncing on join
  • Added missing null check
  • Fixed data cable not syncing to client on computers
  • Fixed Log spam on clients when client deconstructs pipe and splits a network.
  • Fixed Sanitised pipe network atmosphere messages to exclude some bad data.
  • Stopped clients from processing network updates for objects they have authority over
  • Fixed Adding a pipe onto a pipe network using wrench tool deletes all gas in the network.
  • Improved atmosphere network message to only send delta states. Reduced atmosphere message size by 70%.
  • Fixed client -> server interactions syncing properly. (still a little more work to do in this area)
  • WIP commit for shifting atmospheres to only sending delta states over network update.
  • Moved Atmosphere classes into their own files.
  • Refactored FilterGas functions.
  • Optimised Atmosphere network message from 76 to 50 bytes per atmosphere.
  • Fixed welding torch flame stays on when gas runs out.
  • Added HalfToFloat operation to RocketMath. returns max or min value when and the value is out of bounds rather than float.infinity.
  • Changed BurnedPropaneQuantity to burned propane ratio. (used to display flame visualizers).
  • Refactored previous weeks work on LogicMotherboard significantly improving how data was syncing
  • Fixed Case where solar panels could throw NRE "Error: Thing is null during NetworkUpdate. ReferenceId:0".
  • Changed AudioSequencer and Landing pad to use Setting/Processing update types instead of interactable update type for auxiliary interactions.
  • Removed old network messages from logic units.
  • Fixed Case where damage update could cause Error: "thing is null during NetworkUpdate refId:0".
  • Changed Damage state to use a static read/write functions to allow the message to be read even when DamageState is null.
  • Fixed Items that are queued for destroy no longer send network updates.
  • Fixed computer scene dropdown contents layering issue in Logic Motherboard
  • Fixed Water bottles being created 66% full and water bottles spawned in creative mode being 166% full.
  • Fixed ChuteNetworks causing clients to fail joining.
  • Aligned ChuteNetwork merging logic with other network types.
  • Fixed Some solarPanels had OnOff and Open interactions added in error. This could cause them to be disabled.
  • Fixed build error.
  • Fixed Bug where devices would not connect to cable and pipe networks if the cable or pipe was placed AFTER the device.
  • Fixed Several cases during network message preparation that could cause the following Null Reference Exception "Error: thing is null during network update. ReferenceId: 0".
  • Fixed Things not un-dirtying their Interactables after sending a network update causing them to send the same update message forever after.
  • Fixed DamageUpdate type not being cleared following sending a damage update causing damage updates to be send continuously for damaged items.
  • Fixed A number of items that has animators added to the prefabs in error.
  • Added ConsoleCommand TestByteArray (Editor Only) This will run the read and write method on each thing locally to confirm that the methods are parallel. You can enter a referenceId if you wish to test just one thing and not them all
  • Fixed server breaking when the message pool is filled
  • Fixed syncing issues with LogicMotherboard. Still a bit of work left on this though. Dropdown values aren't updating on client and Dropdown content UI sorting orders are all whacked.
  • Fixed Logic Readers with no assigned device will cause server to throw an error.
  • Fixed Joining a save game as client getting stuck because some pipe/cable networks were being cleaned-up in error.
  • Fixed PipeNetworks not splitting their atmosphere correctly when split (bug introduced in previous build).
  • Fixed Error thrown on clients when constructing portable gas tank.
  • Changed Sentry configuration
  • Fixed Issue where Clients pipe networks would become de-synced from Server when pipe-networks were joined or merged or when pipe were merged.
  • Improved network performance by optimizing data types (created vector/quaternion half precision variants) for dynamic thing physics updates
  • Fixed Issue where Clients cable networks would become de-synced from Server when cable-networks were joined or merged or when cables when were merged.
  • Fixed Server sending update messages for things that are in the process of being destroyed. Should help to fix some cases of the "Thing is null during update" error.
  • Reduced time taken to write network messages by a factor of 10
  • Fixed NullReferenceException that could be thrown when receiving internal atmosphere updates on client.
  • Made "Thing Transform is Null" error more verbose for tracking
  • Fixed Visual bug where terrain would appear to be fully lit (even at night) this could happen when a certain grouping of objects were all visible that the same time.
  • Changed Moved Terrain Mesh colliders onto child game-object on terrain layer. Asteroid parent (which contains the mesh) is now on the default layer.
  • Fixed Fridge powered atmosphere not loading in correctly.
  • Refactored Cable, Pipe and Chute networks to use the new referencing system.
  • Fixed a number of string generation allocations.
  • Fixed AirConditioner initialisation error preventing save from loading.
  • Second pass on batch mode (dedicated server). Important console commands have not been added yet (save, load, kick, etc.)
  • Fixed issues with logic boards settings not syncing properly over network
  • Fixed Unable to read Internal atmospheres with Tablet on games saved on or after revision 16126. (You are fine to continue playing on any saves made after rev.16126, the tablet will work in them now)
  • Restored Threshold for world atmospheres to be removed to original value. Was potentially causing some strange behaviour.
  • Fixed Smaller volume internal atmospheres not interacting with global atmosphere for thermodynamics. e.g. players suit atmosphere was not being heated by Venus global atmosphere.
  • Fixed Bug where a new ActiveVent would not pump gas until its mode switch was toggled.
  • Set up framework for running the game in batch mode
  • Fixed Placing pipe causes atmospherics error.
  • Fixed Possible race condition when registering atmospheres from the thread.
  • Fixed Atmospheres not being deregistered from the IReferencable collections.
  • Fixed Errors causing saves to fail to load and/or clients fail to join caused by Fridge, VendingMachineRefrigerated and IceCrusher.
  • Changed networkUpdateType on Atmosphere to uint.
  • Changed All atmospheric Calculations including clean up of atmospheres now handled on Server.
  • Added IReferencable to atmosphere. Each atmosphere now has a unique ReferenceId assigned on creation. This will allow us to only send the delta state of the atmospherics sim to clients.
  • Changed world atmospheres now exist a bit longer before they are removed. was when within 0.1mols of Global, now 0.01mols.
  • Fixed Greatly reduced the number of new WorldAtmospheres being created. Previously atmospheres around atmospheric items/ devices were being created and deleted each tick.
  • Fixed items burning in the world would sometimes remove oxygen from (and add energy to) the planets global atmosphere.
  • Fixed items sometimes not getting deleted when damage was at max.
  • Fixed new debug overlay not displaying
  • Fixed terrain and ores not spawning in as you move
  • Fixed sun orbit period not being synced to client
  • Fixed weather events not syncing to client
  • Fixed battery structures not display not syncing when joining
  • Fixed grenades not working
  • Fixed jetpack syncing issues on client
  • Fixed slotted items not being in correct position sometimes.
  • Added ThingTransformPosition and ThingTransformLocalPosition properties for easier debugging of transform positions
  • Added check for MoveToSlot if its already in a slot.
  • Fixed console input not working with new debug overlay
  • Fixed in world debug tooling and implemented the existing atmos debug tools from the console
  • Added null checks for local human in keybinder. Was causing NRE in start menu
  • Fixed respawn modal not showing after giving up when unconscious
  • Fixed respawn modal showing when dead body has decayed
  • Fixed health damage still decrementing after rehydration
  • Changed keybinding stage to be set in KeyManager static way rather than binding to Human.
  • Removed removing key binding if not is local human. Instead just ignoring
  • Changed OcclusionManager threaded work now runs once per frame.
  • Fixed Error where a thing could be created with a referenceId of 0. Things are now added to the AllThings list once they have been registered. (previously added on awake)
  • Fixed an error where bad data was being added to the new things list. This is now populated only when an thing gets assigned a new refID and a client is connected.
  • Fixed (potentially) for keybinding state issues when Stationpedia/other input windows is used and other areas e.g respawning.
  • Added new class in clump all the Human inputs together for easier debugging.
  • Removed ConsoleWindow closing when clicking away from it.
  • Fixed a number of compiler warnings.
  • Changed Thing.PackageJoinData to iterate over the list of things rather than the list of IReferencables, it was causing a strange compiler error.
  • Removed INetworkSerializable interface
  • Added IReferencable, generic interface for referencing different types
  • Fixed pooled chunks causing invisible colliders for clients, as well as floating chunks when loading a game
  • Fixed precision placement on client
  • Fixed invisible chunks blocking clients after re-joining a server
  • .....
    + SIX HUNDRED MORE ON PASTEBIN!

Stationeers Beta Branch Update

About two weeks ago, after months of hard work refactoring some core systems of Stationeers, we've gotten the project to a point where we felt comfortable releasing something to the community.

We’ve password protected the Beta Branch and want to make it clear that this is still a work in progress. To take a look at what we’ve done so far you can unlock the Beta Branch on steam using the password: "therewillbebugs".

Community member GrunfWorks produced an excellent video that outlines some real world results for performance improvements received on their saves, varying between 30-90% improvements.

So keep in mind: there will be bugs.



How we did this


With one of our smaller projects, Art of the Rail, we experimented with extremely optimized multiplayer built from the ground up, along with custom approaches to rendering similar to that taken by games like Cities Skylines. This offered a tremendous improvement, so we set about pulling out the existing systems and replacing them.

This was a huge effort, but well worth it. We also used this as a chance to do a lot of cleanup of existing code. This helped improve our memory management and framerate, for both single player and multiplayer.

Checkout Art of the Rail for more information on the source of some of our ideas:

https://store.steampowered.com/app/1286190/Art_of_the_Rail/

With these changes in place we can begin the foundations of making the game what we hope it can be. We will be releasing details on changes we will be making as a rough roadmap when this beta branch becomes the main branch of the game.

What to expect in the beta branch

[h2]Bugs[/h2]

Single player is feeling really good, through the refactoring even some old bugs have been resolved, however it’s inevitable that some new issues will have been introduced. Multiplayer is still in heavy development and there are still many issues that we’re working hard to fix.

[h2]Performance improvements[/h2]

[previewyoutube][/previewyoutube]

We’ve radically improved performance. Simply removing the Unity multiplayer API resulted in a good performance boost(even in single player), but we’ve also reduced the performance impacts coming from excessive memory allocations, removing or reworking some inefficient systems, as well as changing the way we render some things in the game.

Performance is affected by a lot of factors in and out of the game, here are some examples of the performance difference between the Stable branch and the Beta branch running on an i9-9900k, AMD 5700XT at 1440p resolution with default settings applied:

[h3]Masoneer’s Vulcan Base[/h3]
This base is heavy on the logic side of things and we were able to make massive gains in this area.



[h3]Evil Cows on Europa[/h3]
This Europa base has had big gains as well, however the number of lights in this base is high meaning that the cost of shadows has a significant effect. In the future we will attempt to resolve the high cost from the shadows.



What not to expect...for now

[h2]Dedicated Servers[/h2]

The changes we made to multiplayer mean that we need to completely reimplement the dedicated server. This is something we’ve wanted to do for a while anyway. It shouldn’t be a big task but it has to wait until we’ve finalized all aspects of the multiplayer refact. The new dedicated server will be far better than the existing one and more inline with what you’d expect from a dedicated server.

[h2]New Content[/h2]

While there will be exciting new content in the future we’ve been 100% focused on these refactors and performance improvements.

[h2]Server List[/h2]

For now you will need to directly connect to your friends using their IP address or by using the join a friend options through Steam or Discord. The server list will be making a return before we release to the default branch.

What’s Next?


We don’t have a date or deadline for when this update will be ready for the default branch. We’re doing regular playtesting and when the whole team feels it’s ready we will release it. What we are planning on doing is doing more of these steam posts to keep you up to date with where we’re at!

So stay tuned.

https://store.steampowered.com/app/544550/Stationeers/

Stationeers in 2022



We’ve made some big decisions and big improvements which we believe set Stationeers up for a great year in 2022.

While we’ve been quiet for a while, this isn’t because we haven’t been working on Stationeers. Quite the opposite. In October last year we did a strategic review, and identified key areas of technical debt that if we took the time to redo would lead to big gains.

However, it meant we paused our monthly updates while we replaced some fundamental systems (such as networking). This decision did not come lightly but we felt it was best investment for the long-term success of Stationeers. Once we started refactoring the multiplayer we realised there was more work than anticipated, but it also created the opportunity to tackle other key systems and go more in-depth than originally planned.

While we don’t have a game update today, we can share what we’ve been working on and the results. This work will be a major milestone on our path towards Stationeers 1.0.

We are on the road to completing the biggest changes in the project since it began. This involved us rebuilding the way we handle multiplayer from scratch, adding a very efficient batched rendering approach for graphics optimization, and a massive cleanup of how memory is managed.


Rebuilt Multiplayer from Scratch


Stationeers was originally built using Unity’s High-Level Multiplayer API (HLAPI), a perfectly reasonable choice when the game was first made. However, as time went on and Stationeers grew beyond what we initially thought it would be, we found that the HLAPI became a bottleneck. We started to push the limits of what HLAPI could cope with. The effects of this could be seen when you had a save with a lot of things - every extra player would put a massive amount of extra load on the server, causing desync and failed connections.

In October last year we decided to stop, rethink and resolve this foundational issue. After serious deliberation of many different options we decided that, based on experiences on other RocketWerkz projects (such as Art of the Rail, which was designed for the tremendous scale like seen in games like Factorio), to build our own bespoke solution just for Stationeers.

The new system sends less data between players, will be more reliable to establish a connection and will allow larger groups to player together smoothly.

However, multiplayer was baked into how Stationeers was made from the start. This meant that even the task of removing multiplayer was already a big task. It turns out it was bigger than we originally anticipated!

Last year we successfully removed all traces of the HLAPI and had the game working again as a single-player experience. This year we’ve been busy doing the hard work of rebuilding multiplayer and the new system will be in the next game update.

Graphics Optimization: Batched Rendering
Screenshot from Masoneer#5778 Vulkan Base

Since we were not pushing monthly updates we saw this as a good opportunity to do further experiments in other problem areas of the game. One of those was that Unity’s batched rendering wasn’t doing the best job for how Stationeers is structured.

A Stationeers map can have thousands or even tens of thousands of things in the game, many of which are exactly the same item repeated. When these are sent to your graphics card to be rendered, if two things are the same with the same mesh and material then we can batch them and get performance gains.

We’ve been working on our own system that focuses on the high volume items in the game such as frames, cables and pipes and have had great results.

Metrics


These changes combine to double framerate on large bases!

To give you an idea of what kind of impact this work will have on Stationeers, we tested it out on community member Masoneer's large Vulkan base.

Removing the HLAPI saved 5ms from the time it takes to process each frame. This is approximately 14% of the time taken for a frame.

Removing redundant Animator components reduced the time to process a frame by about another 6.5ms (an additional nearly 20% optimization).

Additionally, the game was making significant memory allocations every game tick that would then need to be cleaned up. This is an expensive process that impacts performance in a big way. We reduced the amount of Garbage Collection from 500KB to under 1KB

Stationeers' Bright Future

You’ll get to try out these performance improvements and the new networking system in the next update (coming soon, once through testing).

Now that we have clearly defined technical boundaries we can start to define the gameplay boundaries through game design. We often discuss “what is Stationeers?” internally and “where do we want this game to go?” Over and over again these conversations ended in frustration over the uncertainty of the technical limitations. Now that uncertainty is being resolved we look forward to publishing regular updates again.

While we still don’t have an exact date for you, we’re all very excited to share this work with you and to get back to making Stationeers everything that it deserves to be.

Hotfix 0.2.3036.15111

Please note: since the last major update, loading a game with a DLC character would cause an error resulting in that character being replaced with a human without a suit. This has now been fixed and those old saves will now correctly spawn the DLC character. Now that this error has been corrected, new saves made since then with the DLC characters will not load correctly.

  • Fixed scene overriding trader panel fix
  • Fixed trading panel not displaying
  • Fixed in game code editor not displaying after entering and leaving and then entering a new session.
  • Fixed Error when disconnecting pipe from water bottle filler.
  • Fixed Render distance on Heat Exchangers.
  • Fixed Sorter Motherboard white-list dropdowns displaying behind other sorter buttons (meaning that you couldn't select those items)
  • Fixed Removed individual wreckage items from sorter. (you can filter all wreckage items using the Wreckage type).
  • Fixed Reduced lag on Sorter motherboard UI Interaction.
  • Fixed Intermittent Collection Modified Exception caused by multiple omni power transmitters.
  • Fixed dedicated server hang / crash
  • Fixed Old saves using DLC characters (HEM Droid / Zrilian) change character to Human with no suit on load.
  • Fixed Saving a game with a corner locker closed would cause the items inside to become permanently invisible until it was deconstructed.
  • Fixed Intermittent Error spam caused by Omni Power Transmitter.
  • Fixed Area Power Control adding huge amounts of heat to atmosphere.
  • Added Small and Large Insulated Liquid Tanks. Construct them using ItemKitLiquidTankInsulated built with the PipeBender.
  • Fixed Unable to interact with all IC Circuit holder items in the programming motherboard drop-down.

The JUST IN TIME Update



Locktober

Down here in New Zealand, it’s been a couple of long, locked-down months, but the Stationeers team is back and bouncing out an update for you powerheads and balance boffins
Enjoy the improvements to our power system, new tech, architectural additions, furious fixes, tweaks and more, knowing that Stationeers is preparing the ground for surprises in updates soon to come ...

Power On

Try out the Omni-directional power transmitter – a wireless battery charger that uses special cells with a lower capacity than regular batteries. Even supertech has its downsides, right?



There’s a line of new doors for base building. Improve your interiors with these attractive portals, as well as a manual hatch that can operate without power, should something go wrong.



Plus we’re giving you better control over power transmission, exposing new logic and new math functions for the transmitter itself.

Fixes

We’ve been tightening the bolts and polishing like crazy, removing some long-standing issues like the infamous ‘Infinite Power Exploit'.



Voltage on recursive power networks will now cause input cables on those providers to break. It’s a change that affects AreaPowerControl, StationBattery, Transformers and Wireless power transmitters and receivers. So be warned.

We’ve repaired the sensor lenses for scanning ore. They’re now working better than ever by showing you the entire ore vein and actually help you find ore instead of leading you astray. Happy mining.



We’ve fixed the vacuum room cooling bug, so devices placed in a vacuum in an enclosed room no longer radiate heat – stopping the magical deletion of heat from devices in a completely enclosed room.

That's just a little of the deep-cleaning we'ev been doing. There’s a heap more fixes and tweaks, too, but if you find a bug, you're totally invited to add a ticket to our Jira – we appreciate it massively.

Balance

There’s been balance changes to some critical systems, too, like water bottles. Previously you could fill a water bottle with boiling water or cubes of ice and then happily drink it. Now you need to ensure the water is at a reasonable temperature before filling the bottle.

The Winterspawn plant has been nerfed and re-balanced to make it have more "realistic" properties, and breathing hot air now damages your lungs instead of healing them. We just thought we should give everyone … a ‘heads up’ on that.

There’s been a range of other dial-twists, so jump in and take a look.
Happy Stationeering!

https://store.steampowered.com/app/544550/Stationeers/

Version 0.2.3021.15077

[h2]Hotfix[/h2]
  • Added 2x GasCanisterWater to Misc Crate for Vulcan starting conditions.
  • Fixed Render distance on unpowered doors.
  • Fixed Audio timing on manual hatch.
  • Fixed bug where recipe window wont display sometimes.
  • Fixed NullReferenceException stalling game when loading saved game.
  • Added Wireless battery recipes to the electronics printer.
  • Added Omni Power Transmitter recipe to the electronics printer.

[h2]Additions[/h2]
  • Added Interior Doors Kit. These new door variants can be craft in the Autolathe. They do not block atmosphere when shut and do not require power.
  • Added Manual Hatch
  • Added Powered sounds and constructing sounds to all power transmitters.
  • Added sounds to Unpowered Doors and Manual Hatch.
  • Added Position Logic variables to power Transmitters and receivers, PositionX, PositionY and PositionZ return the position of the transmitter head/dish allowing for accurate alignment calculations using trig functions.
  • Added ATan2 function to IC ProgrammableChip functions. Returns the the angle in the Euclidean plane, given in radians, between the positive x axis and the ray that passes through (0,0).
  • Added Wireless Logic transmitter functionality to PowerReceiver. You can now read and write logic variables to the PowerReceiver using a Logic Transmitter.
  • Added Read-only Mode variable to Power Transmitters and Receivers. 0 = unlinked, 1 = linked.
  • Added manual hatch thumbnail
  • Added Additional debug information to the PowerNetworks Debug tool: Required, Potential, PowerProviders.
  • Added time and weather debug options to console debug tab
  • Added smooth transition when setting time of day
  • Added battery animation charge states to Wireless battery cells.
  • Added Omni power transmitter structure (early pass).
  • Added new standard and large battery types (early pass).
  • Added Omni Power transmitter kit.
  • Added Can now read Power Generation Rate from wind turbines using logic.
  • Added support for Vulkan graphics API (use '-force-vulkan' argument when launching the application)

[h2]Fixes[/h2]
  • Fixed missing thumbnail for omni power transmitter
  • Fixed missing blueprint for omni power transmitter
  • Fixed Setting Activate to 4 on Automated rocket would cause it to set Mode to 5.
  • Fixed Automated Rocket could get stuck and be unresponsive to commands when game saved in while rocket in Mode 2 (travelling to new asteroid).
  • Fixed Large numbers of wind-turbines causing other sounds to stop playing.
  • Fixed AutomatedRocket Couplers appear missing after launching and landing Rocket.
  • Fixed OmniPower Transmitter charging batteries in APCs when it wasn't supposed to.
  • Fixed Sounds on Pipe Analysers.
  • Fixed Pipe Analysers not going into error states when pipe missing.
  • Fixed OnOff and powered lights not working correctly on LiquidPipeAnalyser.
  • Fixed Turning on an APC that had its input and output linked to an existing network could cause crash to desktop.
  • Fixed manual hatch animation
  • Fixed manual hatch not letting air flow when the door is open.
  • Fixed OmniDirectionalPowerTransmitter now draws power and changes wireless batteries correctly up to max range of 15m. (Efficiency reduces with range 0m = 75%, 15m = 25%).
  • Fixed Smart rotate and placement on OmniPowerTransmitter.
  • Fixed issue with -force-vulkan graphics option
  • Fixed WirelessPowerReceiver can link with power transmitter when not aligned. Now requires alignment within 7 degrees.
  • Fixed edge case where wireless power could become disconnected even when all conditions for connection were correct.
  • Fixed PowerTransmitters Precision error causing wireless power devices to be unable to connect over long distances. You can now provide very fine control to rotation values of transmitters and receivers using Logic.
  • Fixed RotatableDevice overshooting the rotation target.
  • Fixed Rotating Power Transmitters and Receivers using wrench resulting in fractional rotation values.
  • Fixed Error that could occur when dismantling pipes.
  • Fixed null error when things are on fire
  • Fixed on/off switch on volume pumps
  • Fixed advanced composter on off button animations
  • fixed portable composter on/off button
  • Fixed Interior Doors being unpaintable.
  • Fixed Interior Doors causing errors when rotating the blueprint.
  • Fixed manual hatch being invisible
  • Fixed on off button on advanced composter
  • Fixed manual hatch not blocking atmos
  • Fixed manual hatch to block faces
  • Fixed Power Transmitters and recievers sometimes not connecting on loading game.
  • Fixed Power Transmitters getting into a state where they would be using negative power.
  • Fixed Power Transmitters being in error state on load.
  • Fixed Infinite Power Exploit. Any potential on recursive power networks will now cause the power input cables of all recursive power providers to break. This change effects: AreaPowerControl, StationBattery, Transformers and Wireless power transmitters and receivers.
  • Fixed Index out of bounds error caused by ModularRocketCouplingUnit.
  • Fixed time being set multiple times when changing time using /settime
  • Fixed Various Power Duplication bugs with wireless power transmitters.
  • Fixed Wireless Power Transmitters getting stuck in error states.
  • Fixed manual hatch not showing up in item kit door
  • Fixed AIMEe not being set to full state correctly when full while mining.
  • Fixed AIMEe logic resetting after mining ore.
  • Fixed Transmitter Omni causing errors on startup.
  • Fixed Stationpedia window is behind IC editor.
  • Fixed temperature on escape from mars scenario
  • Fixed advanced packaging machine power switch displaying incorrect colours when switched off and powered
  • Fixed Wind Audio error caused when too many sounds playing at once.
  • Fixed automated oven power switch displaying incorrect colours when switched off and powered
  • Fixed it so that you can attempt to save again after a prior save fails
  • Fixed Sounds not playing on WaterBottleFillerBottom.
  • Fixed Error spam when filling up waterBottle using WaterBottleFillerBottom.
  • Fixed Hunger/Hydration Rate can now be set in increments of 0.01;
  • Fixed Unable to set Lock logic setting on all manufacturing machines.
  • Fixed Pressing Esc Key to exit Settings menu hides main menu UI.
  • Fixed Writing setting to Logic dial with Logic writer does not work and causes an error.
  • Fixed LiquidDrain not returning kit on deconstruction.
  • Fixed error when loading some saved instruction files in to code editor
  • Fixed Water bottle filler reversed allowing filling of water outside of 0-100degrees C.
  • Fixed Water bottle filler reversed not showing tooltip.
  • Fixed error when Antialiasing is set to none
  • Fixed Interior Door build-states requiring the in-correct resources.
  • Fixed Window Shutter Kit having an extra empty constructible entry.
  • Fixed Automated Oven displaying invisible on off switch.
  • Fixed PressureRegulator and BackPressureRegulator. Both now operate at their maximum speed regardless of pipe network size. BackPressureRegulator no longer overshoots its target value.
  • Fixed WaterBottleFiller Tooltip Error showing incorrect Temperature when input pipe is empty.
  • Fixed no hair rendering when helmet is on
  • Fixed hat hair not working in game
  • Fixed hat hair and regular hair displaying at the same time in the customisation screen
  • Fixed vacuum room cooling bug. Devices placed in a vacuum in an enclosed room will no longer radiate heat. This stops the magical deletion of heat from devices in a completely enclosed room.
  • Fixed Breathing hot air heals burn damage to Lungs. Hot air over 50degreesC now damages lungs. (Thanks: Bti & Eearslya)
  • Fixed NetworkAnalyser to work correctly with advanced tablet when switching active hand
  • Fixed Pipe Bender on switch being on the in-correct initial rotation, causing it to flip while printing.
  • Fixed Autolathe off switch being the incorrect material.

[h2]Other[/h2]
  • Changed Wireless Cell capacity from 36,000 -> 12,000, WirelessCellLarge Capacity 36,000 -> 72,000.
  • Changed OmniPowerTransmitter will no longer charge wireless batteries that are in a battery charger or AreaPowerController.
  • Changed The Potential Energy that can be delivered by a wireless power transmitter now reduces with distance.
  • Changed Water Bottles can now only be filled with water between 0-100degrees Celsius.
  • Changed Increased speed and power consumption of LiquidDrain.
  • Changed PipeHeater recipe to use Iron instead of Steel.
  • Changed Moved TurboVolumePump to Tier2 printer.
  • Changed model for advanced furnace kit
  • Changed Plants now require their water to be between 5-60 Degrees Celsius otherwise they take damage.
  • Changed WinterSpawn Plants only cool the air and electrolyze their water when mature.
  • Changed WinterSpawn Plants now use thermodynamically accurate Electrolyser equation (previously was too much output fuel mix and not enough water consumed)
  • Changed WinterSpawn Plants are less efficient outside their target Temperature range. See Temperature ranges in stationpedia.
  • Changed IceCrusher is now insulated.
  • Changed Scoreboard now hides when entering the main menu
  • Tweaked Sensor Processing Unit(Ore Scanner) to display all instances of an ore in a vein rather than just one instance. This allows you to now see the shape of the vein.
  • Optimized plant decay negatively impacting performance when lots of food present
  • Improved performance of cycling airlock control
  • Reduced garbage being produced by movement controller
  • Stationpedia edits from the community (Iconoplasty, SillySMS)
  • Removed error state on Power Transmitters when disconnected from receiver. Better surfacing of connection status and making connections easier over long distances is being investigated.
  • Removed "ThingRenderer has no actual Renderer" warning