Difference between revisions of "Oxygen/zh"

From Space Engineers Wiki
Jump to: navigation, search
 
Line 1: Line 1:
[[File:Oxygen Tank OxyTank01.jpg|thumb|[[Oxygen Tank]]s are the primary storage mechanism for Oxygen.]]
+
[[Category:游戏机制]]
Oxygen is vital resource for the player required for them to breathe in [[Survival Mode|Survival]], without access to oxygen either via their suit or an atmosphere they will die.
+
[[File:Oxygen Tank OxyTank01.jpg|thumb|氧气主要由[[Oxygen Tank|氧气罐]]存放]]
 +
==说明==
 +
:氧气是玩家在[[Survival Mode|生存]]中呼吸所需的重要资源,没有氧气,无论是通过他们的宇航服还是大气,他们都会死亡。
  
 
== Vital Statistics ==
 
== Vital Statistics ==
Line 40: Line 42:
  
 
== Production ==
 
== Production ==
 +
氧气是在[[Oxygen Generator|氧气发生器]]处理[[Ice|冰]]时产生的。在一些小行星和行星上发现了冰,就像其他种类的矿石一样。[[Oxygen Farm|氧气农场]]也只从阳光中产生少量的氧气,但只需要电力而不需要冰。
  
Oxygen is created when an [[Oxygen Generator]] processes [[Ice]]. Ice is found in some Asteroids and planets, much the same as any other kind of ore. [[Oxygen Farm]]s also generate small amounts of oxygen from sunlight only, but require only electricity and no ice.
+
氧气也可以通过[[Air Vent|通风口]][[Planet|行星]]的大气中获取,[[Planet/Earth|地球]][[Planet/Alien|外星]]行星的大气中都有不同程度的氧气。而冰本身也可以直接从行星上以可见的水体的形式收集,这些水体实际上就是冰,可以被加工成氧气和氢。特别是地球富含氧气,这些行星有无限的氧气可用。
 
 
Oxygen can also be harvested from a [[Planet]]'s atmosphere via an [[Air Vent]], [[Planet/Earth|Earth]] and [[Planet/Alien|Alien]] planet both have varying degrees of oxygen found in their atmosphere. While Ice itself can also be harvested directly from a planet in the form of visible bodies of water which in reality is Ice and can be processed for oxygen and [[hydrogen]]. Earth especially being very rich with oxygen, these planets have infinite amounts of oxygen available.
 
  
 
== Storage ==
 
== Storage ==
 +
氧气可以储存在[[Oxygen Tank|氧气罐]](在飞船和空间站上)、[[Oxygen Bottle|氧气瓶]](物品)和太空工程师的宇航服里。
  
Oxygen can be stored in [[Oxygen Tank]]s (on ships and stations), in [[Oxygen Bottle]]s (items), and in a space engineer's suit.
+
当玩家戴着头盔时,游戏服中的氧气就会耗尽。剩余的氧气容量显示在玩家HUD的左侧状态面板中[%],以及头盔的当前状态(无论是否佩戴)。宇航服储存的氧气从[[Medical Room|医疗室]][[Cockpit|驾驶舱]][[Fighter Cockpit|战斗机驾驶舱]]补充,这些氧气连接到[[Conveyor|传送带]]系统,带有[[Oxygen Tank|氧气罐]]或氧气源(发电机或农场)。如果在玩家的库存中有一个氧气瓶,当宇航服的氧气水平下降到30%以下时,氧气将从瓶中转移到宇航服的氧气储存中。
 
 
A player's suit's oxygen is depleted while the player is wearing a helmet. The remaining oxygen capacity is displayed in the left status panel of the player's HUD in [%], as is the current status of the helmet (if worn or not). A suit's stored oxygen is replenished from a [[Medical Room]], a [[Cockpit]], or a [[Fighter Cockpit]] attached to a [[Conveyor]] system with an [[Oxygen Tank]] or oxygen source (generator or farm). If there is an [[Oxygen Bottle]] in a player's inventory when the suit's oxygen level drops below 30% then oxygen will be transferred from the bottle(s) to refill the suit's oxygen storage.
 
 
 
 
== Consumption ==
 
== Consumption ==
  
 
=== Space Engineer ===
 
=== Space Engineer ===
 +
玩家消耗氧气的速率为0.063 O<sub>2</sub> /s。这些氧气是在玩家戴着头盔时从他们的宇航服中获取的,或者是在他们摘下头盔时从他们所在的加压房间中获取的。如果玩家在驾驶舱中没有戴头盔,并且有氧气输送通道,那么氧气就会从输送系统中消耗掉(假设有一个可用的氧气罐)。
 +
  
A player consumes oxygen at a rate of 0.063 O<sub>2</sub> / s. This oxygen is taken from the player's suit while their helmet is on (worn) or from the pressurized room they are in while their helmet is off. If a player is sitting with their helmet is off in a cockpit with conveyor access to oxygen then oxygen will be consumed out of the conveyor system (assuming there is an available oxygen tank).
+
如果他们的宇航服中的氧气耗尽,那么当他们戴着头盔时,角色就会慢慢窒息。一个没有戴头盔的球员,而不是在一个加压的房间或一个有传送带进入氧气的驾驶舱也会窒息。如果不立即恢复氧气供应,窒息会导致死亡。
  
If their suit's oxygen is ever depleted then the character will slowly asphyxiate while their helmet is on. A player with their helmet off while not in a pressurized room or a cockpit with conveyor access to oxygen will also asphyxiate. Asphyxiation results in death if an oxygen supply is not restored immediately.
+
*玩家甚至可以窒息在他们的西装,而站在一个加压的房间,如果他们不脱下他们的头盔在西装的内部O<sub>2</sub>罐耗尽!
* The player can even suffocate in their suit while standing in a pressurized room, if they do not take off their helmet before the suit's internal O<sub>2</sub> tank is depleted!
 
  
 
=== Atmosphere ===
 
=== Atmosphere ===
 +
[[small ship|小型船舶]],[[large ship|大型船舶]]或[[station|车站]]的密闭室(大于单个块)可以通过带传送带的[[Air Vent|通风口]]向氧气加压。通风口也可以减压这样一个房间,带氧出来,并返回到输送系统(如果存储可用)。使用图遍历/洪水填充算法将封闭空间填满氧气。该算法遍历体积网格并检查封闭和开放区域。1个氧气储存单位为1米<sup>3</sup>,有空气块(无论形状)1个[[Large ship|大]]]块空气需要15.625个单位的氧气,而一个[[Small ship|小]]块则需要0.125个单位的氧气。
 +
  
An airtight room (larger than a single block) of a [[small ship]], [[large ship]] or [[station]] can be pressurized with oxygen by an [[Air Vent]] with conveyor access to oxygen. The air vent can also depressurize such a room, taking with oxygen out and returning it to the conveyor system (if storage is available). A Graph traversal / flood-fill algorithm is used to fill the enclosed space with oxygen. The algorithm traverses through the volumetric grid and checks for enclosed and open areas. 1 stored unit of oxygen is 1m<sup>3</sup> and blocks with air (no matter what shape) take 15.625 units of oxygen to fill for 1 [[Large ship|large]] block of air, while a [[Small ship|small]] block of hold 0.125 units of oxygen.
 
  
The minimum safe pressure for a character to have their helmet off and breathe in a pressurized room is 50%, if the character is in a room with some oxygen but not enough to reach 50% pressure they'll take 1 hitpoint of damage per second; Even if this room's pressure is tiny any pressure above 0% will do. If the character is in a room with no oxygen whatsoever (or a room that cannot be pressurized due to a leak exposed to space) or in open space such as an exterior - they will take 7 hitpoints of damage per second. A player in a suit without any oxygen will take the full 7 hitpoints of damage per second and has ~14 seconds to find oxygen or they will die.
+
角色脱下头盔呼吸的最小安全压力是50%,如果角色在一个有氧气的房间里,但没有达到50%的压力,他们将每秒受到1点生命值的伤害;即使这个房间的压力很小任何高于0%的压力都可以。如果角色在一个没有氧气的房间里(或者一个由于空间泄漏而无法加压的房间),或者在一个开放的空间,比如外部——他们将每秒受到7点生命值的伤害。一名玩家在没有氧气的情况下将会受到7点/秒的伤害,并且有14秒的时间去寻找氧气,否则他们将会死亡。
  
Assuming you are in an airtight, pressurized room entirely full of oxygen:
+
假设你在一个完全充满氧气的密闭、加压的房间里:
* Welding an airtight block into its final build stage destroys the air that was in its block.
+
*将一个气密块焊接到最后的构建阶段会破坏其块中的空气。
* Grinding an airtight block down from its final build stage to anywhere under it will expand the room by one block, dropping room pressure.
+
*将一个密封块从最后的构建阶段磨到它下面的任何地方,将使房间扩大一个块,降低房间压力。
* Closing a [[door]] destroys the air that was in its block.
+
*关上一扇[[door|门]]会消灭门块内的空气。
* Welding a block or closing a door creating a 1-block "room"/space will destroy the air that was in that space.
+
*焊接一个砖块或关闭一扇门创造一个1块的“房间”/空间会破坏该空间中的空气。
* Losing a fully pressurized large-grid block of air destroys 15.625 units of oxygen.
+
*失去一个完全加压的大栅格空气块会破坏15.625单位的氧气。
  
 
== Notes on Oxygen Mechanics ==
 
== Notes on Oxygen Mechanics ==
 +
*氧气在生产者(农场、发电机)和消费者(储罐、通风口、驾驶舱、医务室)之间的传播是由传送带规则决定的,但传送带本身不储存、包含或以其他方式破坏氧气。氧气在这两个端点之间迅速流动。
 +
*氧气从所有非储罐中均匀排出。
 +
*消费者按优先级排序,如果有氧气生产,其余的将均匀分布在氧气罐中。氧气消耗优先级由块类型定义,但目前所有消耗块的优先级似乎都为0。
 +
*非储存罐随着时间的推移不断重新平衡,从一些储存罐中减少氧气,并向其他储存罐中添加等量的氧气。
 +
*有这样一种“含氧房间”对象,它包含含氧块结构,所有这些结构在功能(和体积!)上都是相同的,无论实际的块占据网格坐标。
 +
*氧气含量的权威是房间物体,而不是积木。房间作为一个整体是加压和减压的,砖块跟踪房间的氧气水平,并随着时间的推移进行调整。氧气一旦释放到环境中,就变成了“空气”,因为没有更好的词了——一个完全不同的实体,在代码中仍然被称为“氧气”——在房间完全重新计算之前,单个块的状态不会影响房间的状态。通风口直接影响房间的氧气量,而不是它们所在的单个块位置;它们产生“空气”并消耗“氧气”,反之亦然。医务室通过消耗储罐中的氧气,并向宇航服储存库中添加等量的氧气,直接填充宇航服。
 +
*块确实有单独的空气水平值,并根据它的大小和总空气水平不断调整此值为整个房间的平均值。整个房间的压力应该在1.5秒内相等——这是一个常数。请注意,这是由每个块单独完成的,即空气不会在块之间移动——当一个块添加或移除空气时,它不会考虑任何东西,除了它当前的空气水平和房间的总水平以及其中的块数量。
 +
*角色通过直接从房间数量中减去空气来消耗空气,而不是他们当前所在的区域。他们在哪个房间是通过寻找最近的氧气块结构来确定的,这个结构是加压(即封闭)的一部分。“房间”。代码着眼于角色的位置(即你脚边的一个点),并试图通过确定角色点最接近的方块中心来找到要考虑的网格中的哪个方块;应该选择第一个封闭的房间,但考虑方块的顺序取决于网格的方向,这就是为什么站在一个氧气充足的房间里,旁边的门通向真空,仍然可能窒息。
 +
*房间是通过在所有基本方向上传播块邻居来定义的,有点像2D绘画程序中的洪水填充算法,但在3D中具有特殊性。彼此对角线的街区不是邻居,房间也不会通过角落传播。这里有一些有趣的观点:
 +
**房间是临时结构,当方块被添加到网格中,从中移除或门状态改变时,它们会定期重新计算。
 +
**通风口的存在与否并不影响一个东西是否被认为是一个房间。分裂逻辑适用于整个网格,从一个特定的角落开始,并尝试在其他房间结束时创建新房间,直到网格完成。
 +
**被加压的状态,代码用这个词来表示封闭的房间,实际上与实际的氧气量完全不同。
 +
**存在两种类型的气密块-那些作为一个整体是气密的,所以他们的所有墙壁都是气密的,和其他。该算法在确定块是否密闭以封闭房间时考虑到达块的方向,并使用了一些基于挂载点(块上可以连接到其他块的点)的复杂逻辑。无论如何,具有构建阶段的块只有在最后一个构建阶段时才是密封的。
 +
*当重新计算房间时,如果先前存在的房间被关闭的门分成两部分,则压力将保留在两个新房间中,来自先前占用网格中相同块的房间。这是通过将新创建的房间包含的每个单独块中的空气总量相加来完成的,如果先前存在于相同网格块坐标中的房间。只有在这种情况下,单个块内的空气量才会对任何事情产生影响。如果总数量最终大于房间所能容纳的数量,那么它将被丢弃,所以建造一个块会破坏空气,而不是取代它。
 +
*请注意,关闭的门从两个方向都是密封的。当门关闭时,任何可能包含的空气都被丢弃了,因为它不再是它分开的任何一个房间的一部分——所以是的,每次关门都会破坏那个房间里的空气。如果房间内所有街区的压力都不均匀,那么关上一扇门有时会导致空气不被破坏。
 +
*只有大于一个街区的房间才会被认为存在。如果房间大小的计算结果是一个房间正好有一个块大,那么它将被丢弃,其中的每个氧原子块也将被丢弃。如果你最终在一个完全封闭的1x1x1的房间里,有一个通风口,你还是会窒息的。
 +
*将房间填满100%所需的氧气量取决于房间的网格大小,它是网格大小的一个立方体。网格大小本身虽然不是一个明显的值,取决于很多代码,与氧气无关,但评论似乎表明米是指单位,所以一个单位的氧气应该导致恰好一立方米的空气,一个大块应该包含恰好(2.5米)<sup>3</sup> = 15.625米<sup>3</sup>的空气。
 +
*没有关于加压或减压的效率值。通风口的效率是100%,产生的氧气单位和它们刚刚从房间空气中吸出的氧气单位完全相同。但由于“空气”的记录不像库存氧气那样干净,它最终可能仍不是100%有效。“空气”的产生和破坏非常频繁,特别是当你打开或关闭任何门时,方块的压力不均匀。在压力不均匀的环境中,如果你在1.5秒之前关闭和打开门,会比关门破坏更多的空气。
 +
*没有证据表明在房间里研磨或焊接会直接改变房间的空气含量,但它会改变砌块本身,从而迫使房间重新计算,所以它确实间接影响空气。焊接和研磨导致1x1x1块区域的分离将破坏其中的空气。焊接一个气密块会破坏它所占据的空气。磨块会增大房间面积,降低房间压力。
 +
*当一个新创建的房间检测到它不再是封闭的,而以前占用相同空间的房间是封闭的,它会找到洞,并在洞上创建减压推和粒子效应。除了距离孔洞5米范围内的石块外,该效应影响所有物体,施加的力的大小取决于与孔洞的距离。强制降压不会在被降压后的缸体中产生空气。
  
* Oxygen propagation between producers (farms, generators) and consumers (tanks, vents, cockpits, medical rooms) is determined by conveyor rules, but conveyors themselves do not store, contain, or otherwise mutilate oxygen. Oxygen travels instantly between these endpoints.
+
== List of Airtight blocks ==
* Oxygen is drained uniformly from all non-stockpiling tanks.
+
*参见密封块列表- [[Oxygen/Airtight_List|这里]]
* Consumers are sorted by priority and, if any oxygen production remains, the rest is uniformly distributed among tanks. Oxygen consumption priority is defined by block type, but currently all consuming blocks appear to have a priority of 0.
 
* Non-stockpiling tanks are constantly rebalanced with a delay-over-time, subtracting oxygen from some tanks and adding an equal amount to others.
 
* There's such a thing as 'oxygenated room' object, which contains oxygen block structures, all of which are identical in function (and in volume!) regardless of what actual block occupies the grid coordinate.
 
* The authority on how much oxygen exists is the room object, rather than the block. Rooms are pressurized and depressurized as a whole, blocks track the room's oxygen level and adjust to match it over time. Oxygen, once released into the environment becomes 'air', for lack of a better word -- a considerably different entity, which is still called 'oxygen' in the code -- and individual block's state does not affect the state of the room until rooms are completely recalculated. Vents directly affect the room oxygen amount, rather than the individual block position they're in; they create 'air' and consume 'oxygen', or vice versa when depressurizing. Medical rooms directly fill spacesuits by consuming oxygen from tanks and adding an equal amount to the suit store.
 
* Blocks do have individual air level values and constantly adjust this value to the value that would be average for the entire room based on it's size and total air level. The entire room is supposed to have the pressure equalized in 1.5 seconds -- this is a constant. Notice that this is done by each block individually, i.e. air does not move between blocks -- when a block adds or removes air, it does not consider anything except it's current air level and the room's total level and number of blocks in it.
 
* Air is consumed by characters by directly subtracting it out of the room amount, rather than the current block they're in. Which room they're in is identified by looking for the closest oxygen block structure that is part of a pressurized (i.e. enclosed) 'room'. The code looks at a character's position (a point at your feet) and tries to find which block in which grid to consider by determining which block center the character point is closest to; the first room that is enclosed should be picked, but the order the blocks are considered is dependent on grid orientation, which is why it's possible to stand in an oxygenated room next to a door leading out to vacuum and still suffocate.
 
* Rooms are defined by propagating block neighbours in all cardinal directions, kind of like flood fill algorithm in a 2D paint program, but in 3D with quirks. Blocks diagonally from each other are not neighbours and rooms do not propagate through corners. Some interesting points about this:
 
** Rooms are temporary structures, they are regularly recalculated when blocks are added to the grid, removed from it, or door state changes.
 
** The presence or absence of vents does not affect whether something is considered a room or not. The splitting logic works on the entire grid, starting from a particular corner and trying to create new rooms when others end up until the grid is done.
 
** State of being pressurized, which is the word the code uses to mean an enclosed room, is actually completely distinct from the actual oxygen amount.
 
** Two types of airtight blocks exist - those that are airtight as a whole, so all their walls are airtight, and others. The algorithm considers the direction it arrived to the block from when determining whether the block is airtight for the purposes of enclosing a room, and uses some complicated logic based on mount points (the points on a block where it can connect to other blocks). Blocks with build stages are only airtight when on the last build stage, regardless.
 
* When rooms are recalculated, should a previously existing room be split in two by a closing door, the pressure will be retained in both of the new rooms from the room that previously occupied the same blocks in the grid. This is done by adding up the total amount of air in every individual block that a newly created room contains if a room previously existed in the same grid block coordinates. This is the only time the amount of air within an individual block seems to matter for anything. Should the total amount end up larger than what the room can contain based on the number of blocks in it, it will be discarded, so building a block destroys air, rather than displacing it.
 
* Notice that a closed door is airtight from both directions. When closed, any air that it might have contained is discarded since it's not part of either room it separates anymore -- so yes, closing doors destroys air in that block, every time it happens. Closing a door to a room in which pressure has yet to equalize across all blocks can sometimes result in not destroying air.
 
* Only rooms which end up larger than exactly one block are considered to exist. If the room size calculation ends up with a room exactly one block large then it will be discarded along with every oxygen block that would be part of it. If you end up in a completely enclosed 1x1x1 room with a vent, you will suffocate anyway.
 
* The amount of oxygen it takes to fill a room to 100% depends on the room's grid size, it's exactly a cube of that grid size. The grid size itself though is not exactly an obvious value and depends on a lot of code that has nothing to do with oxygen, but comments seem to indicate meters are meant to be the unit, so one unit of oxygen should result in exactly one cubic meter of air, and one large block should contain exactly (2.5m)<sup>3</sup> = 15.625m<sup>3</sup> of air.
 
* There are no efficiency values surrounding pressurization or depressurization. Air vents are 100% efficient, creating exactly the same number of oxygen units that they just sucked out of the room air. But since 'air' is not kept track of as cleanly as inventory oxygen is, it may still end up not being 100% efficient. 'air' gets created and destroyed pretty frequently, particularly so if you open or close any doors while blocks don't have an even pressure. Closing and opening doors inside environment that is not evenly pressurized can destroy much more air than just closing a door does if you do it before 1.5 seconds elapse.
 
* There is no evidence grinding or welding in a room alters room air content directly, but it alters blocks themselves and thereby forces a room recalculation, so indirectly it does affect air. Welding and grinding that results in separating 1x1x1 block areas will destroy air in it. Welding an airtight block will destroy air it occupied. Grinding a block will increase the room size and decrease room pressure.
 
* When a newly created room detects that it is no longer enclosed while the room that previously occupied the same space was, it finds the holes and creates a depressurization push and particle effect on the holes. The effect affects everything except blocks within a 5m range from the hole and the magnitude of the force applied depends on distance from the hole. Forced depressurization does not create air in the block it depressurized into.
 
  
== List of Airtight blocks ==
 
*See list of blocks that are airtight - [[Oxygen/Airtight_List|Here]]
 
  
 
== See Also ==
 
== See Also ==
Line 104: Line 105:
 
*[[Ice]]
 
*[[Ice]]
 
*[[Hydrogen]]
 
*[[Hydrogen]]
 
[[Category:游戏机制]]
 
{{DISPLAYTITLE:氧气}}
 

Latest revision as of 06:58, 25 July 2023

氧气主要由氧气罐存放

说明

氧气是玩家在生存中呼吸所需的重要资源,没有氧气,无论是通过他们的宇航服还是大气,他们都会死亡。

Vital Statistics

Game version 1.196

Player oxygen consumption rate 0.063 L/s This is a flat rate regardless of activity.
Oxygen Farm max production rate 0.03 L/s
30 mL/s
3.0e-5 m³/s
1.8 L/min
Requires sunlight.
Large grid O2/H2 Generator max production rate 250 L/s 10 L/kg of ice
Small grid O2/H2 Generator max production rate 50 L/s 10 L/kg of ice
Internal suit oxygen tank capacity 60 L 15 minutes and 52 seconds worth of breathing.
Oxygen Bottle item 100 L 26 minutes and 27 seconds worth of breathing.
Large grid Oxygen Tank 100,000 L 18 days, 8 hours, 55 minutes and 1 second worth of breathing.
Small grid Oxygen Tank 50,000 L 9 days, 4 hours, 27 minutes and 30 seconds worth of breathing.
1m3 of 100% room pressure 1 L O2 About 16 seconds worth of breathing.
Large grid block of air 15.625 L 4 minutes and 8 seconds worth of breathing.
Small grid block of air 0.125 L About 2 seconds worth of breathing.
Large grid O2/H2 Generator (4,000 L
4 m³
400 hL
Ice)
108,108 L 19 days, 20 hours, 40 minutes and 1 second of breathing.
Small grid O2/H2 Generator (1,000 L
1 m³
100 hL
Ice)
27,027 L 4 days, 23 hours, 10 minutes and 0 seconds of breathing.

Production

氧气是在氧气发生器处理时产生的。在一些小行星和行星上发现了冰,就像其他种类的矿石一样。氧气农场也只从阳光中产生少量的氧气,但只需要电力而不需要冰。

氧气也可以通过通风口行星的大气中获取,地球外星行星的大气中都有不同程度的氧气。而冰本身也可以直接从行星上以可见的水体的形式收集,这些水体实际上就是冰,可以被加工成氧气和氢。特别是地球富含氧气,这些行星有无限的氧气可用。

Storage

氧气可以储存在氧气罐(在飞船和空间站上)、氧气瓶(物品)和太空工程师的宇航服里。

当玩家戴着头盔时,游戏服中的氧气就会耗尽。剩余的氧气容量显示在玩家HUD的左侧状态面板中[%],以及头盔的当前状态(无论是否佩戴)。宇航服储存的氧气从医疗室驾驶舱战斗机驾驶舱补充,这些氧气连接到传送带系统,带有氧气罐或氧气源(发电机或农场)。如果在玩家的库存中有一个氧气瓶,当宇航服的氧气水平下降到30%以下时,氧气将从瓶中转移到宇航服的氧气储存中。

Consumption

Space Engineer

玩家消耗氧气的速率为0.063 O2 /s。这些氧气是在玩家戴着头盔时从他们的宇航服中获取的,或者是在他们摘下头盔时从他们所在的加压房间中获取的。如果玩家在驾驶舱中没有戴头盔,并且有氧气输送通道,那么氧气就会从输送系统中消耗掉(假设有一个可用的氧气罐)。


如果他们的宇航服中的氧气耗尽,那么当他们戴着头盔时,角色就会慢慢窒息。一个没有戴头盔的球员,而不是在一个加压的房间或一个有传送带进入氧气的驾驶舱也会窒息。如果不立即恢复氧气供应,窒息会导致死亡。

  • 玩家甚至可以窒息在他们的西装,而站在一个加压的房间,如果他们不脱下他们的头盔在西装的内部O2罐耗尽!

Atmosphere

小型船舶大型船舶车站的密闭室(大于单个块)可以通过带传送带的通风口向氧气加压。通风口也可以减压这样一个房间,带氧出来,并返回到输送系统(如果存储可用)。使用图遍历/洪水填充算法将封闭空间填满氧气。该算法遍历体积网格并检查封闭和开放区域。1个氧气储存单位为1米3,有空气块(无论形状)1个]块空气需要15.625个单位的氧气,而一个块则需要0.125个单位的氧气。


角色脱下头盔呼吸的最小安全压力是50%,如果角色在一个有氧气的房间里,但没有达到50%的压力,他们将每秒受到1点生命值的伤害;即使这个房间的压力很小任何高于0%的压力都可以。如果角色在一个没有氧气的房间里(或者一个由于空间泄漏而无法加压的房间),或者在一个开放的空间,比如外部——他们将每秒受到7点生命值的伤害。一名玩家在没有氧气的情况下将会受到7点/秒的伤害,并且有14秒的时间去寻找氧气,否则他们将会死亡。

假设你在一个完全充满氧气的密闭、加压的房间里:

  • 将一个气密块焊接到最后的构建阶段会破坏其块中的空气。
  • 将一个密封块从最后的构建阶段磨到它下面的任何地方,将使房间扩大一个块,降低房间压力。
  • 关上一扇会消灭门块内的空气。
  • 焊接一个砖块或关闭一扇门创造一个1块的“房间”/空间会破坏该空间中的空气。
  • 失去一个完全加压的大栅格空气块会破坏15.625单位的氧气。

Notes on Oxygen Mechanics

  • 氧气在生产者(农场、发电机)和消费者(储罐、通风口、驾驶舱、医务室)之间的传播是由传送带规则决定的,但传送带本身不储存、包含或以其他方式破坏氧气。氧气在这两个端点之间迅速流动。
  • 氧气从所有非储罐中均匀排出。
  • 消费者按优先级排序,如果有氧气生产,其余的将均匀分布在氧气罐中。氧气消耗优先级由块类型定义,但目前所有消耗块的优先级似乎都为0。
  • 非储存罐随着时间的推移不断重新平衡,从一些储存罐中减少氧气,并向其他储存罐中添加等量的氧气。
  • 有这样一种“含氧房间”对象,它包含含氧块结构,所有这些结构在功能(和体积!)上都是相同的,无论实际的块占据网格坐标。
  • 氧气含量的权威是房间物体,而不是积木。房间作为一个整体是加压和减压的,砖块跟踪房间的氧气水平,并随着时间的推移进行调整。氧气一旦释放到环境中,就变成了“空气”,因为没有更好的词了——一个完全不同的实体,在代码中仍然被称为“氧气”——在房间完全重新计算之前,单个块的状态不会影响房间的状态。通风口直接影响房间的氧气量,而不是它们所在的单个块位置;它们产生“空气”并消耗“氧气”,反之亦然。医务室通过消耗储罐中的氧气,并向宇航服储存库中添加等量的氧气,直接填充宇航服。
  • 块确实有单独的空气水平值,并根据它的大小和总空气水平不断调整此值为整个房间的平均值。整个房间的压力应该在1.5秒内相等——这是一个常数。请注意,这是由每个块单独完成的,即空气不会在块之间移动——当一个块添加或移除空气时,它不会考虑任何东西,除了它当前的空气水平和房间的总水平以及其中的块数量。
  • 角色通过直接从房间数量中减去空气来消耗空气,而不是他们当前所在的区域。他们在哪个房间是通过寻找最近的氧气块结构来确定的,这个结构是加压(即封闭)的一部分。“房间”。代码着眼于角色的位置(即你脚边的一个点),并试图通过确定角色点最接近的方块中心来找到要考虑的网格中的哪个方块;应该选择第一个封闭的房间,但考虑方块的顺序取决于网格的方向,这就是为什么站在一个氧气充足的房间里,旁边的门通向真空,仍然可能窒息。
  • 房间是通过在所有基本方向上传播块邻居来定义的,有点像2D绘画程序中的洪水填充算法,但在3D中具有特殊性。彼此对角线的街区不是邻居,房间也不会通过角落传播。这里有一些有趣的观点:
    • 房间是临时结构,当方块被添加到网格中,从中移除或门状态改变时,它们会定期重新计算。
    • 通风口的存在与否并不影响一个东西是否被认为是一个房间。分裂逻辑适用于整个网格,从一个特定的角落开始,并尝试在其他房间结束时创建新房间,直到网格完成。
    • 被加压的状态,代码用这个词来表示封闭的房间,实际上与实际的氧气量完全不同。
    • 存在两种类型的气密块-那些作为一个整体是气密的,所以他们的所有墙壁都是气密的,和其他。该算法在确定块是否密闭以封闭房间时考虑到达块的方向,并使用了一些基于挂载点(块上可以连接到其他块的点)的复杂逻辑。无论如何,具有构建阶段的块只有在最后一个构建阶段时才是密封的。
  • 当重新计算房间时,如果先前存在的房间被关闭的门分成两部分,则压力将保留在两个新房间中,来自先前占用网格中相同块的房间。这是通过将新创建的房间包含的每个单独块中的空气总量相加来完成的,如果先前存在于相同网格块坐标中的房间。只有在这种情况下,单个块内的空气量才会对任何事情产生影响。如果总数量最终大于房间所能容纳的数量,那么它将被丢弃,所以建造一个块会破坏空气,而不是取代它。
  • 请注意,关闭的门从两个方向都是密封的。当门关闭时,任何可能包含的空气都被丢弃了,因为它不再是它分开的任何一个房间的一部分——所以是的,每次关门都会破坏那个房间里的空气。如果房间内所有街区的压力都不均匀,那么关上一扇门有时会导致空气不被破坏。
  • 只有大于一个街区的房间才会被认为存在。如果房间大小的计算结果是一个房间正好有一个块大,那么它将被丢弃,其中的每个氧原子块也将被丢弃。如果你最终在一个完全封闭的1x1x1的房间里,有一个通风口,你还是会窒息的。
  • 将房间填满100%所需的氧气量取决于房间的网格大小,它是网格大小的一个立方体。网格大小本身虽然不是一个明显的值,取决于很多代码,与氧气无关,但评论似乎表明米是指单位,所以一个单位的氧气应该导致恰好一立方米的空气,一个大块应该包含恰好(2.5米)3 = 15.625米3的空气。
  • 没有关于加压或减压的效率值。通风口的效率是100%,产生的氧气单位和它们刚刚从房间空气中吸出的氧气单位完全相同。但由于“空气”的记录不像库存氧气那样干净,它最终可能仍不是100%有效。“空气”的产生和破坏非常频繁,特别是当你打开或关闭任何门时,方块的压力不均匀。在压力不均匀的环境中,如果你在1.5秒之前关闭和打开门,会比关门破坏更多的空气。
  • 没有证据表明在房间里研磨或焊接会直接改变房间的空气含量,但它会改变砌块本身,从而迫使房间重新计算,所以它确实间接影响空气。焊接和研磨导致1x1x1块区域的分离将破坏其中的空气。焊接一个气密块会破坏它所占据的空气。磨块会增大房间面积,降低房间压力。
  • 当一个新创建的房间检测到它不再是封闭的,而以前占用相同空间的房间是封闭的,它会找到洞,并在洞上创建减压推和粒子效应。除了距离孔洞5米范围内的石块外,该效应影响所有物体,施加的力的大小取决于与孔洞的距离。强制降压不会在被降压后的缸体中产生空气。

List of Airtight blocks


See Also