Space Engineers

Space Engineers

View Stats:
Nighthaven Mar 28, 2015 @ 3:36am
Oxygen Equalisation Behaviour...
So, I build a station ( YaY \o/ ) with Oxygen use in mind, though rather then dropping an Air vent into every single room, I made main Sections that Double as Equalisation Chambers of sorts.
In short, I open the door, next room gets his share of fresh air.

I did however find something a little strange there... Whenever i open the Hallway next to one of these chambers, the Airvent starts pumping out air again, just small amounts, but it does, even with no air being needed as I still keep wearing my helmet for the moment and all rooms have a High oxygen value, thus, there should be no loss of air just Yet. Furthermore, rooms just one block wide that get filled with air soon as the door is opened, immediately loose all air again soon as the door is being closed.

So, it seems that everytime a Door is closed, Air is lost, but not only for the block occupied by the door as is the case with the small room mentioned above, it may appear that the blocks next to the Door loose Oxygen as well. Just opening and closing a door repeadently can exhaust a smaller stash of air in no time as for instance, a room of approcimately 12 Blocks in size looses all air by simply opening / closing the next door a few times O_o

Did anyone else make a similar Observation ?
< >
Showing 1-15 of 26 comments
cptsavarus Mar 28, 2015 @ 10:30am 
Yes but not in so much detail as you. I'm still trying to figure out exactly what's happening but I think you're right in that a quantity of air vanishes from the game each time a door is opened or closed.

I'm currently working on a creative mode build and am using the conveyor air vents mod. I don't think the mod is doing anything strange, though admit it's possible... but definitely the air isn't behaving like you'd expect it to.
Unfinished rooms that vent out both directly and indirectly to space are registering high air levels where rooms that are well sealed are registering no air, even though they're all connected up to the conveyor system.
Also I can't figure out what's going on with the LED indicators... some show a single red bar, some show full green spread, some show a single bar or full spread of yellow... but the indicators don't seem to match the conditions in that room at that time.
Definitely something odd is happening here!

In one particular instance I have 2 rooms separated by a bulkhead, in which there's a single corridor block between 2 doors acting as a kind of emergency containment seal. Both rooms are sealed from space and there are vents right next to one another on opposite sides of the bulkhead. One room pressurises perfectly, the other doesn't pressurise at all. I open the door on the pressurised side & all seems fine but as soon as I enter the corridor block the HUD registers no air.
You'd think that by opening the other door, the corridor and the unpressurised room would eventually become pressurised. Nope. It's like corridor blocks don't conduct air at all!
On the other side of the unpressurised room is an airlock with its own air vents. That pressurises fine too but again, open the inner door and that middle room just doesn't pressurise. There's not even any corridor blocks in the way from that side. All very strange.

At the moment I'm putting it down to either an unfixed bug or just creative mode being weird & working differently. I've yet to build anything with an air system in survival mode, so can't say if it's that or not. Whatever it is it's confounding the hell out of me!
Last edited by cptsavarus; Mar 28, 2015 @ 10:33am
Nighthaven Mar 28, 2015 @ 12:47pm 
Hmm, corridor blocks ? You mean those tunnel like blocks ? As far as I know, those can't be pressurized properly. there are a few cases that work similar, like, ramps, have one ramp leading to the next level, and one just above it acting ase roof, the space between them wont be pressurized.

Basically, the best you can do is to use only primitive blocks right now that adhere to the most basic of shapes, nothing to complex.
I mostly use Light armor blocks, interrior walls, doors and so forth and keep doublechecking if they pressurize properly, Usually by depleting all pressure, opening all doors but the outer and then pressurize again, usually, if the Air Vent's LED's go yellow, I know I messed up somewhere.

Though, you said your LED's are messed up ? I havn't had that one before O_o They seem to work quite accurately for me. least so far.. Maybe there is something about the Modded air vent's your using ? Compare them with the Vanilla version and see if that fixes it.

cptsavarus Mar 28, 2015 @ 2:22pm 
Yes, corridors as in the tunnels. That's interesting to know. Also didn't know about the ramps / steps one. That'd explain why the first build didn't work. I later swapped the 2x1x1 steps out for 1x1x1 slanted steps / "windows" and that did the trick, though I didn't realise why at the time.

The vents I'm having the biggest problem with are the modded slant ones, so it's highly likely they're screwing something up. The first time I used them they worked just fine but thinking about it, they were oriented differently. Now they're on their sides they want no part of anything. Hmm...!

The build I'm having problems with is mostly very simple but I guess I'm still being too ambitious at the moment. Reading what a few others have to say it seems the whole air thing is more like blowing smoke right now. Keen are pretty good listeners though, so I reckon it wont be long before we can really use the new stuff. Saying that I seem to remember it was several months after conveyors were introduced that they could actually be used for anything. We wait in hope I guess.
Til then I'm shelving anything to do with air. It's not working like it should in any event, so trying to work WITH it seems mostly pointless for now. The carrot is dangled and it's a good looking carrot, so I suppose that's enough!

Back in regard to the issue of doors & the loss of air... I'm thinking as a computer program now & wondering 2 things... Air is a local variable to each & every cube or "array element" in every grid right? Meaning a cube with a partial object in it (like a door or a catwalk panel or a corridor block) has its capacity reduced by the mass of that partial block. That would simulate displacement. So say a door object displaces X array elements of air when it's closed. You open it, it should still displace X array elements... but what if ithere's an omission in the code that causes an open door to displace no array elements? The closed door when opened would create a gap in the array that the "produce air" routine would then try to fill. Conversely, an opened door when closed would not ammend the array like it should, meaning the new array elements that were just created by opening the door were lost from memory completely once the now re-closed door was back displacing air. Repeat the cycle often enough and it'd empty an infinite number of air tanks because the air is never replaced when the door gets closed.
This is basically talking about the air vent as a "GetValue / ModValue" argument in a routine. No air vent in a room = no "Get / Mod" argument. The game doesn't even know to ask whether this is a room that can contain air, so it doesn't include it in any further checks and automatically sets Value to 0 as a failsafe.
I hope this is making sense!

The second thing I'm wondering is how exactly each room is quantified as its own sealed environment and at what point when a door is closed does it cease to be part of the next room for the purposes of sharing one air variable array. If the array is divided by a closing door, each half of it becomes its own separate array. The half that's not supported by its own "produce air" routine might by default have all its elements set to 0, meaning all the air in the room without the vent is lost because there's no calling statement in place to discern what it ShOULD be... IE, there's no vent in that room, so there's nothing to DETECT how much air was in there when the door was closed and the array divided.
Again, I hope I'm making sense.

I may be miles away with my thinking. My knowledge of modern programming is limited. What I know is old and methods have probably changed a lot since then. Arrays & variables are usually a pretty universal language though, so call it a semi-educated guess. Just throwing it out there really, trying to make sense of what's happening. It's fun to try even if it's wrong!
Last edited by cptsavarus; Mar 28, 2015 @ 3:02pm
Nighthaven Mar 28, 2015 @ 3:04pm 
Hmm, Although not completely, I do grasp part of what your saying, though let me clad in simpler words, and how I *think* it may be.

Essentially I am guessing that the Air is meassured per cube, the Vents don't fill a room, but each empty cube within the room, certain objects like the door, when opened, classyfy as empty or partialy empty. The Act of opening the Door has the Vent detect this empty space and will subsequently try to fill it up to maximum capacity.

Now here is where I am not sure, but I wager a guess that the maximum capacity can not be exeeded, as such, closing the door, the excess of air is deleted, and opening it again will cause two things, for one, the air in the surrounding blocks will fill the newly created empty space that classifies as Valid, and two, for the Vent to add the oxygen that misses then in each block.

Considering though I managed to completely drain a room of air by opening / closing a door, the game is unable to relocate the air within the Doors location, instead, it bluntly deletes it each time the door is closed, and when subsequently opened again, the surrounding blocks share an equal percentage with the oxygen lacking cube, and doing it repedently, you can effectively delete all available air, although you'll delete less each time you close the door since there is less to be shared in the surrounding cubes.

Now, that much I would have nearly expected though, and I am quite fine with it, but what confuses me is that not just the air in the Door's Location is being deleted, but also that of the cubes before and behind the Door.

Imagine a small halway, you have an outer door, one free Cube, and then another door, With one door open, you would be able to have the one cube pressurized, but as soon asyou close the door, the free cube is empty again, as though the Door's closing had deleted the air within this one block too, though, thinking about it right now, I did a second test a little bit ago, not standing within this single cube, but instead on the other side of the cube, and it took more toying with the door to drain the room of Oxygen, so, perhaps it is not the Door itself, but perhaps the Avatar as well ? As in, the Cube your Avatar stands in is devoit of air, although you are fine as long as the surrounding blocks carry oxygen that *could* support you if your helmet would be off, so your hud shows you oxygen is available in the case of a larger room.

With just one cube though, there is no Oxygen around you to *possibly* fill up the one your standing in, so It registers as *No oxygen* ..... I have to test that, see if I can fill a One cube segment and then open a door towards space, see if I have a Depressurisation effect then..

Nighthaven Mar 28, 2015 @ 3:08pm 
Nope, no Depressurisation (Particle) effect, so it's likely the doors after all. *scratches head*
Last edited by Nighthaven; Mar 28, 2015 @ 3:11pm
cptsavarus Mar 28, 2015 @ 5:27pm 
That makes a lot of sense. We seem to be on very similar lines of thinking, though you've condensed it down to a much more picturable thing than I could.
You're talking in images while I'm talking in numbers but I think what we're both saying amounts to the same(ish) thing... that a closed door does not have the same displacement as an open one... or if it does, that displacement can't be shifted dynamically within that cube, as in when the doors move. As for whether the avatar displaces anything, I wouldn't know where to start with that! My guess would be that he doesn't... just because it's such a new mechanic.

So instead of all empty cubes being filled directly from one source (the air vent) like I thought, you're saying they're filled on a piecemeal basis by their neighbouring blocks, whiich are fed by THEIR neighbours and so forth until the neighbouring block is the air vent itself. A kind of "take one & pass it on" system where each cube fills itself first, then distributes any excess evenly among all its neighbours. That's a nice clean model and more realistic than mine, as that's how pressure equalises in the real world. This also explains why there's a delay of a few seconds between each stage of pressurisation. I like it!

I also like the part about the maximum capacity not being exceeded and any excess being deleted. Whatever is happening, that air doesn't come back, so it's definitely being deleted by something.

Assuming then that it's correct... each cube has say 5 states (possibly more depending on how precise the simulation is or possibly on how many cubes comprise the room):
1)Full - can only give away air
2Nearly full - gives away air before it recieves air
3)Half full - gives away and recieves air equally
4)Nearly empty - recieves air before it gives away air
5)Empty - can only recieve air

So an empty cube next to a full cube would result in 2 half full cubes, as would a nearly full cube next to a nearly empty cube.

Still though, there must be some kind of system-wide check going on constantly to determine how many cubes make up the room... otherwise there's no defining the maximum capacity that mustn't be exceeded. I say constantly because as doors are opened & closed, rooms merge into one another and become smaller or larger... or do they?

Could it be that doors are unique in that they define a point at which 2 rooms can share resources without actually merging into one? Sounds like a stupid thing to say doesn't it... bear with me here.

Consider how rotors & pistons work... the 2 ends each form part of a separate grid. The grids can share power and functionality but they're never truly one because grid cells cannot move relative to their own grids. Perhaps in a similar way, each pressurised room is its own separate grid and the door between them acts like a rotor or piston would, sharing resources (air) to & fro without the need to recalculate the room capacity every time it's opened or closed.
A piston or rotor can't share resources to a grid that isn't there, nor can it accept resources into itself, since it has no integral capacity of its own. It can however share resources with a grid that has a means to quantify & use or store them.
Maybe rooms work in a similar way. So say that doors can't accept air because they have no capacity for it and neither can they share it with a room that isn't defined as a room because it has no air of its own. Maybe they CAN share air with another room that has it or is defined as being able to use or store it.
If that's anywhere near the mark, a 1 cube room on the other side of a door would still have to be pressurised before the door could share air between the 2 rooms.

Of course that does nothing to help explain where the lost air is going.
Lots of avenues of thought going on here but I'm going to have to sleep on them before they all get (more) confused!. I'll do some experiments tomorrow & see if I can figure out something we don't know.
Nighthaven Mar 29, 2015 @ 2:12am 
Hmm, sleeping over it myself, I think there is something a lot simpler going on yet again, I believe I may be even completely wrong on Doors deleting air in blocks other then their own.
It does do so to their own block, there is no question about that, but I do think the *Detection* of air has is a different one.

What I cooked up this morning is the Idea of an Air flow, not an actual one but, I think Cube's more or less have to be able to bounce Oxygen back and forth, meaning the minimal size of a Room has to be two Cube's in size, allowing these two Cubes to detect each others Oxygen and share it.

With one cube in size only there is no Available Cube to share it's air with, or to receive any from, so essentialy, it looses it's own air with no potential mate to supply it.
That could even explain how oxygen is shared amongs cubes, each cube relates only to it's neighbour, all other cubes have to wait till one of their neighbours has Oxygen to share with them.

cptsavarus Mar 29, 2015 @ 3:39am 
That was actually going to be my next thought, though I was thinking of it in terms of 1 being a trigger to vent air into space, since 0 would not work as a trigger. Can't have a room if there's no room in it after all.

So you reckon the cubes fill sequentially rather than dynamically amongst ALL their neighbours? I could buy that as a model for simplicity but I don't think it's realistic enough... you know KSH & their plausibility thing. I think they'd want to model airflow more dynamically.
Also, filling a room sequentially could get quite strange when it came to rooms that are more than 1 cube tall (are 3D, not 2D).

Every way I cut this in my head though I end up at the same place... that there must be something calculating the final number of cubes in a room. The room has to be definable by either a single number string or a system of 3D co-ordinates. At the very least, rooms have to be identifiable as having either 0 cubes, 1 cube or more than 1 cube.

You just know we're both completely overthinking this!

For fun though, how about a proper series of controlled experiments.

If you're up for it I'll build & publish a test world and name you on the authors list and we can both then try the exact same things at our leisure & see what conclusions we draw. We'll never truly know how Keen has made this work unless they tell us but I'm enjoying trying to puzzle it out.

Nighthaven Mar 29, 2015 @ 4:00am 
That could be amusing indeed, though so far I can only think of my above suggested test.
And I think you have to imagine it as a sort of Ripple effect, a three dimensional one. the Air vent feets it's own and the adjecant Cube's with air, those fill their neighbours, above and besides them, and so forth, all the Air vent has to do then, is to refill the amount of air it's own and it's neigbouring Cubes have lost in the process, untill, if able, it has reeched maximum capacity, which it can achieve only if all blocks can do so.

And thats where I am wondering. A room of one cube has no neighbour to share Oxygen with, nor to receive any, so once the door is closed, the lacking ability to share or be shared with eradicates all air, soon as you add a second empty cube though, it *Should* enable the room to stay pressurized as the two cube's can share the Oxygen between each other.

PS: Meaning in short, the ability to share is the essential trigger for a cube to hold Oxygen, without least one more cube to share it with, Oxygen will not be supported and the Oxygen is *deleted*
Last edited by Nighthaven; Mar 29, 2015 @ 4:01am
Nighthaven Mar 29, 2015 @ 4:15am 
Actually went ahead and tested it, a room *Must* be two cubes in size, then it can hold Oxygen permanently, one cube in size is not enough. So, I might not be to far of target with the idea of the Ability to share being Essential O_o

PS: On a Sidenote, that makes Airlocks a simple build, unless your worried about the lost *Deleted* oxygen, building a room only One Cube in size does the trick. So, if they actually went for Explosive decompression and such, thats the most Cost effective way to do it ^^
Last edited by Nighthaven; Mar 29, 2015 @ 4:17am
cptsavarus Mar 29, 2015 @ 4:53am 
Sent you a friend request so I can add you to the authors list of this...
http://steamcommunity.com/sharedfiles/filedetails/?id=415972964

It's only a start but I've covered what I think are the founding principals.

I noticed the natural airlock effect you mentioned while building it. I wonder if that was deliberate for exactly that reason! Either way it works quite nicely.

Feel free to add more to the world of course. I'm about to start looking at airlocks with more than 1 cube & see what they do.

For the first time I've also noticed a visible venting into space when a block is removed from a wall... leading me to think you're on the right track with the explosive decompression part. If that visible air could be given a force that can act on the players avatar then it looks likely that explosive decompression will become a feature. We'll be blowing things out of the ♥♥♥♥♥♥♥♥ airlock in no time! Sigourney Weaver eat your heart out!

A curious effect with series 3 that I noticed... when the outer door is closed and you open & close the middle one, only the vent in the inner chamber seems to blow additional air. Seems to be the case regardless of which side of the door you stand on. Not sure what that means yet.

I hope the world is useful to you anyway.
Last edited by cptsavarus; Mar 29, 2015 @ 5:22am
cptsavarus Mar 29, 2015 @ 5:16am 
Just added a 4th series... you're bang on! A 2-cube room stays pressurised when the door is closed. Meaning either the astronaught himself displaces or delete air or there is indeed a collaboration of cubes going on. This is a pretty cool discovery. Well done thinking of that!
Nighthaven Mar 29, 2015 @ 5:38am 
Hmm, loaded it up and added a 5th Platform to test a little something, a one block room with a vent, the vent can't fill the one cube with Oxygen ! It does show Two green counters, but standing inside, there is No Oxygen listed by the hud.
Considering that the cube the Door is in, and the only other holds the Vent, you have two half cubes, if at all that much, and Still the vent Detects a certain Air pressure that, within this small space, isnt there.

So, either it is detecting the Oxygen Filled space beyond that Door, or it is Detecting the pressure that it could build up, but can't since, as I assume, there is no Second cube that it can share Oxygen with.

PS: Ok, the Result differs depending on where your standing, Inside the room or the room besides it, the Vent goes from four to Two green Lights, Standing above to watch the magic happen from the outside, the Lights stay at 4 Green no matter what...

PPS: Loading the worl anew Forces the Vent to reevaluate, and turn Full on Red, Saying that it can't pressurice that Small room, and even waiting some time, the indicator wont change to green until I open and close the door.
So, I am guessing it simply can't handle the situation to well and probably means to turn red once the door is closed. ^^
Last edited by Nighthaven; Mar 29, 2015 @ 5:57am
cptsavarus Mar 29, 2015 @ 6:12am 
That's interesting. So the door is right in front of the vent yes? Just enough room to stand in there.

Sounds like the vent has filled the 2 half cubes (or thinks it has) but that in terms of how the HUD registers air, 2 halves aren't making a whole.

So 2 half cubes on their own cannot be added to one another to form one whole cube but they can be added to another whole cube (although that's apparently not enough for them to be classed as a second whole cube for the purposes of sharing air between them, or we could have 1-cube rooms that didn't depressurise).
2 half cubes plus the two whole ones you need for a self-sustaining isolation room dont equal 2 cubes. I'm thinking that half-cubes are static and cannot share at all... more like they're placeholders for joining two whole cubes together & that's why they don't register any air on the HUD...
Something like I was saying about rotors & pistons being part of 2 separate grids. Maybe it's not the door itself that determines the junction but the half cube of air that's left on either side of it.
If that's true then you could in theory create 2 grids that were joined by a new type of block I'll call a "door rotor" (a rotor with a door in it insetead of a conveyor). The grids could be set to rotate relative to one another through the door rotor and even though the grids were separate, the sharing of air between them should be possible.
Not sure if there's a way we can test this. I think there may be a mod that puts a door inside a rotor so I'll see if I can find it. Hollow rotors I think it's called.... or something like that.

I'm going to test the half-cubes of air using the Conveyor Air Vents mod. Those blocks take up exactly one cube, so in theory that might mean they can allow for 1-cube airlocks that dont depressurise when the door is closed... I think!
cptsavarus Mar 29, 2015 @ 6:21am 
P.S:
Are you able to save the world with the new experiment added to it, then re-publish it over the top of the existing workshop world? Or am I the only one who can republish? I'm not sure how the contributors thing works. Sucks a bit if only one named author can have permission to update the world.

If you can do that, do it. I have to pop out for a bit so we're not likely to overlap on our updates for an hour or 2.
< >
Showing 1-15 of 26 comments
Per page: 1530 50

Date Posted: Mar 28, 2015 @ 3:36am
Posts: 26