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.