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.


Stationeers - Heightmare


The team is just starting to get back on track after a few slow weeks at far below full-strength, but we hope you enjoy all the new stuff we've got in store for you! From the next phase in Scenario development, to some new toys and extended modding support:


Portable Hydroponics
A new early-game option for growing that first critical crop of food is the Portable Hydroponics tray. It has been added to your starting equipment and comes pre-loaded with a small canister of water to get you started. It'll still be up to you to provide it with a suitable growing atmosphere and source of sunlight, however.



Escape From Mars



The Escape From Mars scenario has been pulled off the workshop and integrated into the base game, but is still definitely in an early version. After a few more people have had a chance to play through it and give us their feedback we'll do some balancing, but the last few pieces of the puzzle are in now and the entire scenario can be completed without creative mode. BE WARNED - it is definitely a challenge. You'll have a far more limited set of starting supplies, and will need to be able to use a furnace to create some of the late-game alloys and a large quantity of mixed fuel in order to complete all the objectives. You'll find a guide tablet near your starting location that can offer some additional tips relevant to the stage you're on, and can save your progress and return to it later.



Klaxton / Loudspeaker



Flashing lights not quite grabbing your attention when your batteries are running low? Grab an ItemKitSpeaker from the Electronics Printer and use logic or your screwdriver to choose from one of 6 alarm sounds and 3 music tracks to assault the eardrums of your bases inhabitants.



Hardsuit Jetpack/Backpack




We've added two new backpack variants to go with the new suit added last month. One is just a newer version of the existing jetpack with slightly more storage. The bigger change is you can now opt to go without the jetpack functionality in favor of even more storage, especially useful if you're just running around your base.



Modding Data Expansion
In our ongoing efforts to improve modders ability to customize the game, we've exposed many new values to XML. This covers a broad range of item values from food stats, to battery capacities etc. This system will ultimately be used to balance large portions of the game, as many of these values are configurable to devs but previously not to everyone else - from item mass, to combustion temperatures, flammability and burn-time and much, much more. The example mod archive included with the game has been updated to demonstrate how to use these tools, but expect more information to come in the near future as more values are exposed.


Version 0.1.1603.7531
  • Added Escape From Mars scenario to base game, but still requires a lot of balance and currently will be very difficult to complete. If you do try it out, drop by Discord and let us know what you think!
  • Added Speakers can now be linked to Airlock Controllers. When a speaker is linked to the airlock controller, it will be turned on and off in the same way as lights are - when the airlock is processing all Speakers will be turned on.
  • Added Speaker (Klaxton). Has six alarm sounds and three basic music tracks. Set the different tracks using Mode, turn on and off with external tool. Can set volume either via logic, or via a screw on the speaker itself. Constructable from a Speaker Kit, which you can build on the Electronics Printer.
  • Added Hardsuit Jetpack. Has increased capacity (forteen slots) as well as full jetpack functionality and increased environmental protection for contents. Constructable from the Tool Manufactory.
  • Added Hardsuit Backpack. This has more slots, but no jetpack capability. Constructable from the Tool Manufactory. Useful where you want more storage space but don't require jetpack.
  • Added first pass of setting prefab attributes through modding. There is now a new XML type "ThingModData" which is a list inside "ThingMods" in GameData. This allows you to overwrite prefab values that were previously hardcoded in the prefabs. So far, variables on Thing, DynamicThing, Item, Food, GasCanister, and BatteryCell have been exposed. An example mod is included in the game folder (StreamingAssets\AttributesExampleMod.zip), as well as on the workshop (don't run while playing the game, it makes eggs unusable in recipes). Note that over time more and more attributes will be exposed, allowing you to mod more and more of the game.
  • Added Portable Hydroponics. A dynamic item that contains four planting slots, and a gas canister slot. Provided as part of the starting supplies, and also constructable from a kit produced from Pipe Bender. Allows growing plants in a dynamic object that can be carried around. Still requires sunlight. Can be wrenched onto a connector.
  • Added recipes for Mushroom, Pumpkin and Rice to the Organics Printer.
  • Added recipe for mothership core to Electronics Printer with some very temporary ingredients. This is largely to support the Mars scenario that is still being tested.
  • Added OnMothershipCreatedEvent to scenario authoring to support tasks to create new mothership cores.

  • Fixed Setting volume via logic is no longer clamped between 0.1 and 1. Now uses 1-100.
  • Fixed error message when trying to set Klaxon volume outside the main thread (ie. via logic).
  • Fixed Air Conditioner screen not turning on when loading a save. [Thanks Risu]
  • Fixed Guide Tablet now resets to page 1 when you progress to a new mission stage.
  • Fixed incorrect paths when loading scenarios from base game data vs from mods.
  • Reduced amount of water that spawns with a Water Canister.
  • Fixed mining drill being audible at far beyond it's intended sound range.
  • Fixed Batteries having their power stored value being set to NaN and rendering the battery non functional.
  • Fixed collision damage not taking angle into account. You should no longer receive damage if sliding down a slope.
  • Reverted some changes intended to increase performance that may have been causing issues (exploding canisters)
  • Fixed some scenario objects not being cleaned up properly preventing you from completing objectives if you restarted a scenario without relaunching the game.
  • Fixed bug with Scenarios looking to the wrong file path for the starting condition definitions XML file.
  • Refactored mineables pool. Modest reduction in garbage collection.
  • Fixed Save/Loading of Scenarios so that they properly restore stage and objective states.
  • Fixed wrong rice texture was used. Resulted in green rice and weird plant textures. Now correct texture used so rice is white.
  • Fixed Using the Type mode on OnConstructedEvent now checks for a subclass match not an exact class match.
  • Fixed ThingExceedAltitudeEvent now selects the first mothership it finds when the mission task is created. Means this task trigger will have to be on a subsequent stage after any mothership creation one or it won't work correctly until save/load.
  • Fixed TaskDisplays list on Custom Missions is now correctly cleared at the end of a stage.
  • Fixed Mothership cores being placed at world origin instead of correctly on the mothership grid due to the mothership having its grid set back to the world grid by occlusion manager.
  • Fixed ability to interact with empty slots on Hydroponics Station and Portable Hydroponics even when holding nothing.
  • Fixed A bug in which cycling through some options while on mothership grid would cause incorrect orientation of the object.
  • Updated Localizations for French, Italian, Simplified and Traditional Chinese, Spanish and Suomi. As always, a big thanks for the active members in the #localization channel contributing to the translation effort.
Stationeers - Heightmare


We finished a week that was a perfect storm of tragedy and sickness hit the team this week so most of the team have been out of the office. Still, we were able to push some key areas but the bigger changes tend to get left to the side until all hands are back on deck.

Intermittent Stuttering

Last month we had some major progress on key areas, such as dramatically increasing rendering distance for terrain and how terrain is generated. Great stuff! But as we increase the amount of work the game does - it increases the amount of memory used and in particular the turnover of that memory.

As we are using Unity, and specifically C#, this memory is managed by the game engine itself. As you no longer need information this memory is cleaned up. This process is called "garbage collection", and when this occurs if too much has to be cleaned up at one time - you get stuttering.

This is most noticeable as a stutter or frame-skip every few seconds (or more of less regularly). There are many areas where we have favoured easy to read and understand code over well performing and memory managing code - because it dramatically increases the speed of development. But a few of these key areas are so bad they have to be cleaned up.

We identified jetpacks, and terrain generation, as the two major problems we can easily deal with to reduce stuttering. Jetpacks had some solutions this week, so you might notice improvements if you had stuttering. Rest assured, we'll be continuing our work on that next week and beyond. Garbage collection is a problem we will tackle through the entire length of the project, and probably beyond.

Scenarios

You may have noticed a new Scenarios button on the main menu. Scenarios as they currently exist, are a more structured way to play the game. They're not intended to replace the current survival mode, but instead use the existing systems to let people focus on particular areas of the game, or play through stories authored by you and your fellow Stationeers. Instead of generating a new world, scenarios take place in a pre-authored one, like loading a saved game. From there the player is given a set of tasks, much like the tutorial. Once these tasks are completed, you can progress onto the next mission stage.

One feature of this system that's not immediately obvious, is that these stages and tasks can be authored by players, applied to their own saved world and uploaded to the Steam Workshop. We expect to be constantly expanding this system to introduce new task types, actions that can be triggered by certain tasks and random events etc - so if you have something in mind you would like to add to expand a scenario you're working on, swing by the #suggestions channel in Discord and tag @Heightmare.

Currently, the first official scenario 'Escape From Mars' is only available via the Steam Workshop - but once the last few bugs are ironed out it'll get added to the base game. Once this happens, the workshop version will serve as an example for how you can author your own.

Auto-Rotate Everything*



Auto-rotate support has to be manually added to every structure in the game we want it to apply to. Luckily, we're reaching the end of this piece of work and barring a few outliers, you should be able to use the auto-rotate tool (C by default) to place almost anything in the game.

New Plants



To give you some early-game food growing options that weren't dependent on sunlight, we've added Mushrooms to the game. They'll give you roughly the same nutrition as an uncooked potato, but recipes will be added in time. Rice and Pumpkins both require light, but have varying growth speeds and nutrition values.


Version 0.1.1586.7476
  • Added Autorotate support to almost 50 structures, meaning it now supports almost all of the structures currently in the game.
  • Improved Autorotate to work with grid objects that have rotation restrictions.
  • Optimization Identified Jetpacks as the cause of a lot of memory allocations and made several improvements.
  • Added Scenario Menu. No official scenarios are included yet, but support for workshop scenarios has been enabled. This will be better detailed in the next patch and documentation on how to build your own scenario will be provided in the #modding channel in Discord when it's ready. The Scenario button will be disabled if no valid scenarios are detected in your enabled mods.
  • Added Pumpkin. Provides a lot of nutrition but grows slowly. Can be turned into Pumpkin Pie with other ingredients.
  • Added Rice. Grows fast but does not provide much nutrition. Will be used in future recipes.
  • Added mushrooms. Do not require sunlight to grow, but take much longer than other plants to mature. Gives roughly the same nutrition as an uncooked potato.

  • Fixed AreaPowerControl consuming power but not adding that power to the inserted battery if it was powered off.
  • Fixed Log and Pow logic math functions were using Input2 twice, instead of Input1, Input2. Should now be using both inputs correctly.
  • Fixed credits button taking you to the scenarios menu.
  • Fixed Index Out Of Range error caused by GetPercentageString if a status update percentage went over 200.
  • Fixed ConsoleMonitor Autorotate bug.
Stationeers - Heightmare


The team was much lighter on the ground this week, so we took the opportunity to slow down on the content releases and do some house-keeping with optimization and hardening work being done in various parts of the game. This will likely continue into next week, as the majority of the team will be away attending the national game developers conference.

Explosion Mechanics



To immediately put your mind at ease, we didn't change anything that makes things more likely to explode. We did however, make it so that when explosions happen (whether via Canister explosion or Grenade) they'll properly apply damage to everything around them. If that happens to be a Stationeer, they'll receive impact damage but also stun damage and may be knocked unconcious.

Expanded Auto-Rotate



Auto-rotate has proven to be one of the most popular quality-of-life improvements we've made in the past couple of weeks, so we've expanded it to include many face-mount devices. The full list is included in the detailed patch notes below.

Trigger Plate



During last weeks dev stream, Rocket modeled and implemented a trigger plate that can be used to activate logic whenever an object is on top of it. This can be used for tasks like automating doors, or only powering devices when someone is standing in front of them.


Flowers & Paint Mixing



To provide more base reagents to the game, and provide paint colours in a slightly less magical fashion, Stationeers can now grow a range of colourful flowers. These can be harvested and processed in the reagent grinder to make dye. This can then be combined with oil (and minerals for some colors) in the new Paint Mixer appliance.

New Filters

To build on last weeks introduction of filter consumption, we've added two new size variants of each filter type. These can be manufactured in the hydraulic pipe bender.

Hotfix Version 0.1.1567.7381
  • Fixed not being able to climb on ladders if they were placed below 0 on the Y axis.
  • Fixed a bug where if you clear a item blueprint aligned to a mothership then bring another blueprint up without moving the new one won't be aligned to the mothership axes but otherwise acts as though it is.
  • Fixed Autorotate not finding all options on Mothership Grid
  • Fixed Autorotate not adjusting rotations for Mothership Grid
  • Fixed Holding or tapping the autorotate key while moving between world grid and mothership grid would sometimes cause the placement to not align with the grid
  • Updated Localization entries for French, Italian, Portuguese, Russian, Simplified Chinese, Traditional Chinese, Suomi and Spanish.
  • Changed ratio of Carbon obtained from putting Coal into the Reagent Grinder from 5:1 to 1:10.
  • Fixed NullReferenceException on jetpacks not belonging to players, or players not wearing jetpacks.

Version 0.1.1564.7373
  • Added First pass on new exploding mechanics. Explosions now apply brute and stun damage.
  • Added player will automatically take off when turn jetpack on
  • Added Mission Event trigger for plant growth states.
  • Added ability to use logic to read Quantity value from Pipe Analyzer which will return TotalMoles for the attached pipe network. [Thanks JeepGuy]
  • Added Trigger Plate. Activates a value or activates logic when something is within the trigger zone. Constructable from Kit (Trigger Plate) manufactured on the Electronics Printer.
  • Added Logic values for tanks and battery to Suit Storage.
  • Added kit for Portable Tank creation in the pipe bender, rather than making the tank itself as it tended to clip out and fly around.
  • Added Smart-Rotation support for FaceMounted objects.
  • Added Smart-Rotation to WallLight, WallHeater, WallCooler, Transformers, RTG, FlashingLight, All logic chips, buttons and dials, sensors, consoles and pipe/cable mounted objects.
  • Added Colored Flowers. Grow these and then grind them up in the Reagent Processor to produce dyes for making paints.
  • Added lateral movement even when height efficiency is low.
  • Added Medium and Heavy variants of gas filters. Medium filters last five times as long as the normal filters. Heavy filters last 20 times as long as the normal filters. They can be constructed on the Atmos Printer (Pipe Bender).
  • Added additional organics crate to default starting conditions. Includes flowers, and more food.
  • Replaced set of Road Flares in Construction Crate in default start with an Advanced Airlock Circuitboard.

  • Fixed Custom key assignments not saving correctly.
  • Fixed Elevator placement erroring when placed in same voxel as a wall by adding Z-Axis padding on the Elevator Shaft prefab so that it correctly registered as occupying 2 voxels.
  • Fixed Issue with new world screen entries being duplicated if coming from the workshop screen.
  • Fixed Issue with drag-and-drop thumbnails and drag-to-slot.
  • Fixed Top placement bug for FaceMountable objects.
  • Fixed Missing shake effect on ores caused by terrain refactor.
  • Fixed Jetpack Caution notification not occurring, only jetpack critical.
  • Fixed Not able to crowbar elevator open and closed.
  • Fixed Cereal bar using 150g of flour instead of 50g.
  • Fixed Constant drain of propellant when in zero gravity environments.
  • Fixed Switching hand to an empty slot while using the mining drill resulting in a null error requiring a restart to resolve.
  • Fixed Inability to launch tutorial due to corrupt translation file.
  • Fixed Ore orientation randomly changing while being mined by changing the shake effecting position to rotation
  • Fixed bug causing jetpack stabilization not working while using the labeller.
  • Fixed jetpacks sending many more network messages than it needed to.
  • Fixed Attempted to reduce instances of NaN batteries in cold environments. Should also clear their broken state on save load.


  • Added Suomi (Finnish) translation.
  • Updated Localization files for German, Italian, Russian, Simplified Chinese, Traditional Chinese and Spanish.

...