Stationeers - Heightmare


It's been a quiet week or so and with some of the team taking extended breaks we were fairly light on the ground - but we made some good progress on the trading mechanic and have a few other surprises.

Interstellar Communications
One thing we've been working towards through early access is a way to give the end-game further meaning. You've mined everything valuable around your starting area. You've built an impressive base with all the requirements for survival comfortably taken care of. You've built redundancy and automation using all the tools at your disposal - what is there to do next? We've got several ideas for expanding on late game life, and Interstellar Communication touches on several of them.

As described several updates ago, we're working towards what we've dubbed the 'Trader Mechanic', but the final implementation will actually support far more than that.

In creative mode you can now spawn in construction kits for Satellite Dishes and a Communications Motherboard. A Communications Computer will display all of the contacts that could be reached by all Satellite Dishes on its network, and the signal strength to each. You can adjust the angle of your Satellite Dish in order to improve the signal to available contacts or find new ones. In time, you'll be able to use logic to streamline this process like on all the other devices in the game.

The next steps we'll be implementing will allow you to, given a sufficiently strong signal, initiate contact. This may just be for information (ie. reports from weather satellites) or to accept trade offers or visitors assuming you have a powered, connected and accessible landing pad (also currently available in Creative Mode).

As with all our new features, portions of the complete feature may be accessible while it is still a work in progress. We encourage you to try it out, report bugs and let us know what you think on Discord!

Alien Mushrooms



To demonstrate some of the flexibility of how some of the systems in Stationeers interact, we'd like to introduce the newest member of the botanist/atmospherics engineer toolkit - the Alien Mushroom. This functions in much the same way as existing plants, however instead of breathing in Carbon Dioxide and exhaling Oxygen, these will inhale Nitrous Oxide and exhale Nitrogen and Oxygen. This serves as a proof of concept for allowing us to easily change the gas mixtures inhaled and exhaled by plants, for which the next step will be to expose these values to mods.

Stationpedia Expansion

As promised, Rocket has continued to expand the Stationpedia to now include information on Alloys, and applied a few usability improvements as well. The color scheme has been changed again to improve the readibility of some elements, but may still be subject to change based on peoples feedback. It will also now automatically appear when beginning the tutorial or your first game. For those who have been asking about how to translate this, once more of the guide is complete we'll be making it available through the localization system so you'll be able to help translate it into your preferred language.


Version 0.2.1791.8240
  • Added Alien Mushrooms. Alien Mushrooms breathes in Nitrous Oxide and breathes out Nitrogen and Oxygen. This is a first pass for plants breathing custom gas mixes.
  • Added Alloy information and list to Stationpedia.
  • Added Tutorial and new game Stationpedia will now popup with opacity set to none by default, to make it easiest to read it.
  • Added second pass on Satellite Dish. Vertical and Horizontal can be set, in a similar way to the Solar Panel.
  • Added first components of the systems supporting Interstellar Communication to creative mode.
  • Added RatioNitrousOxide LogicType to logic-enabled atmospheric devices.
  • Added Door Setting variable can now be set by Logic.

  • Changed approximate checks on programmable chip from using |a - b| < e*max(|a|,|b|) to |a - b| < max(e*max(|a|,|b|), float.epsilon * 8) to avoid it wigging out when a or b are near 0.
  • Changed GraphDisplay so that graph runs from left to right, and reduced wasted space on the plot by removing above/below the x-axis if no line is plotted there
  • Tweaked and adjusted the layouts of the Settings screens so they're easier to read.
  • Updated text input fields to now animate while hovering over them.
  • Improved server messages. Server messages (shutdown notifications, server notices etc) now show up in the chat window as well.

  • Fixed Doors not reset Setting to new Open state, so it assumed actions must be taken (Credit: Risu)
  • Fixed Player State Window (top right) now displays temperature as "not a number"(NaN) when in a vacuum.
  • Fixed Player State Window color values not being initialized, and only updating correctly on first change.
  • Fixed Aliases being cleared on reset for IC Chips (Credit: Risu)
  • Fixed Beta bug where NaN was displayed when below 0 celcius, not invalid temperature. Now displays Nil (localizable) correctly for invalid temperature, instead of 0 which it displayed previously.
  • Fixed syntax highlighting bug in programmable chip editor that would cause things like `# O=k` to display tags, and `# 0=kelvin` to not be coloured correctly.
  • Fixed a bug where players could use RTF markup to highlight their own code.
  • Fixed the incorrect display on the computer monitor of IC source code.
  • Fixed Rotated filter slots on the large gas filter so their label is visible.
  • Fixed NullReference on generating terrain while flying faster than it could generate.
  • Fixed a couple of null reference exceptions caused by the interim commit of the trading mechanics.
  • Fixed Stationpedia window was not correctly initializing centered.
  • Fixed an animation delay when hovering certain buttons in menus.
  • Fixed occasional error for some players when populating Stationpedia data resulting in none of the text being loaded for any language. Will now display an error and continue loading normally.
  • Fixed reagent coloring in help system was a dark purple that was nearly always hard to read. Has been replaced with magenta to help with reading.
  • Fixed two matching filters show up as a warning (Credit: Risu).
  • Fixed visual blueprint missing for Portable Solar.
  • Fixed NitrousOxide filters were removing Nitrous Oxide from the input pipe correctly, but would add Water to the output instead of Nitrous Oxide.
  • Fixed tutorial required player to keep Stationpedia window open at all times during microwave task. Now player only needs to open it, and if they want to have it closed during the rest of the task they can.
  • Fixed WallCooler being an amazing heater in Europa. WallCooler efficiency drops as the temperature difference becomes too large. If the waste network becomes 100 degrees warmer than input, efficiency begins to drop until zero at 200 degrees.
Stationeers - Heightmare


Update on Trading & Surgery
Immediately following last weeks patch a few nasty issues surfaced as a result of the engine migration, but they've been tackled and we're able to refocus on the trading mechanic. The new UI capabilities we have thanks to the addition of the Stationpedia will be a big part of that, so keep an eye on the beta branch for the latest on our works in progress!

It's only been a few days since our last hotfix, so not a massively dramatic update this week - however there is one very important things to note.

CAUTION: Back in September a change had the unintended result of canisters no longer taking damage when over-pressurized. This update includes a fix for that.

Besides that, we got a lot of fixes in for non-critical-but-annoying bugs, some that have been around for a while. The save process has been made much more robust, with more checking done when saving to ensure things are working and better error reporting when it doesn't. It also won't overwrite files if there are any problems with the save process.

Dedicated server is still a work in progress, but some of the outstanding issues with Integrated Circuits and Atmospherics (specifically, welder gas tanks) on dedicated server have been resolved. The remaining major bug relating to vanishing items on dedicated is proving more of a challenge, so if you happen to have a reliable set of steps and a world save to reproduce this issue we'd love to hear from you on Discord!


(Another) Tutorial Refresh
And surely not the last! We've expanded the tutorial to include build states for machines. Expect it to be expanded further in the future to integrate the new help system.

Stationpedia
We've implemented an entirely new in-game help system - Introducing the Stationpedia! It can be accessed using the F1 key and is a nice simple way to view game information without having to alt-tab. You can click on most objects to link through to other ones for all raw materials, gases, crafting kits, structures, their recipes and the values they have that are exposed to logic. This is definitely not an exhaustive list and we'll constantly expand on this as we (and you) think of more data to add. The window can be resized, and there's an icon in the top right corner that will let you toggle transparency.

Version 0.2.1772.8154
  • Added game version now stored with IC Source Code to help track down issues and in case we need to do special version handling later.
  • Added Stationpedia, an in-game help system. Default key to access is F1 (in game only). Framework has been added along with some data, note this is subject to significant change and does not contain all the information that is planned.
  • Added opacity toggle and help buttons to tutorial window.
  • Added deconstruction information, similar to construction tooltip. When a tool is in your hand, and Extended Tooltips is enabled, you will receive information on what tool is required (if any) to deconstruct the structure you are looking at. To disable this, turn off Extended Tooltips in the settings menu. This will help when deconstructing items as it tells you what tool to use.
  • Added Operate and Logic modes to all doors. When set in Operate mode (0; the default) the door works normally. When set to Logic mode (1), using the doors buttons will ignore open/close requests and change the "setting" variable, depending on the open state. If the player presses the button and the door is open, the setting will be set to 0. If the door is close, the setting will be set to 1. This allows you to manually control doors using it's buttons, instead of using the doors internal operation.
  • Added 'Mature' logic slot type. Will return 1 if the plant growing in the tracked slot is in a growth state flagged as 'Mature', 0 if not.
  • Added MaxQuantity as a LogicSlotType. You can now read both the Quantity and MaxQuantity of a slot for easy Diode displays!
  • Added Nitrous Oxide to Silver and Lead ore output.
  • Added Reagent, Gas, and much more information to Stationpedia. Now detailed information is available for this. For example, the Reagent and Gas pages will tell you what objects the reagent/gas is found in.
  • Added Autosave support for new worlds. If you don't have a current save slot set (by saving the world manually) and your autosave timer is reached, a new save slot will be created.

  • Improved garbage collection during terrain generation by pooling and reusing terrain chunks through the implementation of a 'Terrain Pool Manager'.
  • Improved tutorial significantly. Integrated it with the Stationpedia, so that players can click on highlights to get taken to more information.
  • Removed Tablet from tutorial. Instead tutorial covers recipes within the Stationpedia.
  • Changed WaterFilter in starting equipment to a ItemKitSensor to replace the one removed a couple of days ago. Water filter no longer required due to a water canister being included with the portable hydroponics added to the starting gear several weeks back.
  • Changed dedicated server. ClearAllInterval now treats zero or negative values as 'don't run ClearAll automatically'.

  • Fixed inability to create new entries in the code library due to the code input window obscuring the text input window.
  • Fixed NRE on dedicated server regarding elevator shafts.
  • Fixed IC Operations BDNSAL, BDSEAL, BEQAL, BGEZAL, BGTZAL, BLEZAL, BLTZAL and BNEAL branching to the incorrect line. [Credit: Risu]
  • Fixed the 'Setting' value on CircuitHousing not persisting through save/load due to CircuitHousingSaveData being a child of StructureSaveData instead of LogicBaseSaveData. [Credit: Risu]
  • Fixed IC housing losing device references on load on dedicated servers.
  • Fixed Logic Dials visual position not being updated on load. [Credit: Risu]
  • Fixed Automated Hydroponics not being paintable. It can now be painted like the other hydroponics structures.
  • Fixed welders not working on dedicated.
  • Fixed changing Autosave settings while the game is running not applying any changes. Autosave can now be disabled or have the interval changed after you start your game.
  • Fixed bug with chunk pool could not be reused.
  • Fixed problem where if the save process failed for any reason, you would not be able to try save your world again until you relaunched the game. You will be notified in the console if a save fails.
  • Fixed problem where incomplete saves may still overwrite existing ones. Now, as it saves each file of a world save they'll be given a temp_ prefix. If all the parts save completely, they'll replace the existing save files. This does not affect the contents of the backups folder.
  • Fixed issue causing terrain to become corrupted if you left one world and created another without relaunching the game due to terrain chunk pooling (added to reduce garbage collection) not being cleared properly when you leave a world.
  • Fixed world saves would sometimes get to a point where you could no longer place doors. This was caused by Cursor objects never correctly calculating their center position (only occurred once registered). This meant that when we fixed another bug regarding placement, this old one was exposed. This meant a final check was always occurring against one grid square in the world.
  • Fixed problem with dragged objects not displaying their icon properly.
  • Fixed unable to deconstruct damaged pieces. This was because the new extended tooltip was failing for destroyed structures that were not correctly registering themselves as destroyed. Credit: Su-pa-Kitsune.
  • Fixed Canisters exploding from being overpressurised had been accidentally disabled. It has been re-enabled.
  • Fixed CircuitHousing's IsValidIndex function bounds check was incorrect. [Credit: Risu]
  • Fixed Index lookup in IC's always returning 0 for aliases. [Credit: Risu]
  • Fixed null reference caused by player brain not being created in time for terrain generation to use it for positioning.
  • Fixed null reference caused by failure to create global atmosphere on client in time to begin atmospheric processing. Credit: TakoMT via Steam Forums.
  • Fixed Password server could become stuck in the top right of the screen when trying to drag it.
  • Fixed ladder blueprint shows incorrect bounds.
  • Fixed cannot connect to password protected servers. Now password window correctly passes in values, and allows connection to server. Issue was caused by a failed input box conversion between old unity version and new, which also didn't generate any errors.
  • Fixed Control Chairs unable to fire engines. A Control Chair connected to engines should now be able to fire up engines again when driven. Clients will not be able to see the engine particles for the moment.
  • Fixed Tutorial not able to complete due to Autolathe not having materials.
  • Fixed Jetpack in tutorial did not start with stabilization turned on.
  • Fixed could access buttons on simple manufacturing machines while still building them.
Stationeers - rocket2guns


We've passed a big milestone! v0.1 to v0.2 this week, given our major engine upgrade. Performance and fixes are the key of this week.

Known Issue with IC's
While not a regular section in our patch notes, we've got a major issue with IC's that is still awaiting a fix. There is an issue with some IC programs that can cause the registers and aliases to get mixed up, which can have unreliable results depending on how your program is structured.
If you are having problems with an IC program, and are unable to wait for a fix - you can resolve these issues by not using aliases and addressing registers directly. We will try get this fixed ASAP in a hotfix.

Engine Upgrade to Unity 2018

This week marks the completion of the first stage of the engine upgrade. Any major bugs caused by the switch should now be resolved, so a big thanks to everyone who was playing on the experimental branch while it was up and reported any bugs. Things should now be more-or-less back to normal, so now is probably a good time to re-iterate our patch process for all the new players who have joined us recently.

Performance and Stuttering Improvements

This weeks update will have a pretty significant postive impact on the game. Many users will now notice substantial framerate improvements as well as reduced stuttering. Unity 2018 will now allow us more options in the coming weeks for additional optimization and stuttering improvements as well.

Game Branches Explained

Stable/Main Branch
This is the branch everyone is on by default. This is only ever updated manually, and any update on this branch will be accompanied by either a Consolidated Patch Notes post like this one. If an urgent bug shows up in the ~24 hours following a patch, we'll just update the patch note post with the details. If the fix takes longer than that we'll make a separate Hotfix Patch Notes announcement.

Beta Branch
This is where the magic happens! The build on the beta branch comes directly from our working source at the studio. If something has been committed, it'll be in the next beta branch build. An automated build happens every weekday at roughly 8AM NZST, but if we're fixing something live as we discuss it with people in Discord or in response to a Steam Community post we'll likely push an update right away. Sometimes there could be multiple updates on this branch in one day, luckily the way Steam batches changes they're pretty small.

When the beta branch does get updated, you'll see the public patch notes in the #beta-changelog channel on Discord. Some patches may not contain any public change notes though, so don't be surprised if you see a blank one! It probably just had some boring change or the addition of some new art/sounds that haven't been implemented yet.

Build States for more structures

We've slowly been increasing the "build states" for various structures in the game, to add more depth and complexity. In a sense, this helps with physical security as well in the future - removing some devices completely would require tools which you could restrict access too.

Additionally a new resource, plastic sheets, has replaced Steel and Iron sheets in some cases. These are produced from Silicon Ingots. This should ease dependency on Steel in some cases, particulary for walls. But it's going to make finding Silicon quite important.

Other balancing is occuring as well, changing the reagent quantities to create things and also how many sheets are consumed in the build state process.

Hotfix 0.2.1763.8120
  • Fixed issue causing terrain to become corrupted if you left one world and created another without relaunching the game due to terrain chunk pooling (added to reduce garbage collection) not being cleared properly when you leave a world.
  • Fixed world saves would sometimes get to a point where you could no longer place doors. This was caused by Cursor objects never correctly calculating their center position (only occurred once registered). This meant that when we fixed another bug regarding placement, this old one was exposed. This meant a final check was always occurring against one grid square in the world.
  • Improvement chunk pooling manager for garbage collection.
  • Fixed problem with dragging objects not displaying their icon properly.
  • Fixed unable to deconstruct damaged pieces. This was because the new extended tooltip was failing for destroyed structures that were not correctly registering themselves as destroyed. Credit: Su-pa-Kitsune.
  • Fixed Canisters exploding from being overpressurised had been accidentally disabled. It has been re-enabled.
  • Fixed CircuitHousing's IsValidIndex function bounds check was incorrect. [Credit: Risu]
  • Fixed Index lookup in IC's always returning 0 for aliases. [Credit: Risu]
  • Added Stationpedia, an in-game help system. Default key to access is F1 (in game only). Framework has been added along with some data, note this is subject to significant change and does not contain all the information that is planned.
  • Fixed null reference caused by player brain not being created in time for terrain generation to use it for positioning.
  • Fixed null reference caused by failure to create global atmosphere on client in time to begin atmospheric processing. Credit: TakoMT via Steam Forums.

Hotfix 0.2.1758.8095
  • Fixed NRE when stop server on dedicated server
  • Fixed NRE on dedicated server
  • Fixed Password server could become stuck in the top right of the screen when trying to drag it.
  • Fixed ladder blueprint shows incorrect bounds.
  • Fixed cannot connect to password protected servers. Now password window correctly passes in values, and allows connection to server. Issue was caused by a failed input box conversion between old unity version and new, which also didn't generate any errors.

Hotfix 0.2.1748.8080
  • Fixed Control Chairs unable to fire engines. A Control Chair connected to engines should now be able to fire up engines again when driven. Clients will not be able to see the engine particles for the moment.
  • Fixed Tutorial not able to complete due to Autolathe not having materials.
  • Fixed Jetpack in tutorial did not start with stabilization turned on.
  • Improvement garbage collection with terrain generation.
  • Fixed could access buttons on simple manufacturing machines while still building them.

Version 0.2.1746.8073
  • Added some more error messages for the IC chip, mostly that will throw during runtime
  • Added basic telemetry variables to Control Chair and Hardsuit. Now reports PositionX, PositionY, PositionZ (worldspace positions), VelocityRelativeX, VelocityRelativeY, VelocityRelativeZ (relative velocity to forward), and VelocityMagnitude.
  • Added first pass of satellite dish for communicating with AI ships for missions and trading. Currently just placable, not functioning. Included support for complex multigrid blocks with different smallgrid dimensions.
  • Added first pass of Shuttle Landing Pad. Currently just placable but does not do anything.
  • Added build states for Tool Manufactory.
  • Added build states for Autolathe.
  • Added build states to Electronics Printer.
  • Added build states to Security Printer.
  • Added build states to Security Printer.
  • Added build states to Hydraulic Pipe Bender.
  • Added Logic Hash Generator. Buildable off the Logic Memory Item as a variant, when using a screwdriver on the button you get a combo that contains all dynamic things in the game. When you select it, that object will show as the current hash. This can then be used by anything that needs to use Hashes, such as the Circuitboard (Hash Display), IC's, Logic units, and Logic Motherboards. The output is recorded on the "setting", which is read only.
  • Added UPNPEnabled option to Multiplayer options screen, so you can now disable UPNP if you don't want it or if it's causing problems.

  • Updated wording on UPNP note on the Multiplayer settings page to clarify that both the setting AND UPNP on your router had to be enabled to make it work.
  • Removed "launch" mode from Jetpack for now.

  • Fixed buttons could not be used on Autolathe (experimental/beta only).
  • Fixed game unable to run if workshop folder does not exist for stationeers. Normally, a workshop folder would be created - but if this didn't occur the game would not be able to be run. Now the folder will be created and even if it can't the game will still run. Credit: Zaneo, DirtyRat, and 4o (via discord).
  • Fixed Slot Quantity text was not always aligned correctly in Unity 2018.
  • Fixed lighting problem caused by the planet lighting layermask being reset after 2018 update to include everything
  • Fixed human material specular settings
  • Fixed Dual Registration objects were never running the large grid validation code.
  • Fixed bounding box not supporting grid mode. Fallback had been using bounds, but this provided poor visual indication of blocking off grid areas for multi-grid large grid objects (such as the stairs, and the future landing pad). Now Grid mode for bounds now supports large grid correctly.
  • First pass on clouds (turned off by default as they are causing significant frame time increases)
  • Fixed Some tablet cartridge text not displaying correctly due to fonts missing after the Unity 2018 Migration.
  • Fixed Multiplayer and Misc settings pages not properly resetting to defaults when the button was clicked.
  • Fixed error spam when attempting to scroll the menu patch note box due to disabled components.
  • Fixed bug that prevented setting TooltipOpacity.
  • Fixed a bug that allowed an unpowered arc furnace and logic trickery to create duplicate ingots.
  • Fixed a bug where devices sometimes couldn't be accessed by the IC (credit to Risu)
  • Fixed incorrect error message when joining with incorrect version. Now displays Version Mismatch rather than Player Count Exceeded when joining via IP to a server with a different version.
  • Fixed bug in which structures which required items in off hand wouldn't use the correct amount.
  • Fixed a bug in which writing an incorrect value to DaylightSensor's Mode would brick the device
  • Fixed unable to use worldspace UI in the new unity 2018 version.
  • Fixed bug that was preventing IC using float constants.
  • Fixed bug in which IC errors that occurred at run time wouldn't be reported.
  • Fixed bug where exporting code to the IC chip didn't reset stack pointer to base of stack.
  • Fixed multiplayer game bug in which client wasn't able to put IC in housing (the credit for finding the problem goes to Kevin!)
  • Fixed Jetpack stuck with on sounds from clients. Now jetpacks will be turned completely off on load, until the root cause of the issue can be found.
  • Fixed Mouse not locking to screen in Unity 2018 version.
Stationeers - rocket2guns


For the first time in many months, we're not doing a weekly update! Before anyone posts about the project being abandoned, let's talk though the good news about why that is!

Upgrading our Engine to latest version

Most importantly, and most significantly, we are making a major upgrade in the engine. We have made the game using Unity. We locked the unity version a month or so out from our initial launch which means we haven't continued to upgrade the engine since then. Why is this? Well, engine version changes can cause a lot of headaches. While they do contain lots of bugfixes (good!) they often necessitate changes in how things work (bad!).

There was also a significant change in pricing for Unity which was going to have some pretty huge ramification for the cost of our project. This is a very niche title, that's likely to run very close to only break even. We have to buy licenses for not only the people developing the game, but even our build servers! So it adds up pretty quick.

In the end, the benefits of this project being like others in our studio (which had moved to Unity 2018), and the fixes and new features of 2018, meant that we needed to upgrade. And so we have. Heightmare did the initial test, porting over and changing what was needed. Then we started migrating all the team, and our build servers. We've got all the hard parts of that working to the point some in the community are actually testing versions of the game running in the updated engine. Now we're just finishing the upgrades to our automated build and deployment system so it works with the new Unity version.

What are the results? Well, quite staggering really. Load times for a community provided large map were reduced from 5-10 minutes to seconds. There are other areas we'll have significant improvements in that will be more appreciable over time.

Trading and AI missions

If you've played RimWorld, you know how well trading can factor into to these kinds of game. So we wanted to start looking at what trading could look like in Stationeers. A form of trading is also key in our inspiration, SS13, so we felt it was a necessary component before we could replicate round-based play of Stationeers as well.



The initial groundwork has been done, the models have been made, which means we can begin the implementation in the coming weeks. It will involve placing down a landing pad. Placing landing "beacons" which would guide AI aircraft in, and then placing a communications relay which allows you to talk to these traders. You need to make sure the path you set is clear, or the AI craft will crash and not want to trade.



Initially it will just be trading, once that works out, we'll look at how the mission system (already implemented) can be extended to include people coming in via these ships. Perhaps you need to escort a scientist out to a remote area, or find someone lost and then recover them to a rescue ship, and so on.



Surgery and Medical



The medical system seems very basic. You get hurt, you take a pill. The reality is the system behind it is actually well fleshed out - it's just the "healing" that is simplified. You have organs, they take damage. So we want to expand this and surgery is seen as a key component.



It's a good chance for to examine: how do we get key mechanics into the game? Well, simply put - we play games! For me, SS13 in particular Paradise Station has been a surgery system I really enjoy. I play on that server as a Surgeon often; so I'm very familiar with how fun it can be. We discuss those ideas in an open forum, and often break out to a whiteboard to discuss the implementation. Then it gets captured on an internal intranet, tasks get assigned, and the work begins in earnest.



When will we see this in? Good question! The answer is really "it depends". Really what affects it most is how stable the build is, how well the engine upgrade has gone, and how bad stuttering is in the game.

Some weeks, people complain about us having new content coming when there are still bugs - assuming this new content takes people away from fixing bugs. That's seldom the case, we prioritize bugfixing over new features. New features and content get implemented because: the programmer doing it needs a break (something fun), implementing it takes a very short amount of time (variations of existing things can take only 10-30mins to implement), others are working on core aspects of the game so the programmer isn't able to do bugfixes till they're finished.

So how are we doing?

We're pretty upbeat actually! The project is in a good place, it's fun for us to add new things because we've ended up refactoring most of the really troublesome things. We are left with a few hard ones: such as stuttering and whether we completely replace Unity's networking API with our own solution. We also have big design decisions to make, some community suggested such as how much more "science" we model with things like pressure and temperature.



What is most fun, at least for me, is going into the game and adding new stuff and then seeing people play with it. And with a good foundation, we're able to do that much easier. We got some rough feedback early in the project, and updates were a lot slower. But that's just because we took on the biggest tasks first. And that's a tough part of early access, consumers aren't really ever exposed to these realities and as a developer: you can be rewarded for having a short time "more content" focus rather than a long term "better architecture" approach.



Please consider leaving a review on the project! It's really good to get feedback and review score makes a tremendous difference. Whatever review you leave but especially if it is not recommended, please leave some constructive thoughts. There is, for example, a recent negative review saying that the game doesn't run on Linux for them. We think that's a bit unfair, as the game isn't listed as supporting Linux. We see significant drops in sales based on even a few negative reviews. Some people do change their reviews, if they listed specific things and we go in and address them

Conclusion

So that is a pretty good overview of where we are at, and where we are heading for the next few weeks and months. Please let us know your thoughts, and get involved on the forums and discord!


Stationeers - Heightmare


This week is another pretty big one in terms of patch contents! It was meant to be a week we put the brakes on new features and go back to fix some of the long-standing bugs and address some quality of life issues. The outcome was some big wins on the performance and reliability fronts, but because Rocket can't help himself we also got a few new features! We've got some leave coming up in the coming weeks that may slow things down a little, but rest-assured there will still be steady improvements and we'll still be around in Discord to answer your questions and hear what you're doing in game.

Build States



Furnaces and Airlocks have been given additional build states. Much like how Frames are constructed, these structures require additional components after the kit is placed before they're functional. If you mouse-over the incomplete structure with the Extended Tooltip option enabled, you'll be shown what is required to progress to the next build state. They also now have to be deconstructed in phases in the same fashion. Likely tools for deconstruction of various stages are the Angle Grinder, the Crowbar, the Drill and the Wrench.


Integrated Circuit Improvements



The IC system has been expanded a lot this week with the introduction of several new commands at your disposal and the ability to interface with Reagent mixes. In the example gif above, Discord user Qiler has used IC's to do their own implementation of sorting. The code is available to everyone on the Steam Workshop.

The hardsuit has now been given an IC slot, allowing you to use IC code to control its internal systems. We will likely expand this system to support things like custom alerts, and look at adding IC slots to even more devices to give you greater control over your systems.


Glasses Slot & Night Vision Goggles

We've introduced a new slot to the game: Glasses! This has rudely inserted itself into slot 2 on your inventory bar, so if you want to preserve your muscle memory you'll need to assign it a new key otherwise you may wish to reset the inventory slot keys to the new defaults of 1-6. Currently the only items available for this slot are some regular old Glasses (just cosmetic at this point) and the new Night Vision Goggles (NVG). They use a bit of power but let you get around at night a bit easier. Expect more options for this slot to be introduced later to display a whole raft of data visualization options.


UI Audio

You may notice a few strange new noises when navigating the main menu. The current sound implementation is the result of a fairly intense couple of weeks right before we went into early access, so was lacking in a few areas. We're looking to fill in some of those gaps in the near future - starting with the easy stuff like UI sounds. Currently just the main menu and some of the prompts are included, however, this will extend into the rest of the UI (settings screen, inventory slot interactions etc) in the near future. We can then start to look at some of the more complex sound additions to the game, like footsteps, impact sounds etc. Any feedback is appreciated, as always! You can alter the interface sound independently using the newest volume slider on the Audio settings screen.

Bug Fixes / Improvements

Normally they wouldn't get their own heading, but there has been several significant fixes and improvements this week we'd like to highlight. Firstly, as mentioned in last week's patch notes we've acknowledged the performance issue with stuttering in the game and are trying to identify the best places to fix or improve it. This week we had several big wins in that department, with some of the worst culprits getting refactored to try make things run a little smoother. The problem definitely isn't solved, but based on the early feedback we've had from those playing on the beta branch the issue in at least the early game has been improved significantly. Work will continue in this area in the coming weeks and months.

In addition, several significant long-standing Atmospherics bugs were resolved, which you may need to be aware of going forward. A bug was identified by the prolific Risu on Discord, which caused the calculation responsible for transferring heat from pipe contents to the air surrounding said pipe and vice versa, to mix with the atmosphere at the world origin (0,0,0) rather than the atmosphere around the pipe. Now that it is fixed, you'll likely see much faster temperature transfer between pipes and the rooms they reside in - so be sure to keep an eye on that furnace output! We'll revisit the values for this after people have had some time to gauge the impact, then can look at tweaking the values or introducing something like Insulated Pipe if required.


Version 0.1.1701.7945
  • Added build states to furnace. Now will require iron sheets and a variety of tools to construct. Note that deconstruction also requires different tools now.
  • Added additional build states to Airlock. Two extra build states are required to construct the Airlock, for balance reasons.
  • Added tooltip information for incomplete structures. If a structure is not completed, and Extended Tooltips is enabled in the settings, a tooltip will advise the player what tools they need to complete the structure.
  • Added Plants and Entities (such as players) will now take toxin damage from pollutants. This scales with the partial pressure of the pollutants in the atmosphere. 1 kPa PP is when they start taking damage, and when a critical toxin alert will show for the player. 0.5 kPa PP is when the caution toxins indicator will show for the player. Note this scales with partial pressure, if you have lots of toxins - you will die quickly. Lungs will, slowly, repair their toxin damage if below 50 damage. Plants will (currently) not.
  • Added new slot Glasses. Note: This will have a default key that will conflict with existing installs. You will need to either reset the keys to defaults or rebind.
  • Added Glasses. Made on Tool Manufactory. Cosmetic currently.
  • Added Night Vision Goggles. Powered item that goes into the new Glasses slot. NVGs allow you to see at night, reasonably well. They use a fair bit of battery.
  • Added Cognition voice warnings for critical and low, warns player when they are losing consciousness. Can be set on or off under audio settings.
  • Added first pass of menu button audio. Should cover most of the out-of-game interface, as well as some in-game parts. Settings screen & Toggle/Checkbox audio to come next.
  • Added a dedicated Interface Volume slider to the Audio settings page.

    LOGIC
  • Added an lR command to the programmable chip that allows reading reagent information (recipe/required/contents).
  • Added a ternary command 'select' to the IC. See in-game documentation for useage.
  • Added SGT, SLE, SGE, SEQ, SNE, SAP and SNA commands to round out the set containing SLT for programmable chip
  • Added PressureExternal and TemperatureExternal readable values on the Hardsuit. These could be read by an IC in the Hardsuit Processor slot.
  • Added IC's can now be loaded into the Hardsuit. When in the hardsuit, an IC will be processed in the same was as the IC would in a circuit housing. Device references are hardcoded, currently : db is the Hardsuit itself. d0 is the Helmet, d1 is the Backpack (possibly jetpack if word). PressureSetting and TemperatureSetting are new Logic variables that work on the Hardsuit. This would allow you to write your own IC's to control your hardsuit.
  • Added Hardsuit Filtration and AirRelease added as variables. These can be read and set, 0 is off and 1 is on.

  • Improved stuttering bug. As memory is turned over, it causes Unity to perform "garbage collection" regularly to clean things up. A number of String generation areas have now been cleaned up, and have reduced stuttering caused by the Inventory Windows, and the Player State info (top right). These two areas caused quite a lot of constant memory turnover from updating their strings. If you notice an improvement with this update, please post your results in the forums. Note that stuttering still exists for my test levels, and we will continue to improve memory turnover to reduce stuttering. One big cause of stuttering that remains is memory turnover from the tooltip, and also network messages.
  • Refactored atmospheric messages to raw StreamWriter instead of MessageBase to reduce garbage. Reduces stuttering caused by atmospheric updates over the network.
  • Replaced starting airlock kits with regular door kits, as airlocks now require steel to complete them.
  • Changed ICs so that if the thing causes an error is fixed it will try to resume execution.
  • Changed Basketball Hoop now counts anything going through it, not just basketballs. Ores work well!
  • Moved IC labelling of devices to be the responsibility of the device the IC is hooked into instead of the IC.
  • Balanced Plant damage. They now take 30% of the damage they previously took, so they will be damaged slower.
  • Balance second CO2 Gas Filter to player spacesuit for default starting conditions, to make initial start more balanced.
  • Balance altered for Breathing value rate of entities. Now use an order of magnitude more moles, and plants use/produce an order of magnitude more moles. This was because production was so low for plants that, while realistic, the values were lost in either floating precision, or the atmospheric system removed them as they were so incredibly low. This was causing plants to not produce O2.
  • Improvement added B[R]AP - 'branch (relative) approximate' - and B[R]NA - 'branch (relative) not approximate' - to coincide with B[R]EQ and B[R]NE but allow the player to specify a tolerance in the comparison
  • Added a stack and branch/jump-and-load instructions to the programmable chip. Subroutines for all!
  • Changed db, sp, and ra to aliases, so they don't have to be handled specially, and load them at the beginning of an algorithm run
  • Improvement: Tidied how the IC stored it's variables so instead of code repeating an ugly implementation several times the ugly implementation only happens once now.

  • Fixed Null Reference Exception Message if you had a Control Chair in your world due to missing text box on the altitude display.
  • Fixed If playing offline, error message when Steam attempts to connect but fails will only repeat several times before the message is supressed.
  • Fixed error preventing the peek operation from working correctly on IC (credit Risu)
  • Fixed a bug where LED displays could display numbers larger than the screen size.
  • Fixed controlling an active vent with an Mode Control Circuitboard shouldn't get stuck changing mode any more. [Credit: Risu / Zaneo]
  • Fixed Incorrect labelling of Logic Types using the Configuration Cartridge due to the list of types being sorted alphabetically but not the list of string labels.
  • Fixed unclickable call button on Elevators.
  • Fixed Incorrect spelling and odd naming conventions on some wall types.
  • Fixed Pipe Thermodynamics. For quite some time, heat radiation from pipes has been calculated but applied to the atmosphere located at 0,0,0 instead of the one surrounding the pipe. This fix may cause temperatures in your base to fluctuate quite a lot more than usual depending on how your pipes are situated and what they contain. A big thanks to Risu for finding this one!
  • Fixed a bug in which IC's that contained references to db would be in error state when loading a save game.
  • Fixed Incorrect StringHash on Glasses slot resulting in them being incorrectly labelled as 'Belt' in several places.
  • Fixed bug in IC that prevented values being loaded from devices.
  • Fixed Function and Variable help window lists were not sorted alphabetically.
  • Fixed Basketball Hoop now updates the score display when OnOff is changed.
  • Fixed Configuration Cartridge now properly displays all accessible logic types and their current values on devices. Grey for readable, Green for writeable.
  • Fixed null reference when plant is breathing in a complete vacuum.
  • Fixed occasional NullReferenceException with Arc Furnace when smelting, due to incorrect atmosphere object being referenced.
  • Fixed NullReferenceExceptions on attempting to join a second game without restarting your Stationeers client due to old objects from the previous world still being referenced on load.
  • Fixed unable to place airlocks/doors when an object existed at 0,0,0 in the world. This shouldn't normally have been able to occur, but could via bugs. This would prevent you being able to place airlocks till this was removed. Now this redundant check was removed, as it was a leftover from an old system. Airlocks correctly check their face neighbors during placement.
  • Fixed Global atmosphere state not syncing to clients, so they didn't get variation in temperatures.
  • Fixed Nul ref caused by Atmospheric thread cleaning up atmosphere before event had a chance to occur.
  • Fixed exception when ice melting in a global atmosphere or true vacuum.
  • Fixed Hardsuit PressureExternal reporting in Pa, when suit set in KPa. Now unified in KPa.
  • Fixed Arc Furnace resulting in drop in temperatures when smelting. Now the arc furnace will produce gas, which will tend to be at the temperature of the surrounding air. Previously the gas was produced at zero degrees. Note the Arc Furnace will generate heat energy now, it's not energy neutral. This means if 2000 J is needed to smelt Gold, it will produce 20000 J of heat. You could capture this heat and be net energy positive. This fix may also fix the furnace, as it involved making the methods used Thread-safe, but this was not properly tested so needs to be confirmed.
  • Fixed incorrect description of PEEK on the IC commands.
  • Fixed a bug when registers with multiple digits weren't showing up as valid in the IDE.
  • Fixed Bug with pipe network splitting not properly distributing atmosphere, resulting in the sum of the newly created pipe networks containing more gas than the original. [STAT-1022]
  • Fixed Hardsuit processor slot tied to AC power state. Now IC in processor slot will run if there is a battery, and the battery has charge. You have to remove the processor for it to stop working.
  • Fixed PressureSetting was not setable on the Hardsuit.
  • Fixed issue with recipe containing duplicates if Workshop screen was accessed due to mods reloading.
  • Fixed error handling if two scenarios with the same folder name are loaded.
  • Fixed elevator shaft bounds box during construction is comically large.
  • Fixed Iron Window was trying to cast a shadow and was not set as transparent, therefore hiding sun.
  • Fixed bug which prevented aliases above 5 being assigned aliases.
  • Fixed memory leak with new StringGenerator.
  • Fixed Automated Hydroponics missing correct blueprint was using fallback.
  • Fixed IDE for ICCode recognizing commands in comments when it shouldnt.
  • Fixed dedicated servers occasionally not loading world or crates.
Stationeers - Heightmare


So it's been a really big week for us. Often, in game dev, some weeks are slow and some weeks a lot of stuff comes through. We received a bit of feedback on discord that last week didn't have enough fixes. We made sure this week had lots of fixes! Also some new content that we have been preparing for a while.

Automated Hydroponics

For a long time growing plants has remained one of the areas it was completely impossible to automate. Now we have an item that will, with the future tech tree, become more of an "end game" way of growing plants.

This automated station has an Import, Export, and Growing slot. You can send custom Logic command (Plant, Harvest) to the machine with a value of 1 to get it to process itself via logic. Or you can click the buttons on the machine.

Atmospheric Fixes

The first phase in a major atmospherics refactor has been completely. The game uses threads to help with performance. This means the game is able to do many things at the same time, without those other tasks impacting on the rest of the game.

This is a very complicated way of making a game, as these need to be carefully synchronised. Often areas of the game were accessing this "volatile" information while it was being changed, resulted in weird values. This caused significant issues; such as the dreaded "Temperature Low" often for brief seconds. This has now been fixed!

Over the coming months we will continue to introduce more changes to make the atmospherics system more robust. We're very confident that this weeks refactor will provide significant improvement in stability.

Nitrus Oxide

As an additional part of the atmos refactor, is the preparation for surgery in the coming weeks. We've added N2O which, in larger quantities, can cause you to go unconscious. Currently it's only available by debug spawning, but throughout the week will add more.



Logic Control modes for Slot Handlers



Filters, Unloaders and Stackers have not been able to easily be controlled via logic. Now, if you set their Mode to the appropriate value (2 for Filter, 1 for Unloader and Stacker), they will enter a "wait" mode.

In this mode, they will process a single requested operation, and then go back to waiting. You can see (or set) this state using the Output variable.

For example with the Filter, -1 is idle, 0 is left, and 1 is right. With the Stacker, -1 is idle, 0 or greater processes a single requested stack size. With the unloader, -1 is again idle, 0 unloads the slot item itself without removing anything, and 1 removes a single item from what you have loaded.

This allows you to use these items in any custom way, with the new IC's or the existing logic system. They will be able to work in lock-step with your logic systems.

The following script sets a stacker to Logic mode, with a setting of five, and processes one stack:
alias Stacker d0 # sets the screw to show stacker​ s Stacker Mode 1 # set stacker to logic mode​ s Stacker Setting 5 # stacker size will be 5`​ s Stacker Output 1 # stacker will process once

Integrated Circuit Code IDE Improvements



Based on excellent community feedback the IDE for editing IC code has been improved significantly, and many bugs found and fixed. Now your string based jump labels (e.g. "start:") will be colored purple, with other strings white. There are still some bugs but this will continue to be improved.

Integrated Circuit Code Library Workshop Support



You can now share your IC Code creations on the Steam Workshop using the in-game code library. This feature has been available in beta for a couple of days, so there's already several items available. Once subscribed, they will appear in the code library from where they can be easily loaded into any Computer with a Programmable Chip Motherboard inserted.

Recipe Selection Improvements



All the basic manufacturing machines have been given a bit of a visual touch-up with recipe selection finally getting its own button. In addition, the recipe selection UI has been given an overhaul and now features more sensible sorting and thumbnails. It also now properly supports localised item names in languages that require extended fonts.

Known issue: Stuttering

As your base gets larger, we have more stuttering. This is caused by Unity's Garbage collection occurring. We have included an update in this patch that reduces this by about 30% but it is still very noticeable.

We have some plans for this:
  • We are looking at upgrading to the latest Unity version
  • Refactoring all our code to make it more memory efficient
  • Replacing Unity's MP system with our own that is more memory efficient

Version 0.1.1671.7828
  • Improved ICScript IDE to recognize dr? variants and r..? variants. Also recognizes labels (purple) and better recognizes strings. Also colors numbers separately.
    * Fixed tabs causing misalignment between formatted display and actual text. Now tabs are replaced with a single space on import.
  • Added Automated Hydroponics. This is a late-game device that allows you to fully automate growing of plants. It contains only one plant slot, but has Import and Export slots and connections for chutes. If you place a plant in the import slot, and then either press the "plant" button (or set the new device variable "Plant" to anything greater than zero) then one of the stack will be planted. The same system applies for Harvesting. You also receive better feedback on the state of the plant. There are two pipe inputs, one provides the "atmosphere" inside (CO2 for most plants), and the other is used by plants for water.
  • Added Workshop Support for IC Code Instructions. A new button is located to the left of the existing load/save/delete buttons in the saved instruction list. If uploading an item that already has a workshop ID, you will be prompted to enter a change note. A screenshot will also be generated automatically. All of these can be modified via the steam workshop webpage for your item.
  • Added Stun Warning and Critical indicators (no audio notification currently). A yellow warning and red critical icon will show, together with how stunned the player currently is.
  • Added Nitrous Oxide. Currently inert, other than at certain concentrations will cause the player to take (progressively more) stun damage. Only the first pass, will be utilized more with the implementation of surgery later.
  • Added disable water visualizer option. Water still exists as normal, you just can't see it.
  • Added Split/Filter/Logic mode settings to Sorter. You can force it into Logic mode (Mode = 2) with logic (IC, Logic Mobo, or Writers), and now the device will only process one action before resetting itself. You can control this action with the Output variable. Output == -1, when in logic mode, is the idle state. Output == 0 is the left slot, Output == 1 is the right slot. When in this logic mode, it will only process one slot before setting itself back to Output = -1. This is useful to completely control the Sorter using logic. It will allow you to read and handle what is in the Import slot.
  • Added Automatic/Logic mode to Stacker. When forced into Logic mode (Mode = 1) with logic, the device will only process one action before waiting. When in this logic mode, Output == -1 is idle. Output > 0 will perform a single stacker action (i.e. if the setting is set to 5, it would output one stack of five before stopping).
  • Added Automatic/Logic mode to Unloader. When forced into Logic mode (Mode = 1) with logic, the device will only process one unloading action before waiting. The idle state is Output == -1. When Output == 0, the device will move the item it is unloaded completely, without continuing to unload (basically, it stops unloading and ejects the parent item). When Output == 1, the device will unload one item from the parent it has held, and then return to the idle state.
  • Added Legacy Inventory setting. When enabled, only one window at a time will be open, similar to how the game was before. Note that it current does not allow you to have more than one window open at any time, including the hands - so it is not exactly the same as it was before. Once docking windows is added, I will look at allowing one window per docked location, which will then much more closely resemble the original inventory system for those who do not like the move to mouse control.
  • Added Advanced options page, splitting the Video settings between this and the Video page to give us more room for customization options.
  • Added alias string support to IDE for the IC Editor. Now defined aliases will be "recognized" by the IDE, and highlighted as a string.
  • Depreciated the Label command in the IC. Alias with device usage now also affects the screw previews.
  • Added extended terrain settings to worldsettings.xml. Now works on Europa.

  • Adjusted Stun mechanics. Now the saturation and visibility adjustments will occur faster, and full blackout will occur with the unconsciousness at 100%.
  • Refactored Atmospherics System (phase one). This is a major change that fixes a number of atmospheric issues. This fixes the occasional "temperature low" warnings, and the like, that were caused by the game reading data that was halfway being updated. This also greatly reduces the likelihood of atmospheric exceptions from "bad data", but not completely. Writing threadsafe enforcement has been developed but is not deployed in this build. This will likely also give a performance boost, as the game now caches values in the atmospheric system.
  • Replaced model for Organics Printer with a better one.
  • Replaced tool manufacturer with new model.
  • Replaced Electronics Printer, Pipe Bender, and Security Printer models with better buttons indicators for finding, and improved geometry.
  • Replaced Dropdown for selecting Machine Recipies to a new selection method that displays the recipes in groups, and includes a picture of the item, the name of the item, and the slot type (if any).
  • Replaced Autolathe model with new model, better indicator of the Find button and improved geometry.
  • Improvement jumping instructions can now go to tags.
  • Improvement IC command Alias can now take device arguments.
  • Tweaked IsVoxelFaceOpen - now allocates slightly more memory to ensure thread-safe operation, hopefully resulting in terrain being more reliable for containing atmosphere. [Credit: Risu]
  • Reduced memory allocation when generating terrain to improve issue with garbage collection.
  • Removed Dictionary lookup in justsample terrain generation to reduce garbage allocation.
  • Improvement mousing over a programmable chip in an error state will include a message about the line number the error is occuring on and the type of error.

  • Fixed plants wilting due to lack of CO2 in air. Plants required a minimum partial pressure of 2% CO2 at one atmosphere, which was wrong. Now 0.2% partial pressure is required for standard efficiency.
  • Fixed critical issue with plant breathing mechanic. Previous fix exposed flaw in how plants took breath. This has been corrected, they require 2% CO2 partial pressure at One Atmosphere as a baseline. Increased pressure will help with collection of CO2, up to a point.
  • Fixed bug with Health Caution indicator not displaying as Parent was incorrectly tested.
  • Fixed bug where Critical status indicators would be sent to the bottom of the status list, not the top, where it was intended they would go.
  • Fixed extended terrain showing up on the moon and space when it shouldn't be.
  • Fixed error when OcclusionManager tried to do work on the extended terrain when it is disabled.
  • Fixed exception occurring when message label changes were being executed by the logic computer on integrated circuits.
  • Fixed bug where trying to assign a label to db would corrupt save file.
  • Fixed rounding of Output logic command on Stacker, Unloader, and Sorter preventing value from being set to -1. [Credit: Risu]
  • Fixed UpdateEmptyFilter() not called when filter moved from inventory only when a filter has 0 Quantity [Credit: Risu]
  • Fixed Harvest null reference exception when called through logic to actually harvest a plant [Credit: Risu]
  • Fixed bug with IDE window of IC that would not update the text correctly if you had dragged over text, and then edited it. This was because dragging wasn't captured as an "active line". Now correctly refreshes after this occurs.
  • Fixed being able to eject resources while constructing with autolathe.
  • Fixed plants were scaling their breathing amount incorrectly, meaning plants were use huge quantities of gas when they were in high pressure environments. Now correct breathing amounts are used. This will probably significantly reduce CO2 consumption and O2 production from plants. Approximately 10 corn plants will grow off the CO2 produced by a single human.
  • Fixed bug in which aliases weren't being used by `l`, `ls`, or `s` commands on programmablechip.
  • Fixed able to write to battery state Mode to change it's viewed power level.
  • Fixed item drop location when dragging items to the world using mouse control. Now drops the item in front of the player, the same as when you use the drop key, rather than underneath the player.
  • Fixed bug where inserting a new chip to the housing didn't reset the error state.
  • Fixed stuttering caused by extended terrainLOD.fbx
  • Fixed able to place flag anywhere. Now can only place when terrain or a frame is below it.
  • Fixed issue where releasing MouseControl key would hide the cursor in some cases, even if you had a UI on screen that required the cursor to be visible.
  • Fixed Organics Printer On Switch was incorrectly animated.
  • Fixed bug in which reloading save would cause logic chips to restart from beginning
  • Fixed Dropdown boxes are not sorted in a way that makes sense. Now dropdown lists are sorted primarily by their generic type (Resources, Kits, Tools, Clothing, and General), and then secondarily by their Display Name in English. This isn't perfect, but it does make it somewhat easier to find things on dropdowns. This will be improved further in the future.
  • Fixed several settings that were not properly included when resetting to defaults.
  • Fixed game crashing when loading a save file with large terrain.
  • Fixed bug on programmablechip where multiple calls to RAND within a tick would obtain the same value.
  • Fixed when an IC is placed in the housing the program on the chip will start from the beginning instead of continuing from where it was
  • Fixed bug in which if an object was told to perform a task multiple times a tick by a programmable chip the sound would play several times.
  • Fixed bug with speech recognizer not being initialized and causing an exception, that prevented language from being selectable.
Stationeers - rocket2guns
The main update caused a problem with the dedicated server, and some other issues. The notes are below. This will be updated below with additional information if further hotfixes are released, but new posts will not be made.

Version 0.1.1652.7724
  • Fixed sizing issues causing line numbers to be obscured, and IC Editor page to be sized wrong with different UI scale applied.
  • Fixed Delete and Backspace not having intended effect of deleting a line. Now will change order of lines correctly. Note that Delete/backspace will never merge lines like a typical editor would.
  • [Version 0.1.1651.7720]
  • Fixed IC Housing not able to have screws set by clients, only changing on the server. Now correctly populates for clients and allows them to change [Credit: SilentEagle]
  • [Version 0.1.1650.7718]
  • Fixed IC Editor causing extreme lag when loading and editing. Now it is line based. Expect this to change significantly and more features are added.
  • Fixed IC Editor HOME and END moving to beginning and end of file. Now just beginning and end of line.
  • [Version 0.1.1649.7716]
  • Fixed Dedicated Server failing to start when trying to load graphics driver.
Stationeers - Heightmare


You asked for it, and after a week of testing and reworking on the Beta branch we're ready to introduce Programmable Chips to the stable branch! In addition, we've almost completed work on the public bug tracker!.

Programmable Circuits

Last week we announced the addition of Programmable Circuits to the Beta Branch. Now after a week of improvements, adjustments and bug fixes we're ready to let everyone get their hands on this powerful tool.



You'll require 3 things. Firstly, an 'Integrated Circuit (IC10)' that will store your instruction set. These can be inserted into a Circuit Housing (built from the 'Kit (IC Housing)' that can be used to specify up to 6 devices you wish to read from/write to within the IC's instruction set. Finally, a Computer with a Motherboard (IC Editor) inserted can be used to import/export instructions from/to any IC Housing on the same network, and to edit instructions via a simple popup IDE window.



Basic help is available in-game via the Computer with an IC Editor Motherboard inserted.

The (up to) 6 devices you wish to work with in code can be specified using the 6 screws on the IC housing, then referenced in code using the syntax below:

In the following db is the device itself (base unit) d is a device l is a logic type q, r, s are registers or numbers t is a register # MIPS derived l t d l # loads logic type l on device d to register t ls t d s l # loads logic type l of register s on device d to register t s d l r # stores the value in register r to logic type l on device d move t r # t = r add t r s # t = r + s sub t r s # t = r - s slt t r s # t = r < s ? 1 : 0 and t r s # t = 1 if both r and s non-zero, 0 otherwise or t r s # t = 1 if at least one of r and s non-zero, 0 otherwise xor t r s # t = 1 if exactly one of r and s are non-zero, 0 otherwise nor t r s # t = 1 if both r and s are zero, 0 otherwise mul t r s # t = r * s div t r s # t = r / s mod t r s # t = r mod s (not equivalent to % operator) j q # jump to line q bltz r q # branch to line q if r < 0 bgez r q # branch to line q if r >= 0 blez r q # branch to line q if r <= 0 bgtz r q # branch to line q if r > 0 beq r s q # branch to line q if r == s bne r s q # branch to line q if r != s jr q # relative jump to line q brltz r q # relative branch to line q if r < 0 brgez r q # relative branch to line q if r >= 0 brlez r q # relative branch to line q if r <= 0 brgtz r q # relative branch to line q if r > 0 breq r s q # relative branch to line q if r == s brne r s q # relative branch to line q if r != s // MIPS II derived sqrt t r # t = sqrt(r) round t r # t = round(r) trunc t r # t = trunc(r) ceil t r # t = ceil(r) floor t r # t = floor(r) // stationeers useful stuff label d str # displays string on device screw max t r s # t = max(r,s) min t r s # t = min(r,s) abs t r # t = abs(s) log t r # t = log(r) exp t r # t = log(r) rand t # t selected UAR from [0,1) yield, # waits for next tick before continuing alias n r # labels register r with name n Supports indirect register addressing by adding r to the front. For example rr0 is the register found by taking the value of r0 and using that as the the number, and rrr0 is the value c in a = r0, b = ra, and c = rb. This also works with devices. So if r0 stores 1 and r1 stores 2 then drr0 expands to d2.

Example 1: Climate Control



Device Settings on Housing:
d0 : Gas Sensor
d1 : Memory (Input for Batch Writer - Heaters.On)
d2 : Memory (Input for Batch Writer - ActiveVents.On)
d3 : Memory (Input for Batch Writer - ActiveVents.Mode)
d4 : Memory (Input for Batch Writer - WallCoolers.On)
d5 : Logic Dial (Target Temperature)

# set the screws to these strings for easy setup label d0 GasSensor label d1 MemoryHeaters label d2 MemoryVentsOn label d3 MemoryVentsMode label d4 MemoryCoolers label d5 DialTargetTemp # set aliases to registers for easy ref alias pressure r0 alias temperature r1 alias pressureCheck r2 alias dialSetting r3 alias temperatureCheck r4 # load settings to pressure l pressure d0 Pressure l temperature d0 Temperature l dialSetting d5 Setting # pressure checks sub pressureCheck pressure 95 brgez pressureCheck 4 s d2 Setting 1 s d3 Setting 0 jr 7 sub pressureCheck pressure 105 brgez pressureCheck 3 s d2 Setting 1 jr 3 s d2 Setting 1 s d3 Setting 1 # temperature checks sub temperatureCheck dialSetting 272.5 brgez temperatureCheck 3 s d1 Setting 1 jr 7 sub temperatureCheck dialSetting 274.5 brgez temperatureCheck 4 s d1 Setting 0 s d4 Setting 0 jr 2 s d4 Setting 1 yield j 5

Example 2: Indirect Register Addressing



Device Settings on Housing: Lights 0-5 from left to right.

move r0 0 s dr0 On 1 # start with the left light on yield add r0 r0 1 # step to the right s dr0 On 1 # turn next light on yield beq r0 5 8 # if at end of row jump to moving left j 3 # otherwise keep going right s dr0 On 0 # turn the current light off sub r0 r0 1 # move to the left yield beq r0 0 3 # if at the first light jump back to moving right j 8 # otherwise keep moving left

A useful webpage for testing out your programs is the illustrious Melair's IC Tool. This can be used to try out the instruction set outside of the game, and even share your creations with others.

If you have any questions or want to show off your creations, drop into the #logic-circuit-discussions channel on Stationeers Discord.

Public Bug Tracker Beta



Introducing the Stationeers Public Bug Tracker! We'll be looking into how best to use this over the coming weeks as part of an ongoing plan to improve the ability to collate bug reports and useful information from the community, as well as how certain bugs are prioritized and why.

Low-Poly Terrain Visualizer



To try and help fill the gap between the generated terrain and the sky, we're now generating a much wider area but using a very basic version of the terrain. This will let you scout out for large mountains or recognizable terrain features without the loading/unloading required for normal mineable, collideable terrain. Currently only supported on Mars, we'll look at rolling it out to the other environments in the near future.


Version 0.1.1648.7714
  • Added Programmable Chips - see patch notes for further details!
  • Added Low-poly terrain visualizer for rendering a rough version of terrain with a much larger view distance than the actual terrain. Can be enabled via the Video Options screen as 'Extended Terrain'.

  • Fixed issue where graph display circuitboard creates giant white bars in space if removed from the console.
  • Fixed saved Ambient Occlusion and Lens Flares settings not being correctly applied on launch. [Thanks ChronoMantis]
  • Improved: Reduce sound level for active vent intake and outtake sound, as well as switch on/offs. Enjoy a more comfortable sonic environment!
  • Fixed inability to mine after changing hand or unequipping a mining drill while it was operating until you relaunched the game.
  • Fixed Duplicate entries on settings screen for voice notifications and key bindings.
  • Fixed issue with GasDisplay circuit boards occasionally displaying the incorrect unit of pressure. [Thanks Risu!]
  • Updated translations for French, Italian, Russian, Spanish and Suomi.
Stationeers - Heightmare


NOTE: UPDATE (16/09/2018) The IC system has evolved significantly since this news post. For a more recent description of the programmable circuit implementation available now on the stable branch check out the full patch notes post here.

The next evolution of logic circuits is now available for testing on the beta branch. This will continue to be worked on in the weeks to come based on your feedback, so please give them a try and let us know how you get on!

These will be a late-game optional replacement for the existing logic circuits, allowing you to make far more intricate circuits using a programming language based on MIPS and best of all, all housed in a single chip!

A computer program is written on a computer with a ProgrammableChipMotherboard
inserted. Once written the code can be exported to whichever ProgrammableChip
is selected from the drop down. Code can also be imported from selected
devices for editing.

When sent to the device execution will begin at line 0 (the first line) and
stop when it reaches the end of the code. To have code recur jump and branching statements need to be used. In those cases execution will run either
- 128 lines of code, or
- until a yield statement is reached, execution will begin on the following line
the next power tick.

The chip can take up to three inputs from other Logic Readers referred to by the values i0, i1, and i2 corresponding to the input screws on the chip. It also has five registers referred to by the values r0, r1, r2, r3, and r4. The output value, referred to as o, can then be read by a Logic Writer on the same network and used as you wish.

In the following list
- d is a register or output
- s and t are registers, inputs, or floats
- a is a non-negative integer value
All calculations, except for the address to jump to, are done as floats.

As a final note before listing the commands, there may well be ways of combining commands to get results you want that use behaviour not specified here. That behaviour may change at some point in the future.

We also plan on making the loaded commands persist with the device when it is deconstructed, so you can configure them with a computer then reinstall them at another location on a separate device network. This will likely come next week.

// Text after a // will be ignored to the end of the line. The amount of white // space between arguments isn't important, but new lines start a new command. move d s // stores the value of s in d add d s t // calculates s + t and stores the result in d sub d s t // calculates s - t and stores the result in d mul d s t // calculates s * t and stores the result in d div d s t // calculates s / t and stores the result in d mod d s t // calculates s mod t and stores the result in d. Note this // doesn't behave like the % operator - the result will be // positive even if the either of the operands are negative slt d s t // stores 1 in d if s < t, 0 otherwise sqrt d s // calculates sqrt(s) and stores the result in d round d s // finds the rounded value of s and stores the result in d trunc d s // finds the truncated value of s and stores the result in d ceil d s // calculates the ceiling of s and stores the result in d floor d s // calculates the floor of s and stores the result in d max d s t // calculates the maximum of s and t and stores the result in d min d s t // calculates the minimum of s and t and stores the result in d abs d s // calculates the absolute value of s and stores the result in d log d s // calculates the natural logarithm of s and stores the result // in d exp d s // calculates the exponential of s and stores the result in d rand d // selects a random number uniformly at random between 0 and 1 // inclusive and stores the result in d // boolean arithmetic uses the C convention that 0 is false and any non-zero // value is true. and d s t // stores 1 in d if both s and t have non-zero values, // 0 otherwise or d s t // stores 1 in d if either s or t have non-zero values, // 0 otherwise xor d s t // stores 1 in d if exactly one of s and t are non-zero, // 0 otherwise nor d s t // stores 1 in d if both s and t equal zero, 0 otherwise // Lines are numbered starting at zero j a // jumps to line a. bltz s a // jumps to line a if s < 0 blez s a // jumps to line a if s <= 0 bgez s a // jumps to line a if s >= 0 bgtz s a // jumps to line a if s > 0 beq s t a // jumps to line a if s == t bne s t a // jumps to line a if s != t yield // ceases code execution for this power tick

This is a sample timer command set, alternating between 1 for 1 tick (0.5s), then off for 2 ticks (1s).

move r0 0 // Line 0: move the value 0 to register0 sub r1 r0 3 // Line 1: subtract 3 from the value in r0 and write it to r1 bltz r1 4 // Line 2: jump to line 4 if r1 < 0 (skip the next line) move r0 0 // Line 3: move the value 0 to register0 slt o r0 1 // Line 4: if r0 < 1 write 1 to the output, otherwise 0. add r0 r0 1 // Line 5: increment r0 by 1 yield // Line 6: wait until next power tick (0.5s) j 1 // Line 7: jump back to line 1

As always, we would love to hear about what you're making with the new programmable chip and devs will be keeping an eye on the #logic-discussions channel in Stationeers Discord next week, so bring all your comments and suggestions!
Stationeers - Heightmare


Greetings Stationeers! Much of the work this week has been done in the back-end, with whispers of expanded scenario mod support, random world events and even a public bug tracker. As always the latest updates on what's happening on the beta branch are available on Stationeers Discord!

Advanced Ore Scanner

To help ease the mining burden a little we've reduced the cost of the Ground Penetrating Radar and basic Ore Scanner Cartridge for your tablet. This will help ensure you mine entire veins and don't accidentally miss any large deposits right below the surface. Once you get further into the game and have a good supply of late-game alloys, you can now upgrade to the new Ore Scanner(Color), which differentiates between different ore types so you can just hunt for whatever you need the most.

Tomatoes



Another new addition to your hydroponics possibilities - Tomatoes are now available. You'll need to get them from the Organics Printer initially, but they can be made into Tomato Soup in the Microwave.

Logic Writer Switch



While only the beginning of plans to condense logic circuits, this small addition will make simple logic circuits a little less complex. This will effectively allow you to place a switch and specify a logic circuit target for it to write the switch value to, all in one unit.

Scenario System Expansion



Hopefully some of you have had a chance to try out the Escape From Mars scenario we added to the base game last week, and people are having a go at making their own scenarios! We've expanded the system this week, and while this doesn't directly translate to a lot of new content available to scenario authors it does set the stage for a lot of things to come. The Incident system is very similar to the Missions system, but lets us leverage the existing events that have been created for missions, without UI overhead. This, combined with new EventActions opens new possibilities of passive background events, starting with simple items with small impacts like temporarily changing the global atmosphere (cold snap, heat wave) to more complex interactions like spawning items or enemies, damaging structures or equipment and much more. These will likely appear as an option to enable on your world once we figure out a nice method of letting you know they occur, without relying on you just realising that it suddenly got very hot or very cold!

NOTE: Saves of Scenarios in progress likely will not load correctly and you'll need to start again - apologies.


Version 0.1.1621.7613
  • Added Logic Writer with integrated switch. This is a logic writer with a mounted switch. When you change the switch, it will write a setting of 0 or 1 to it's selected output depending on the switch state itself. Constructable from the I/O Logic kit.
  • Added Tomatoes, Tomato plants and Tomato Soup. Currently awards slightly more nutrition than a potato when consumed raw, but slightly less than a baked potato when made into soup - but is consumed faster. Balance values subject to change.
  • Added first pass of 'event actions' or scripted events that occur at the beginning or end of an Incident stage. May be added to mission stages later.
  • Added color ore scanner cartridge. Cartridge (Ore Scanner(Color)) acts like the default Cartridge(Ore Scanner), but distinguishes between different ore types by color.
  • Dropped cost of Ground Penetrating Radar to make it easier to use default ore scanner.
  • Refactored Mission system. Deprecated old-style loading for non-xml based missions. Can now support multiple concurrent missions. Mission components previously in WorldManager moved to the new MissionManager. Scene references previously stored in standalone instance of specific mission types (MarsMission, CustomMission) moved to MissionManager on WorldManager scene object.
  • Refactored Incidents, which are essentially missions with no UI. Used to script random events, like heat waves, cold snaps etc.
  • Replaced Crate Mount model and blueprint with arrows to indicate what what direction an attached crate will open from.
  • Improvement Autorotate works on all outstanding wall-mount items.

  • Fixed the back wall of a CompositeRollCover now blocks air and light.
  • Fixed bug preventing master volume setting from loading on launch.
  • Fixed LogicWriterSwitch now correctly returns a kit when deconstructed.
  • Fixed error messages caused by thread
  • Fixed error caused by writing quantity setting values to Stackers using the batch writer.
  • Fixed NRE when your system does not support speech recognizer
  • Fixed issue with saved volume settings not being correctly applied when launching the game.
  • Fixed HydroponicsTray would Autorotate around the wrong axis.
  • Fixed Autorotate bug where trying to rotate some objects that didn't implement the interface would give an error.
  • Fixed a bug preventing placement of ActiveVent on Motherships.
  • Fixed Passive Vent orientation issues on Mothership.
  • Fixed a bug that would cause wonky orientation when placement was started in the mothership grid for certain objects
  • Fixed a placement bug that would cause incorrect orientation or position when placing Face objects.
  • Fixed Terrain streaming bug when client has a lower ChunkRenderDistance setting than the server.
  • Fixed Missing reference in scene causing Speech Recognition to cause errors in settings page.
  • Fixed incorrect ladder rotation axis.
  • Fixed Hydraulic Pipe Bender recipes were getting added to the electronics reader a second time instead of Tool Manufactory recipes.
  • Fixed issue where convective heat transfer was not being calculated correctly.
  • Fixed a bug where Face object movements weren't restricted properly.
  • Fixed issue with garbage and frame drop when character's status has been updated.

  • Added partial Slovak translation thanks to 'samuelcseto' from Discord. Drop by the #localization channel if you think you could contribute to the community translation effort.
  • Added partial Czech translations - thanks to TFlippy in Discord for getting it started!
  • Updated Community-provided translations for Italian, Russian and Spanish.


...