I saw a few other threads that dabbled in having such a system. But I felt like a more in depth idea was deserving. I would propose the following system for having on-board environment systems.
- Have blocks that generate atmosphere in the empty area that they are adjacent too.
- Possible block name: "Atmospheric Generator", "Environment Generator", "Atmosphere Generator", etc..
- They use power.
- The more of these a ship has the faster atmosphere is generated in their respected area.
- Have atmosphere tracked by percent or a finite number representing how thin the air is per empty area in a ship/station.
- Make it so if a door opens/ hole in the ship happens it starts venting atmosphere. To keep things simple I would base the rate of venting based purely on the door/hole size that is directly next to the atmosphere. As it vents the atmosphere percent starts to drop.
- Make a system for actually breathing/ your air usage. Lets call this personal atmosphere.
- You have 20 seconds of personal atmosphere aka holding your breath.
- If you have a helmet on you your personal atmosphere gets multiplied by say 100 or something, so you have a half hour of breathing roughly. Representing having your space suit fully on.
- This personal atmosphere does not get replenished until you enter a full atmosphere environment, say a station or ship.
- Once your personal atmosphere runs out you start taking damage to your hp. Eventually killing you if you don't get more personal atmosphere.
I would also have a option for enabling/disabling this on a per server/single player mode.
[Edit]
Now a few people have voiced concerns about strain/load on the server/client, this was my reply:
This should only be "taxing" when you place a "Atmospheric Generator" it would parse the empty blocks its associated with just like when selecting multiple modules, it would take a few moments depending on the area space. Now when you get a hole in your ship or open a door, the atmosphere area does not change, only the air density goes down based off the hole/door size over time. This way should be very untaxing on the server and client.
[Edit]
Another feature that was suggested below, is personal air tanks, say you can strap on a few and each adds up to like 30 minutes. This could make it easier for new players if they start with these so they dont die right away.
I would also propose that all shops have a atmosphere area, so there are safe areas through out space.
[Edit]
While in a core it provides free air. So if you have a core you wont suffocate to death.
Some further clarification about how the mechanics would work. When you start building a ship and say you have finished a room/section you now place a "Atmospheric Generator", it now starts iterating through the open space in the room a few blocks at a time finding what is considered the whole room. There should be a cap on how many blocks of space it can handle before needing more modules or whatever. Once it has found all of the space that will take air, it starts increasing the oxygen level ( or we can just say its done and oxygenated). So now we know what area of space we are dealing with, now how we handle ship damage is, when your ship loses blocks it checks if any of those blocks were next to a oxygenated area, if they are it starts venting 1% a second per block or some other percent until either you seal the hole or all your air goes poof. If more holes are added the rate increases. This way calculations while in combat are next to no load, all the load would be when initially adding the system. Now to take into account sealing holes I would say the following. When you vent air your "Atmospheric Generator" goes offline and will not turn back on until you reset it, which should be able to be done with logic. This way it doesn't try to recalculate space when you get damaged.