Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- - Disabled crew rocket parts as patch prep
- - Fixed null exception when an object gets destroyed while being dragged into a slot.
- - Add Fan DevicePart
- - Don't try to assign an orientation vector to a wireframe if the wireframe it doesn't exist.
- - Fixed U digit had incorrect digit distance, resulting in compressed U.
- - Fixed country overalls not displaying in the Stationpedia.
- - Added the metallic paints DLC gate.
- - Added some editor only DLC commands.
- - Updated thumbnails for spray cans to all be consistent.
- - New arrow style for the blueprint orientation vector.
- - Add orientation vectors to all reinforced and padded walls.
- - Clean up the way ThirdPersonOrbitCam stores look angle so it's more consistent with the First Person code.
- - Added first pass on tooltips for spacemap deposit locations. Few tweaks still needed. Will show more info as survey points increase.
- - Added devices and items that hold IC will now list special bindings they have on their Stationpedia page.
- - Added new Combustor that has a gas and liquid input and deprecated the old one
- - Fixed null collider crash when toggling interactables on input/output circuit devices
- - Added 'Remove Node Type' button to spacemap which will remove all the nodes of the selected type.
- - Committed auto added BlueprintOrientVector field on manufacturing prefabs.
- - Added audio data for 1x5 solar panel variants.
- - Added thumbnails for 1x5 solar panel variants.
- - Updated 1x5 solar panel names in english.xml to bring them in line with existing panels.
- - Fixed 1x5 solar panel variants were not showing their broken build states.
- - Fixed 1x5 solar non-dual variant was not added to world manager.
- - Fixed (beta) reinforced 1x5 variants did not have storm protection.
- - Added 1x5 solar data variant
- - Added heavy 1x5 solar data variant
- - Switching between first and third person preserves look angle pitch
- - Added small buff to larger solar panels.
- - Fixed (beta) bounds for new x5 solar panel and wrong kit linked for heavy.
- - Added emissive to plasma shader.
- - Fixed (beta) rockets did not clear their assigned parks when landing.
- - Added back and side access medium LED display variants.
- - Updated english.xml for new 1x5 solar panel variants.
- - Updated all solar panels to use prefab parts for their arms/glass. Have added kinematic rigidbodies to the moving parts with colliders.
- - Added 1x5 variant of solar panel and reinforced solar panel (wip - few things left to do).
- - Moved solar efficiency calculation into the solar arm prefab.
- - Fixed orbital space effects not gated behind the correct elements.
- - Fixed player weather sounds were active in orbit when in a room during dust storms.
- - Fixed materials on console LED
- - Fixed solar radiators were affected by dust storms even when in orbit.
- - Fixed world solar intensity visuals would change in orbit for dust storms. Ensured this is hooked into the existing checks.
- - Fixed Rocket parks for inspace objects were not being cleared. Probable cause of some rocket decoupling.
- - Second pass of Rocket debugging window.
- - Fixed (beta) PoI music for space would overlay with the regular ambient space music.
- - Added orientation arrows when building with Iron Wall Kits or (steel) Wall Kits
- - Added output power connection for Rocket batteries also provides data, as typically it would be too cramped to use the data port.
- - Major non-breaking refactor of Rocket part handling. Rocket interiors now have a persistent identity instead of being rediscovered by world position every refresh. Each rocket part records, once, the network it belongs to and its offset from the engine-fuselage anchor. Membership and on-load placement are driven by that record, not by what currently sits on the hulls cells. The old path rebuilt a networks Internals every refresh by scanning the hulls occupied cells and grabbing whatever was there. Any moment a part wasn't on those cells it was silently dropped or swept into the wrong network. On placement (or restored from its record on load for backcompat) a part resolves its rocket once and stores { network, offset }. RegenerateCollections is now add-only: it adopts untracked parts sitting on the hull cells, refuses any part already owned by another live network (no cross-absorb), and never drops a tracked part. The record (network id + offset) is serialized to StructureSaveData; on load each part is placed at anchor.position + offset, so the whole rocket reassembles relative to its anchor wherever it is. This should solve major and serious issues with Rocket disembowelment and decoupling of parts.
- - Fixed OccupancySensor was not clearing its internal stack, making it basically unusuable. Credit: Rambalac
- - Added (pre-beta) missing files for build.
- - Added 'rocket mounts' and 'rocket clone <sourceReferenceId> <mountReferenceId>' useful for debugging, creative, or when a bug takes away a rocket.
- - Added null-guard check on rocket target position.
- - Added repairability to cryo tube, sleeper, and turpo pumps.
- - Fixed (pre beta) compile issue.
- - Added optimization pass on network debug.
- - Added first pass of improved network diagnostics window.
- - Added extra rocket linking protections, to fix more edge cases where rockets can be disemboweled or have their insides inserted into another rocket.
- - added sounds for sanitation bag.
- - Added special sound for POI in space.
- - Added better network logging. Retired the clients command and rolled into network parameters.
- - Fixed an edge-case where rockets could become disemboweled, leaving their internals behind when moving. Now refresh state when launching, and also check and heal automatically on loading a save.
- - Fixed bug with thing command not having correctly parsed parameters, and assigned standard referencing.
- - Changed Anywhere where ratioOneAtmosphere pressure was being used to limit heat exchange calculations now also considers the presence of liquid. For the purposes of this function, a liquid volume ratio of 0.001 will be considered to be equivalent to a gas pressure of one atmosphere (i.e 0.1% of the pipes capacity filled with liquid).
- - Added adaptive multiplayer tick rate that slows the global state-send from 20Hz down toward 5Hz as a clients outgoing send backlog grows (sheds volume via delta coalescing instead of pausing), restoring full rate as it drains and kicking any client whose backlog exceeds the hard limit so one struggling connection can't stall the server. This may be a major fix for clients who experience sudden desync, with the likely cause identified as SENDQ spiraling once the client experiences a slowdown, and is unable to recover due to getting bombarded with new messages.
- - Tentative fix for 2x2 landing pad pieces such as large tanks not connecting to the landing pad network correctly. Have changed how IsConnected works - will now use open end positions like most other things rather than checking structure blocked grids.
- - Reworked Alcohol as a Rocket Fuel. It is now approximately the same performance as Methane (previously it was about 75% of Methane performance).
- - Changed Reduced Molar Mass of Alcohol to 18 from 46.
- - Changed Result of Alcohol-Oxygen combustion to (2 Water 8 CarbonDioxide) from (2 Water 4 CarbonDioxide).
- - Camera settings replicate the old behavior
- - Revert 27584
- - Revert some changes to the third person camera
- - Changed Lowered Ozone freezing temperature to -222°C (51K) from -192°C (81K). This change was made to allow Ozone to be an effective working gas for Cryogenic HeatPumps.
- - Changed Lowered Freezing Temperature of Silanol to -130°C from -110°C. This change was made so that a Silanol heat pump can now be used to create liquid oxygen.
- - Changed Increased Max Liquid Temperature of Silanol to 550°C from 548°C.
- - Changed doubled the performance of Evaporation Chambers and Condensation Chambers. NOTE: this only applies to newly built devices.
- - Changed Increased Evaporation Chamber and Condensation Chamber Volume to 400L from 200L. This will only apply to newly built devices.
- - Changed Increased Evaporation Chamber and Condensation Chamber HeatExchanger surface area to 45 from 15.
- - Cleanup of command errors. Regular errors were not including supression of stack traces.
- - Added 'voxelfillnear <player> <radius>' or 'voxelfillnear <radius>' commands. These will clear voxel state back to default within supplied radius. Useful for long-term server cleanup.
- - Added 'deletenear <player> <radius>' or 'deletenear <radius>' commands. These will everything but the supplied player within supplied radius. Useful for long-term server cleanup.
- - Added 'deletenear <player> <radius>' admin command that helps with long-term save and community server cleanup.
- - Optimzed saving so that it uses a background thread at lower priority and doesn't create the temporary file, this was not needed as a new save is named for each autosave.
- - Optimized save/load. Will only really affect very large saves. Stream is passed through avoiding GC churn.
- - Added medical trader to utility slot, who buys and sells medical themed items.
- - Missing (pre-beta) shader change
- - Fixed stars and atmosphere could be seen through the center of Janus. Now it is completely black all the way to the center, without the halo that existed before.
- - Fixed some weather event effects were being applied at low-orbit. Now they are gated centrally.
- - Fixed a multiplayer desync where distant clients could permanently lose world state; actions taking tens of seconds or never appearing, while other clients were unaffected. The StateTick delta stream was a markerless byte sequence, so once reassembly slipped a boundary it could never resynchronize and silently stopped applying world state for the rest of the session. Each StateTick message now carries a small [tag][cycleId] frame: the receiver always re-locks on the next header and, on any inconsistency, drops at most one tick instead of corrupting permanently. The resync event is logged once per episode, and clients reset reassembly state on connect.
- - Changed StateTick reassembly to reuse a grow-on-demand receive buffer instead of allocating a new array every tick. This removed several MB/s of GC churn on a busy server, and changed the client join-data send to stream slices of the packaged snapshot directly rather than allocating and byte-copying a new array per fragment.
- - Fixed rocket motherboard panel showing data for the first connected rocket rather than the one selected on the top right of the ui.
- - Added tooltips for buildstates will now show when holding any resource or any construction kit while looking, rather than just specific tools.
- - Added more logging information to the "clients" networking debug command. This command will likely be renamed at some point.
- - Added an extension to print shows in the console the contents of the rocket. This will list in the console the structure tree for a rocket. Useless for debugging when a bug is encountered with a rocket. Most useful for diagnosing when a rockets internals become 'separated' from the fuselages. This is most often seen by the rocket still existing, but not accessible because it is displaced from its avionics somehow.
- - Added a 'relink' parameter to the 'rocket' command. This will attempt to repair a rocket that has encountered a rare bug, where the rockets fuselages move, but its components all stay in another location. This command finds the matching interior contents that should be in the fuselages, and moves the disemboweled contents back inside the fuselage. Should *not* be run with connected clients. A save/load cycle should be run after using. The rare bug causing rockets to become disemboweled will be fixed in another commit.
- - Added can repair Large Extendable Radiators.
- - Changed orbital mount poi popup to refresh every time the rocket lands at the mount so the popup can trigger every time you arrive/exit the chair rather than once per game.
- - Changed launch mount 'can popup poi text' value to not be serialized.
- - Added missing localization text for landing pad arrow piece.
- - Fixed orbital launch mount build state to use steel sheets instead of frames.
- - Added ability to set dynamic panels on the rocket ui to grow when the number of items gets big. Have set a few default values which can be tweaked once we get a feel for how we want it to behave.
- - Fixed gravity on rocket ui would show world gravity when sitting on orbital launch mount.
- - Changed the location text that shows after the gravity and weight values on the rocket ui to show 'low orbit' when you are launching/landing/sitting on an orbital mount.
- - Added poi like popup when you exit a crew module seat in orbit. Currently this will happen once per game for each client.
- - Fixed using the third person control button (default: shift) wont case scroll inside open inventories.
- - Changed when rocket explodes with player inside, a large amount dammage will be applied rather than just setting the state to dead.
- - Fixed (beta) unable to deconstruct orbital launch mounts
- - Fixed landing pad large tank steel recipe was wrong.
- - Updated Crew Module glass meshes.
- - Modified Third Person Cam to have greater zoom range and finer increments in the zoom.
- - Fixed and optimized LED displays. These were using a pooled mesh system, however this pooling meant the meshes were never culled by the occlusion system. So they would continue to draw at massive distances. This system has been replaced with a batched rendering system reducing both general bloat as well as being more performant and less error prone.
- - Darkened distant structure proxies to 70% brightness as a temporary change and tidied OcclusionManager formatting.
- - Fixed crew module interior atmosphere duplicating during landing. IsInCrewModule now keeps the cabin sealed through Launching/Landing, so it no longer falls back to a world atmosphere and registers a duplicate at the cabin grid that then sits locked alongside the interior.
- - Reverted the crew module InternalAtmosphere client failsafe (r27573); it didn't fix the underlying issue, which reproduces in singleplayer and is now addressed at the source.
- - Added failsafe on InternalAtmosphere for crew module to unpick non-fatal desync that can occur for clients
- - Fixed (beta) crew module false floor for second stage was slightly in wrong position.
- - Fixed Edge-case for environmental sounds playing when player seated in a pressurized rocket cabin in orbit.
- - Added Open LogicType to Rocket Avionics. Returns the state of the crewmodule door, and allows it to be set as well.
- - Added Gravity LogicType to Rocket Avionics.
- - Fixed (beta) Loader incorrectly would not allow "open" logic change when Mode was Logic.
- - Added debug commands for proxy meshes.
- - Added Dispense and DispenseSlot to Vending machine and Silo. These new logic types allow finer control of the devices.
- - Removed (beta) crew bulkhead and replaced with a new build state on crew module.
- - Fixed (beta) proxy mesh snapped to WorldGrid resulting in objects like walls being mis-aligned.
- - Fixed (BREAKING) Loader in "logic" mode was broken. It read the "Open" state, but only partially exported. This meant logic control had to be alternating to "Auto" to export. This is a slight breaking change. Now in "Logic" mode it functions the same as a Door in Logic Mode. In logic mode, the loader will do no export. The Open lever will do nothing. It is up to the user to read the state of Open and they can choose to do something different. There is now a "Dispense" logic type, when this is set to 1 the loader will do a full export, that is move the recipient slot occupant to the export slot, and process a full export.
- - Fixed NRE in Rocket.GetGravity(). CurrentTransit being null was not handled.
- - Reenabled new cinematic camera features after confirming it was not the cause of weird camera behaviour
- - Changed Low Orbit Station gravity to use the Min rocket gravity constant. (-1m/s)
- - Fixed Planet Environment audio could play when in Low Orbit.
- - Fixed Environment Audio was using a co-routine, moved onto the manager slow tick.
- - Fixed (beta) distant meshes were not in deferred pipeline.
- - Fixed (beta) orbital structures would be misaligned for distant meshes.
- - Added missing script for TerrainCurvature.
- - Fixed distant light flares did not obey the curved position of the spherized terrain.
- - Added first pass of unlimited distance proxy mesh rendering. This system makes heavy use of my allocation-free stackalloc buffer handling of Thing references. A buffer of up to 1023 distant LargeStructure will be drawn. A sorted buffer is made during the existing OcclusionManager thread pass, with the render done on Main Thread in LateUpdate. The instance is prepared using the rough bounds, color, and rotation. This blends with the rendering. The net effect is being able to see your base at any distance.
- - Fixed in orbit daylight sensors always return true.
- - Added EnergyConvected and EnergyRadiated LogicType to radiators. Also made their atmosphere readable.
- - Fixed longstanding performance issue with status icons where general updates were played for each moodle every frame.
- - Added animated healing moodle.
- - Added Cryogenics tooltip info to player status icon. This will allow players in singleplayer to see their health and organ info.
- - Fixed lighting and stars would model their state based on world setting and not change when user was in orbit.
- - Changed (beta) fragment handling back to a fixed size but derived from MTU.
- - Fixed we were still chopping up multiplayer fragments ourselves in blocks, rather than letting RocketNet do this based on provided MTU. This was wasteful and had impacts both on CPU and in situations where it needed to be resent. This would also put more strain on SteamP2P. We still maintain an overall max buffer, but we no longer arbitrarily split into chunks before sending to RocketNet. This change applies for joining and delta state.
- - Fixed recycler would just delete child contents. Now will process those first, the same as the furnace.
- - Updated launch mount nodes to be sorted in alphabetical order.
- - Fixed rocket deploy action progress bar was not syncing for clients.
- - Balanced CrewModule mass to 1200kg from 500kg
- - Moved CrewModule Plasma effect altitude values to publics constants so they can be used by audio systems.
- - Changed Rocket Falling through atmosphere sound to align better with plasma effects.
- - Changed Rocket falling through atmosphere sound does not play when landing at orbital landing pad.
- - Fixed missing server tags around icon generation code on launchmount. For dedi it will just return null as this function should never be called in this case.
- - First pass on changing launch mount nodes on space map to be generated from the actual structure. Certain colors can be a little bright.
- - Added ability to access a connected screen in a crew module with a key assignment.
- - Removed gray outline and tint from non-connected rocket icons on spacemap as with many rockets it started to get too cluttered.
- - Added Third Person Camera no longer switches automatically, instead there is a new (default: unbound) button that can be used to switch shoulder sides when in third person.
- - Fixed liquids would become trapped in crew module.
- - Fixed third person camera and movement in vehicles is broken due to interpolation. Correctly set interpolation settings.
- - Added Rocket launch will spread over traversed grids, helping look and action for fast moving rockets.
- - Added thumbnails for new cable variants. Fixed build states pointing to the wrong cable type and thumbnail.
- - Added 3, 5 and 10 long straight variants for basic cables. Thumbnails are yet to be generated.
- - Updated cable coils to new meshes from Cable.fbx which merges several model files into one. This is in preparation for adding long variants for regular cables.
- - Adjusted Hygiene recovery rate.
- - Fixed incorrect mood caution moodle texture.
- - Fix for rare case where interioratmosphere is sampled as an open neighbor.
- - Fixed a rare case where atmospheric thing referenceid would not link and cause internal atmosphere desync on clients.
- - Created a max storm height value on the weather manager. Currenlty set to 500 unity units.
- - Tweaked GetStormWindVector in dynamic thing to return zero above the max storm height.
- - Weather damage will now be skipped if the thing is above the storm max height.
- - Storm effects will be turned off when the current player goes above the storm max height. Currently, fog effects from the storm can still be seen from orbit.
- - Balanced exotic trader injectables.
- - Fixed (beta) crew light also buildable on the Wall light kit.
- - Fixed compile error caused by steamworks ifdef. the function in question is now justa stub if steamworks is not enabled
- - Fixed (pre-beta) missing localization string.
- - Added NodeType to RocketAvionics, that reports Current and Target NodeType. Added constant NodeType to compiler.
- - Added new model changes for the Crew Modules, with a tighter interaction on open/close.
- - Added handle to the front of the DynamicOrbitalLaunchMountPayload
- - Fixed DynamicOrbitalLaunchMountPayload returning the incorrect kit
- - Fixed the rocket icon renderer to update correctly
- - Added Steam Rich presence for sitting in rocket.
- - Fixed (beta) LifeSuspendedNotice would cause air tank low audio warning.
- - Fixed (beta) exceptions when placing crew module in multiplayer or when joining under certain circumstances, due to the Crew Module not having its rocket network set yet.
- - Fixed jetpack could not be toggled on/off in zero-g
- - Fixed rare case where rocket engines could output their their exhaust directly into the atmosphere of the crew module interior.
- - Changed Rocket engine sounds now play for full duration of rocket flight when seated in rocket.
- - Increased the volume of rocket explosion sounds.
- - Fixed crew module screen turning off when you launch your rocket. Player in bounds check will now use screen's actual position rather than cached position when built.
- - Fixed low-orbit achievement being granted to everyone on server.
- - Fixed when calling up command history in the console window, snap the text cursor to the end of the content.
- - Fixed being able to interact with objects in cinematic camera,
- - Removed GForce debug logging.
- - Refactored gforce calculation for rocket launches.
- - Added achievement for crafting a burger in a microwave.
- - Refactored gforce calculation for rocket launches.
- - Updated Crew Module light kit and object.
- - Updated Crew Module light kit and object.
- - Fixed (possible, beta) crew module client atmosphere misreporting.
- - Added Crew Module Light and Kit.
- - Adjusted DensePools to better reflect actual usage.
- - Fixed (beta) waste bag not working.
- - fixed server build error caused by rocketmapiconrenderer not being wrapped in !rw_server
- - Fixed rocket icons not showing correct colour of actual rocket
- - Added rocket map sprite generation to the static onfinishload in rocket.cs. This should fix rocket icons appearing as white squares until the map view is opened.
- - Lowered crew module floor slightly.
- - Adjusted Crew Module Chair bounds to allow more permissive placements
- - Fixed fuselages that occupy multiple grids not being able to be deconstructed. This only affected the Crew Module
- - Added bounds check to crew module screen to turn off the canvas and graphics raycaster when player goes out of viewable range. This functionality is mostly copied from Computer.cs with a few tweaks.
- - Removed Debug print tracking Human physics imprecision on Clients as it was returning false positives.
- - Reverted Some experimental StormEffect code that had caused a visual regression (banding) in the stormEffect (beta only).
- - Added rocket panel to the crew module screen. For now the 1000ms tick is being used to update the panel. This can probably be improved to only update when the connected rocket changes. Rocket icons may appear white if they have not yet generated like when you haven't opened the map.
- - Added hydrogen layer to Janus.
- - Added floor build state for crew module.
- - Added Suit Storage can be build in rocket interiors.
- - Changed the construction cursor normal offset to only be applied for chutes as it was causing flickering when placing frames and other structures.
- - Added Canister Storage and Portables Connector to be buildable in rockets for crew module usage.
- - Added first pass on improvements to rocket motherboard screen. Will now show rocket name, location and icon.
- - Fixed bulkhead not being able to be built in rocket
- - Fixed (pre-beta) item build exception
- - Fixed site discovery panel content group not controlling child size so text wouldn't expand.
- - Improved text layout in site discovery panel on the rocket ui. Should now not overlap and have a scroll bar instead.
- - Added achievement for reaching low orbit in a manned craft for the first time.
- - Fixed (beta) injector use on someone would not award the medic achievement.
- - Added hidden achievement for Vulcan.
- - Added individual kits for most of the crew parts
- - Fixed the cable connectors not being able to be built because they didn't use a multi merge constructor
- - Added missing bulkhead pieces.
- - Added first pass of bulkhead.
- - Added LogicBatchMethod.Count to logic system.
- - Fixed JetPack would continue to push gas while in a seat.
- - Fixed looking behind you in third person camera wont cause you to bend over backwards.
- - Fixed (beta) collision on Rocket Crew Module screen.
- - Fixed exceptions on tooltips for LiquidDrain, PassiveRadiator, and PassiveLiquidDrain.
- - Fixed (beta) missing scene file.
- - Added GForce warnings and effects. If a stationeer goes to fast in a rocket they may pass out.
- - Added first pass of status icons for acceleration
- - Fixed missing dedicated server tag causing build to fail
- - Fixed (beta) chair and screen collision can be lethal.
- - Fixed the space area playable hight to be 1km high as we were still hitting floating point issues and a few other weird things when you got too high.
- - Fixed (beta) internal atmosphere sampling inconsistent with crew module during launch. Now correctly pulls in all identified scenarios.
- - Added "Exterior" text in the status window heading is replaced with "World", "Room", and "Interior" to match with results from atmos tablet. This will help with debugging and line up with the Atmos Cartridge.
- - Added being able to interact with things while seated for use with Crew Module Chair
- - Changed exit position for crew model chairs to just be above the chair
- - Added custom rocket icons that reflect that actual visuals of the built rockets
- - Fixed (beta) devices not outputting correctly into crew module internal atmosphere.
- - Added devices inside a rocket, such as passive and active vents, will show on their tooltip if they will be connected to the crew module atmosphere to help with placement.
- - Fixed stray objects in the scene
- - Cleanup of smallgrid bounds for Airlock, Blast Door, and Glass door. This allows cables and pipes etc... to be sent through their edges, in line with other doors.
- - Optimized Rocket Nosecone colliders, will improve performance and acts of collisions.
- - Extended 'physics' command to allow clients to change interpolation settings, to help with debugging weird interpolation issues with entities, carried objects, lifts, etc...
- - Changed OreDetector to have better visual clarity, inspired by the 'Better Ore Detector' mod by Community Veteran modder aproposmath
- - Fixed (beta) CrewModule internal atmosphere did not work. Now it will be correctly sampled by dynamic things, entities, and other devices such as vents.
- - Fix valve mesh being out of place on mark 1 liquid canisters
- - Fixed payloads not being removable from the rocket payload bay - you can now remove things using a wrench
- - Fixed colliders on the crew module fuselages - they will need updating properly in the asset
- - Removed crew umbilical
- - Added missing new fbx files
- - Updated assets for dynamic orbital launch mount and kit for it as well as icons
- - Updated mesh for StructureLaunchMountOrbital
- - Increased Crew Module Dry Mass from 250 to 500
- - Increased ItemKitCrewParts stackable quantity to 5
- - Switched active vent base class from constructor to multi-constructor and added the new rocket vents to it
- - Removed vents from Crew Parts
- - Fixed icons for new vents
- - Cleanup of fuselage pieces and collisions for used types.
- - Fixed collision for a number of rocket fuselages. Their first build state collider was wrong and would prevent accessing logic screws if placed on edges.
- - Fixed pipe connector trigger for rollover of connections was mispositioned.
- - Fixed (beta) mesh and material issues with the crew modules.
- - Adjusted (beta) balancing for construction of crew modules
- - Removed (beta) obsolete crew module.
- - Added slot text for fire extinguisher that shows the data from the contained canister (litres)
- - Added can rename fire extinguishers.
- - Fixed cryotube would still suspend life functions, event with invalid cryogenic or main atmosphere.
- - Fixed (beta) HealingEffect was healing too much, too quickly.
- - Fixed (beta) medical status effect timers not incrementing for clients.
- - Added Logic Uplink (Compact) thumbnails.
- - Fixed missing material on combustion centrifuge broken build state
- - Added Logic Uplink (Compact).
- - Fixed value for extra terrain spherization being applied too low
- - Fixed RocketGasCollector error state for over pressure would cause issues. Now it ignores pressure, but will error if not networks are connected.
- - Changed DepositMaterialGas to use the RocketGasCollector volume (200L) not the grid volume when displaying gas info on the space map, making it easier to figure out what the rocket gas collector will do.
- - Fixed terrain getting culled when in space
- - Fixed play area to be within reasonable bounds to avoid floating point issues
- - Added HealthDamage and StunDamage values to SurvivalToolbelt.
- - Fixed organ info shows on sleeper.
- - Fixed (beta) all replicated sounds playing twice on clients (e.g. when constructing cables). The AudioEvent deserialize constructor called Execute() while DeserializeEvent also executes the event after constructing it.
- - Added new shadow casting light budget, enforced only on WallLight for now. This will limit the maximum shadow casting lights, based on the shadow settings. What lights are chosen is based on distance. This should provide a much more smooth framerate for large bases in certain situations.
- - Fixed PointOfInterest being triggered when in space
- - Added restrictions to where a manned crew rocket can travel, including map tooltips to communicate this.
- - Extended the space map area to be larger
- - Added recipes for orbital launch mount deployable
- - Added new overalls that can be colored using the spray paint
- - Added new orbital planet view. Terrain folds into a planet ball with a volumetric atmosphere when in space.
- - Added loworbitstation goto command.
- - Added updated, two larger Crew Module Fuselages.
- - Added plasma effect when visible when seated in the rocket and launching through an atmosphere
- - Fixed rocket occupants being silently deleted when the rocket is destroyed.
- - Fixed Volatiles references in files.
- - Fixed Volatiles references in files.
- - Fixed (pre-beta) missing TerrainColliderBaker.
- - Added EntityState logic type variable to SurvivalToolbelt.
- - Added baking terrain colliders on worker threads instead of cooking synchronously on the main thread. Fixes client hitching when anyone mines nearby. Chunk collision meshes are now baked on worker threads via Physics.BakeMesh so assigning MeshCollider.sharedMesh reuses pre-baked data instead of cooking synchronously during remesh. The previous collider mesh is kept alive until the replacement bake lands.
- - Added IC Chips will now show relevant errors in their inventory tooltip. They will show execution errors when being executed by something like the Advanced Tablet, the Survival Belt, or a Hardsuit. They will show compile errors as well, but will also show compile errors when inside the laptop. Inside the laptop execution doesn't happen, so execution related exceptions won't be shown. These errors are parented up to the device they are in (such as the suit, belt, or tablet), and will show on their tooltip. This should help a lot with debugging errors related to item IC.
- - Added Survival belt can now play sounds and is a transmission received, bringing it into line with the Advanced Tablet.
- - Added Auto-Injector slots to the Marine Armor.
- - Fixed (beta) missing strings, that were accidentally deleted by me somehow.
- - Fixed (beta) a lot of strings deleted accidentally.
- - Added DynamicThings that are accessable via logic now make their PrefabHash available.
- - Added Survival Belt first pass. This belt has a programmable chip slot, a battery slot to power it. It also has two auto-injector slots. The overall slot count is the same as the Mk2 toolbelt, but with four of the slots dedicated to the above. The rest of the slots are tools, with two any slots as with others. The belt functions somewhat similar to the Advanced Tablet, in that it can access its internal slots. This means you can "Activate" on the internal injectors, so that you could use them in medical emergencies via IC code.
- - Added life suspension status moodle to better explain how cryo and sleeper work.
- - Updated orbital launch mount build states such that the first state is a beacon. Allowed for the orbital mount to be build without support and added it to the debug kit for testing.
- - Added Explosion sounds for when rockets crash into landing pads.
- - Added RocketFall sound for rockets falling quickly through the atmosphere.
- - Fixed (pre-beta) sounds were being played for injectors at zero-zero-zero.
- - Fixed (pre-beta) localization name change that could confuse players
- - Fixed (pre-beta) missing StatusIcons prefab change.
- - Added Auto-Injectors. Included Stim, Stun, and Health. These can be used through spacesuits. Heal pill in starter conditions is replaced with a Heal Auto-Injector.
- - Added Medical Effects system. This allows medical effects to be applied to entities over a period of time, not just once. This makes Stun pills/injectors more useful. Existing pills have been updated to use this system.
- - Added moodles for Stun, Stim, and Healing medical effects. Also shows time remaining (if relevant).
- - Tone down Third Person side-switch aggressiveness
- - Fixed Third Person Cam side-switching to trigger more consistently
- - Third Person Camera offset defaults tweaked
- - Third Person Camera behavior should be more consistent with rotation
- - Added finished work on Water Packages, disposal water packets that have replaced most Water Bottles in starter kits. These are disposable packets that contain water.
- - Added some foods can give water into stomachs, which will then be passed as polluted water.
- - Added Waste Bags. These stack initially, but once beginning to be filled can continue to be filled. These are useful for temporary relief of sanitation needs while bases are being established. They are added to the survival crate and the capsule lander. Their contents is not recoverable.
- - Adjusted molar approach for 'soiled' atmosphere.
- - Fixed (beta) zfighting with new console screens for cryotube.
- - Fixed Pressure Regulator code would not account for liquids in pipes. This would mean that purge valves an pressurant valves could over-shoot/under shoot if there was significant liquid in the input or output pipe.
- - Fixed when joining a game map motherboard would show deep minables even tho toggle was off.
- - Fixed PlayNetworkSound function was not sending sound playback to other clients. It now triggers the creation of An AudioEvent on the server, which is correctly replicated.
- - Fixed Sounds on toilet not working for clients.
- - Added Waste Packets as disposable alternative to Water Bottles to avoid the water bottle spam when starting a new game.
- - Added a very small normal offset on the cursor position when placing structures. This should fix rounding issues which could place the structure cursor inside an existing structure. This was very noticable for chutes.
- - Changed cryotube to have two status panels as they were getting very long. The second panel contains the details of the occupant, as well as the organ states.
- - Added a 'soiling' mechanic that is triggered at 100% sanitation need. When this occurs, the character will automatically 'evacuate' their sanitation need, either into the suit or onto the ground. If the suit is soiled, the player will receive a critical notification. This can be cleared using either the flush command, or via the suit storage system.
- - Added Rockets can now transfer gasses and liquids to other rockets at the some location using the transfer action. Once clicking the transfer action a list of valid transfer sources will populate, select the target umbilical on the rocket to which you wish to transfer to. Gas is transferred via the mix rule (i.e using the same logic as the umbilical uses when transferring to and from the tower.
- - Fixed when in the crew module chair you would not use the crew module atmosphere.
- - Fixed thumbnail tool from creating colour variants for structures
- - Fixed crew module vent insulation and vent valve's on/off position was inverted.
- - Added thumbnail editor and redid thumbnails for paintable items for the new colours
- - Updated crew module active and passive vent models and blueprints.
- - Fixed (beta) missing strings for new fuselage pieces.
- - Added filter and coolant slot tracking to SuitStorage internal stack.
- - Fixed (pre-beta) missing announce files.
- - Added 'announce' command that displays a popup on all clients when sent from the server. Useful for server hosters for things like announcing a server restart.
- - Fixed (beta) Fuselage E kit missing string, and other minor updates to fuselage E pieces.
- - Fixed (beta) sanitation need was displaying much earlier than intended, as I had lowered it to speed up testing.
- - Added Transfer Action to Rocket Action panel. The transfer action allows for moving resources between rockets that are at the same location. Each Umbilical on the selected rocket will generate a transfer progress widget. The target umbilical of the rocket you wish to transfer too must be selected for the transfer to take place. Currently this is only enabled for power umbilicals. Gas and chute umbilicals will follow shortly.
- - Added full sanitation loop. Includes an OrganStomach that now takes in liquid water and, over time, processes it into polluted water. This is then expelled when the user uses a toilet. Includes the addition of a new command (organs) to be used for debugging. Next step is to include a small quantity of water from consumed food.
- - Changed CO2 exhaling to come out at body temperature, rather than the old value of 20 degrees C.
- - Added active and passive vents for rocket crew module. These inherit from the base active and passive vent classes but use the crew module internal atmos rather than the world atmos.
- - Added in DynamicThing SetWorldAtmosphere() a StructuralArray check to see if the thing is inside a crew module. If so the world atmosphere will be set to the crew modules internal atmosphere. This is a little experimental - possible changes to this maybe come later.
- - Fixed crew parts missing from worldmanager prefabs list
- - Reverted changes to cinematic camera features possibly causing breaking character IK and FOV
- - First pass on adding crew module atmos control. This can be used to pressurise the crew module cabin.
- - Added internal atmosphere to crew module and set it be fully insulated.
- - Added first pass on non umbilical crew module access. The crew module now has a door that you can access without the umbilical.
- - Fixed (pre-beta) minimum pressure requirement was reversed.
- - Fixed (pre-beta) unnecessary animator.
- - Added first pass of toilet functionality.
- - Added Toilet structure with first pass of clearing sanitation need.
- - Added second pass on waste (toilet need). Now tied with a difficulty setting (disabled for Creative and Easy). Toilet need increases very, very slowly over time. No impact currently.
- - Fixed a variety of newer machines did not correctly have their hazard texture set.
- - Added first pass of Waste property, which will become the (optional) toilet need for characters.
- - Added message to internal stack documentation to indicate whether a hash is stored unsigned, or signed. If unsigned, warn users that they will need to manually sign the value.
- - Added internal stack to Suit Storage. Reports on the core slot items (jetpack, helmet, backpack), but also the important contents of them (propellant, air tank, etc...).
- - Fixed Storm emissive effect not contributing to bloom.
- - Fixed Storm emissive effect not fading in/out.
- - Added Support for multiple Texture3D types for storm effects.
- - Added Editor Tool for generating 3d Noise textures.
- - Added commands available regardless of difficulty level for dedicated servers, to help dedicated servers right bugs and problems.
- - Fixed Server Physics Position de-sync warning was printing for all items in player inventory.
- - Fixed Server Physics Position de-sync warning was printing for players in seats/beds
- - Added Landingpad Arrow cosmetic piece.
- - Added hydration star icons. No effect yet.
- - Fixed resource and survey sites would not be correctly populated to the Rocket Avionics stack
- - Fixed Structure Frame Corner and Side could not be painted. Now they can.
- - Cleanup (minor) of silo code to fit with standards
- - Added additional multiplayer connection debug information to "clients" command to help debug latency desync issues.
- - Removed Client Offset debug print as it was spamming the console.
- - Fixed (beta) new fuselage pieces are hidden in stationpedia.
- - Changed Players now always send their position to the server. Previously it was only sent when the position had changed from the last message sent. I think it was possible there could be some build-up of imprecision that could cause a physics glitch for the player on the server pushing their position on the server under terrain.
- - Added Error logging on client when position on sever is significantly different from position on client.
- - Added Logging and early exit when Structure fails to register to Cell due to an invalid position.
- - Fixed Null Reference Exception thrown by AdvancedTablet.DeerializeDeltaState.
- - Fixed IC10 search windows would briefly show the correct results for a search, and then yeet them away and show everything after a few frames. Now after typing in the search window, the results will displayed and won't be reset until a new search is initiated as intended.
- - Added ROR, ROL, CLAMP, and SGN instructions to IC10.
- - Fixed cable networks not reporting StackSize LogicType to read the total number of a attached devices in a cable network. This was fixed by community member AproposMath many months ago and their fix is now integrated into main branch at long last.
- - Fixed indirect register access in L and S instructions in IC10. The regex now matches one or more leading rs, so rr2, rrr5, etc. now resolve as device variables. The pre-existing code only handled a single leading r (r0–r15), so the multi-r indirect/recursive forms previously fell through to the alias path and failed. Credit to AproposMath again, many months ago, again.
- - Fixed access to defined numbers in L and S instructions. A defined name used in the device-operand position is now resolved via chip._Defines. Credit to AproposMath.
- - Added internal stack to silo. Stack is populated with prefabhash and quantity. The quantity is truncated at 13 bits, giving plenty of room for quantity values for stacks. Each index in the stack is associated with the relevant slot value.
- - Optimized Silo. Was using a coroutine, now embedded within OnServerTick like other devices.
- - Added Pressure, Temperature, VolumeOfLiquid, Volume as logic values to read the internal atmosphere for the IceCrusher.
- - Fixed LogicHashGen again, as there was a second bug in the way of things working. Cleaned up the unneeded unitask as well.
- - Optimized FragmentHandler to use BlockCopy pattern and a stackalloc header.
- - Fixed (beta) logspam caused by stale client messages that could be no op ignored anyway.
- - Cleanup of some old event code.
- - Added trading using hands as storage now considered slots within the item in hands (and children). This follows the same rules as drag-all-of-type, whereby slots are ignored from trading unless they are a generic slot (none) or ore slots. Otherwise they are ignored by the trading system specifically. This means you can trade with boxes and consider the contents of them.
- - Added Healing moodlet. This is a green moodlet that indicates when a player is inside a device that is healing them, such as a cryotube.
- - Optimized byte-by-byte loops on big buffers inside JoinFragmentMessage Deserialize, Serialize, Process. Also IntegratedCircuitUpdate Deserialize/Serialize. For megabyte-sized fragments at join time, would have been millions of virtual dispatches against the stream when a single _stream.Read(Bytes, 0, size) would do the job.
- - Optimized DynamicThingPosition.SetUpdateFlags take the comparison struct by value. Change DynamicThingPosition lastSentValues -> in DynamicThingPosition lastSentValues.
- - Optimized Empty base.Process(hostId) calls everywhere. Minor, but probably added up as a lot of messages can be processed in multiplayer.
- - Fixed (pre-beta) missing DeferredMessageQueue.cs file.
- - Replaced WaitUntilFound in NetworkMessageProcessor with a new DeferredMessageQueue. For client->server removed entirely, as was redundant. New pattern closely models SyncList, hooked in with Referencable ReferenceId assignment. Solves one latent error that existed where state was dropped. Additionally removed GC churn and LINQ usage etc.
- - Fixed (pre-beta) missing references in world manager for new prefabs, GUIDs got eaten by unity.
- - Added new Type E fuselage variant. While we already have plenty, this new variant features entirely paintable area, so you can make a rocket completely colored in your desired color. Also included a variant engine-plate that contains clipped-delta fins. They are visual only.
- - Fixed longstanding bug with Logic Hash Generator that meant it was completely broken in multiplayer. This bug existed since the multiplayer refactor. The client was sending the update message, but was not specifying the logic type to be applied so silently failing.
- - Added a new "ExcludeFromBounds" tag, and applied to clipped delta fins. This means that the mesh will not change the bounds, and be visual only.
- - Replaced the many primitive colliders on some nose-cones with a simple convex mesh collider that will be cheaper in our newer version of unity than previously.
- - Changed map motherboard beacon tracking icons to use beacon's painted color.
- - Fixed Ice moving through chute systems could sometimes melt. This could happen occasionally in very large saves due to the atmospherics thread incorrectly evaluating the item's parent slot during a MoveToSlot operation. MoveToSlot will now reset the ices melt cool down timer IF the target slot would prevent ice melting. MoveToWorld will also reset the ices melt cooldown to prevent ice melting in an incorrect cached position.
- - Removed StoredItemsOld queue from Silo. It is a vestigial collection to support old saves that are no longer valid.
- - Added first pass on beacon tracking to map motherboard.
- - Fixed Logic lever could not be labeled or deconstructed when placed on a completed wall.
- - Fixed Hazard texture incorrectly set for export gate.
- - Fixed open-end helpers being colored incorrectly.
- - Added four new metallic spray can colors that are available only via the Cosmic Curiosities trader: Gold, Silver, Bronze, and Obsidian.
- - First pass on changing map reveal on map motherboard to a RocketAction. Added 'Surface Scan' option to rocket action buttons. When surface scanning head is attached to a rocket scaner, all connected map motherboards will receive a map update from the rocket's current orbital position.
- - Fixed missing / in closing colour tag for good quality food String
- - Fixed bread food quality. Should have been Good, not Ok
- - Added SpaceMap music now plays when in zero-g and not in a room.
- - Added Suit Storage and Ice Crusher now expose their atmospheric logic values in the same way as filtration and other devices, so they are more consistent.
- - Fixed a room generation issue where some wall and door variants would not call room generation when placed in certain configurations.
- - Refactored GridBounds.GetLocalGrid to use a span making this function allocation free when combined with stackalloc.
- - Added keyframes, time laps, and fixed a load of bugs with the cinematic camera
- - Added "trader showall" command to display a debug trader window that contains all
- - Fixed bulk water trader icons from the gas h2o icon to the liquid h2o icon
- - Fixed the steam traders not displaying any icon
- - Fixed A-Frame Stripes sign not returning kit when deconstructed
- - Changed Increased LifeTime of Large and Exotics traders from 30minutes to 40minutes.
- - Fixed bread food quality rating from complex to cooked
- - Changed the CleanupPlayers command to skip players that are in a cryotube - this affects dead, disconnected, and all options of the command
- - Added "cleanupplayers emptybodybags" as an alternative to cleaning up all body bags
- - Added trace Hydrochloric Acid to Silanol rocket map locations
- - increased print time for beacon from 5s to 15s
- - Added food quality tooltip to food on the food items as well as in the automated oven
- - Fixed clients not being able to drop a draggable when the joint breaks on the server. Now when the joint breaks on the server it sends a move to world message to players.
- - Fixed an Issue with floor drains where when placed on the floor it would not drain out the last little bit of liquid in the room if that liquid was not rendered.
- - Fixed Large Transformer On/Off button cursor being out of date.
- - Fixed Kit Logic Switch having an incorrect collider.
- - Fixed Cereal Bag and Water Bottle Bag having incorrect blueprint when placing.
- - Fix IndexOutOfRangeException when destroying multi-cell face structures (e.g. Access Bridge). Deregister now clears each cell with the same delta Add used, not a transform-relative one that was invalid for off-centre cells.
- - Fixed self tracking on tracking tablet after ITrackable refactor
- - Fixed ITrackable things list not being cleared when leaving a game
- - Added ITrackable that handles registration of trackable objects for the tracker cartridge.
- - Added bodybag tracking by moving human tracking to be on brains and added a TrackableName to display instead of using display name so that when a brain is in a body bag it can be differentiated from a live character.
- - Fixed Arc Furnace must be built on frames.
- - Simplified colliders on Steel Frame corner pieces.
- - Fixed some missing localization strings in trading.
- - Fixed Thumbnail and name for ItemKitCrewParts
- - Fixed ItemKitCrewParts not showing up in Stationpedia
- - Fixed missing crew umbilical from crew Kit
- - Added new kit and recipe for testing orbital crew modules
- - Updated localization for french, portuguese-brazilian, russian, and simplified chinese
- - Fixed missing icons for some bulk goods in the trader.
- - Fixed NRE when clicking dock button on an inventory window after a child window had been destroyed.
- - Fixed dedicated server console being unresponsive (no output, no input) until a player joined, the initial auto-pause set timeScale=0 before the console's async ready handshake completed. Delayed the startup pause by 5 seconds and skip it if a client has connected during the warmup
- - Fixed NRE in VoxelTerrain.ClusterSeeding when a minables generator was destroyed before its queue entry was processed
- - Fixed reconnect failure when player was in a body bag. TakeControl now routes by brain's immediate parent (Human vs body bag) instead of walking RootParent, which broke when the bag had been picked up by another player.
- - Fixed NRE in lod manager. The NRE would not affect the game but could spam the console.
- - Fixed brain check on body bag causing incorrect cryotube behaviour when a player respawned while their body bag already existed (multiplayer race left the brain in the bag with ClientId cleared).
- - Enabled the Large Payload Bay and associated Payload Delivery Container
- - Fixed script error in last commit(beta only)
- - Fixed body bags being able to be put in a cryotube after the player has respawned(multiplayer client issue only)
- - Area Power Control helper arrows rotated for visibility
- - Simplified colliders on Industrial Railings
- - Reverted the r27170 reference ID changes causing multiple issues in multiplayer
- - Fixed NRE in dedicated server console when launching
- - Added back scrolling using page up and page down in the console
- - Fixed centrifuges from continuously attempting to import while turned off or is not powered
- - Fixed import slot on the combustion centrifuge not being accessible
- - Fixed landing pad tank connectors making a single landing pad centres show up as duplicates on comms motherboards
- - Fixed Dynamic Air Conditioner not being interactable when mounted
- - Fix liquid volume regulator overshooting setpoint. Use the delta to equilibrium instead of the absolute equilibrium volume.
- - Add missing Ratio logic types (LiquidOxygen, LiquidCarbonDioxide, LiquidNitrogen, LiquidPollutant, LiquidMethane, Steam, LiquidNitrousOxide) to DeviceOutput so Active/Powered Vents can read them.
- - Fixed open gas canisters duplicating their spawn contents on load
- - Fix direct-connect server requiring restart after a client rejection. Close the RakNet slot after rejection so the same player can reconnect (Steam P2P was already handled).
- - Fix items losing parents on load by preserving slot-owner IDs. Some slot owners were remapped on load, so their saved IDs got taken by networks that loaded first. Child items then failed to find their parent.
- - Fix IndexOutOfRangeException when destroying multi-cell grid structures. Clear the Center slot (matching what Add wrote) instead of an anchor-relative deltaGrid.
- - Fix multiplayer ID collision when dismantling networked structures. Reorder OnDestroy to Remove -> Rebuild -> base.OnDestroy() so split-off networks don't reuse the destroyed structure's ID and crash clients. Thank you JacksonTheMaster.
- - Added new console formatting and updated help text. The intention is to make the console more usable and the help text be more consistent.
- - Added cinematic camera controller. Run 'camera cinematic' in the console to toggle (or Esc to exit). Free-fly with WASD/Q-E/Space/Ctrl, mouse to look, Shift fast, Alt slow, scroll wheel adjusts speed; Tab opens an ImGui settings panel for live tuning of speed, smoothing, FOV, and screenshot resolution. ScreenShot(P) key captures a 4K PNG. run console command 'camera cinematic help' for detailed instructions
- - Reverted commit 27135 which broke structure placement
- - Optimized MixInWorld, add GasMixture.RemoveInto to fuse Remove+Add, move LiquidSolver.QueueSpawns onto workers via ConcurrentQueue, and swap _mixingAtmos to a fixed array for ref mutation. In RunInternalReactionsJobs, collapse the redundant double-pass ForEach and stop recomputing immutable WorldPosition every tick.
- - Optimized AtmosphericsNetworksTick. Now fully parallelized with a new NetworkTick job stage. In the test scenario it took the tick cost from 44ms (avg) to 4ms (avg). One caution area could be DamageState.Damage race condition, although have not been able to replicate this as causing a problem. This may be able to occur for a single structure that has two atmospheric networks.
- - Optimization of Atmosphere Mixing. Cache GetGasVolume in hot path. Hoisted TakeWeight and computed before loop.
- - Refactor of Grid3 usage. Many more instances are now moved to WorldGrid. This will give likely no performance benefit, but hardens the code. Instances where we want a grid cell are now forced, there is no way for a degenerate coordinate to be provided.
- - Replaced AsPooledSpan with an Active enumerator. This does not allocate and uses the stack instead. Much cleaner and possibly faster.
- - Refactored AllPipeNetworks to be a DensePool instead of a list. This reduces garbage collection and list generation, especially for significant pipe network changes such as editing a very big pipe network or especially during explosions.
- - Remove exception thrown for StructureArray. Unnecessary, as exception would be thrown anyway. Hot path so may have an appreciable difference for extremely large atmosphere mixing situations.
- - Refactor of Structural dictionary on Cell. Now replaced with StructuralArray with lower lookup cost and reduced garbage collection. This reduces costs associated with major structure change events, including Rocket land/depart and explosions. Outside of this will unlikely be any significant change, other than hardening for errors. Now it is impossible for a structure to be incorrectly registered on a cell.
- - Fixed possible bug with water solver ceiling and floor was flipped.
- - Set reuseCollisionCallbacks to true so collision references are reused
- - Hoisted Span for GetOpenAirNeighbors outside of function. This will give an extremely modest improvement (~1-5%) for large atmosphere bases.
- - Added some early exits when checking volumes of gas with 0 Quantity as well as an early exit when checking the global liquid level check
- - Fixed IsSceneLoaded was looping through every call. Now the call is cached.
- - Refactor of GetStepUpHeight. Was generating significant GC churn. Switched ContactPoint to be a stackalloc buffer to avoid the allocation. Buffer is then refined over time and disposed at end of scope. This would have had significant compounding effects the more characters in the game, and was called every physics tick.
- - Fixed (beta) serious regression that did not allow pipes to connect with anything that is not a pipe.
- - Refactored WillPressureDamage to be ScanStructuresAndEvaluate to provide one traversal of StructureList for PipeNetworks. The old flow saw several traversals, now it is done in one shot. Hoisted various invariants per network one per tick, and also some per structure. The inner grid loop now uses indexed access with a cached grids.Count, rather than repeated MaxPressure & StressedRatio reads per grid. End result was significant performance improvement for atmos tick in extreme (many Networks) test case, from 230ms to 170ms.
- - Added GetWeakestMemberfast path. When the tick scan has already run the two calls in EvaluateIncorrectMatterState return the precomputed weakest in o(1) instead of doing a whole rescan. Legacy code left for UI debugging, as it will need this.
- - Added custom GetHashCode override for WorldGrid and some compiler hints for aggressive inlining.
- - Fixed (beta) regression where cable networks would not merge correctly. The old pattern passed a List into the Queue. While refactoring, I mistook this and passed in the *count*. This meant the Queue was never populated. Now the queue is populated with the buffer objects.
- - Cleanup of Connection handling for FillConnected. Now pipes handle different pipe connection types inside of their valid connection handling, to give consistent output.
- - Fixed (beta) connection errors due to lack of Index causing red text and failure to load some saves. Now instead of index, equality is checked using grid and role values.
- - Refactored WillJoinNetwork to use a ConnectionRef buffer rather than generating lists. Appears to only be used when showing cursor so performance impact is minimal if any. Benefit is instead code consistency.
- - Fixed room flood fill ClosedList never being cleared, causing accumulation across fills
- - Removed heap List<Grid3> _openNeighbours from RoomFloodFiller that also accumulated across iterations
- - Replaced Thread.Sleep(1) polling with CountdownEvent kernel signaling. Windows sleeps for ~15ms minimum regardless of requested duration
- - Cached ReadonlyGlobalAtmosphere in IsCloseToGlobal to avoid multiple lookups
- - Skip doing all the liquid mixing logic in mix in world if there is no liquid
- - Removed per-call List allocation in AtmosphericsNetwork.GetWeakestMember
- - Fixed unprotected iteration of StructureList in AtmosphericsNetwork.Stressed setter
- - Added roomevaluator console command with per-tick diagnostic stats (queue depth, fills, iterations, timing)
- - Major refactor of ReferenceId. We were experiencing an explosion in ReferenceId values as they always iterated. Switched the registry from Dictionary<long, IReferencable> to a flat 1M-slot array with a fallback dictionary for overflow, giving O(1) array-index Find() on the hot path. Load now remaps remappable objects (atmospheres, networks, non-device/item things) to fresh dense ids starting at 1 via a LoadAliasMap, while Device and Item keep their saved ids for IC10 script stability. Deregistered array-range ids are pushed onto a FreeIds stack and reused by RegisterNew, so the dense range stays populated instead of NextReferenceId climbing past MAX_REFERENCES over long sessions.
- - Refactor forth pass of Connected methods. ConnectedDevices has now been fully migrated to use FillConnected<Device> buffer with no GC and faster. This will reduce GC churn and be faster for networks that have large amounts of devices and cables present.
- - Refactor third pass of SmallGrid Connected and variant methods. Included Pipe, Chutes, Bins, and Devices. Removed duplicate methods returning WillJoinNetwork, as these were either exactly or functionally identical to the parent method.
- - Refactor second pass of SmallGrid and Cable. Deprecated Connected() and began replacing with new buffer method. Cable seemed to simply reapply the parent method, so consolidated to one on SmallGrid.
- - Refactored Connected handling for cables. Previously ConnectedCables on a SmallGrid object would return a list. Now a Generic FillConnected<T> uses a stackalloc buffer system. This reduces GC and is faster. A buffer of references is prepared, and then used down-chain. This will improve network handling for changes on very large cable networks. A series of changes for this and other networks together will reduce GC churn and improve FPS for very large bases and networks.
- - Fixed compile error caused by missing interface on robotic arm rail
- - Added Missing Grid3Buffer
- - Refactored Atmosphere Dictionary to be a ConcurrentDictionary. This may be more performant for high-intensity atmospheric situations with lots of atmospheres where contention locking could occur. On lighter loads it is possibly very very slightly less performant or the same, however at that point the game will be running so well that the loss would not be noticed.
- - Refactored OpenNeighbors and ClosedNeighbors handling in GetOpenAirNeighbors. Atmosphere neighbor lists were backed by List<Grid3> fields and a per-tick ToArray() allocation in GetOpenAirNeighbors. At 10k atmospheres this produced significant per-tick heap churn and ~4-5 MB of steady-state list overhead. DEV NOTE: CopyFrom writes data and count non-atomically; cross-thread readers (e.g. CheckStressOnStructuresClient, particle cull) can see a brief torn view. Matches the previous unlocked-read behavior in those paths, so not new behavior. Can be closed later inside Grid3Buffer via internal double-buffering without changing callers.
- - Added Grid3Buffer sealed wrapper around a fixed-capacity Grid3[] plus a Count, with Span<Grid3>/ReadOnlySpan<Grid3> implicit conversions (sliced to Count), Contains, CopyFrom, and duck-typed GetEnumerator. Callers get indexer/foreach/Count semantics without needing to track a separate count field.
- - Refactored some methods related to GridController that returned and used Grid3 lists. Now these are using Span buffers that are initialized on the stack. This reduces garbage collection and is faster. This may improve performance for large bases.
- - Refactored LightManager use of lists. Now stackalloc is used for grid assessment. This improves performance for bases with lots of items and objects that use HasSunlight. This will reduce memory garbage collection and also be faster.
- - Extended densepool functionality to allow a stackalloc usable reference system. Not immediately used as there may not be good use cases for it.
- - Refactored WeatherManager to ensure capacity is set, to avoid reallocation for lists during generation of storm curtain. Investigated stackalloc use, but not enough memory would be available as this can get large.
- - Fixed issue where Gas traders would sell Nitrous Oxide when players were trying to buy Ozone instead
- - Fixed the Structure command so that completeall no longer ejects cartridges from computers
- - Fixed ItemHardHat so that it is now paintable.
Add Comment
Please, Sign In to add comment