Stationeers

Consolidated Patch Notes v0.1.1648.7714



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.