With survival games moving into more and more varied locations and environments, a lot of systems that were once used in smaller isolated cases are now being taken in new directions, and in some cases are even becoming major systems. One such example of this is oxygen management. Whereas it used to only be an issue when your player was underwater, now, with the event of space-environment survival games like Space Engineers, No Man’s Sky and more, games often have oxygen management as a constant push on the player. As such, the Oxygen System included with the MSGT is suited to both methods of use.
The player oxygen system requires the player controller to have a C_Manager-Health component attached to it to function properly. Optionally, it can also interact with the C_Manager-Stamina component and C_Manager-VisualFeedback component.
After adding the C_Manager-Oxygen component to your player controller, the component merely needs to be initialized properly. By default, this is all handled automatically in the included SurvivalController blueprint by the Initialize function, which is run on Event BeginPlay.
If attempting to implement the oxygen manager in your own controller, you will be required to run the component’s function called Event Initialize on startup, parsing a reference to the player controller.
If feedback is desired on the HUD UI or via the visual feedback system, then those respective components must also be attached to the controller and references must be set within the oxygen manager. This is also true for the stamina manager is a stamina limitation impact is desired upon players entering asphyxiation. This is all automatically done via the Initialize function within the blood manager, assuming the required components are attached to its parent controller.
By default, the oxygen system is set to not be on always drain (ie. it is set for use in minority oxygen-free zones, such as underwater in a land-based world). If you want it to be set to always drain, such as in completely underwater worlds, or in space environments, please see the settings below.
|Disable System||This checkbox will disable the oxygen system and is useful in testing/debugging scenarios.||False|
|Always Drain||If set to true, the oxygen system will always drain unless told not to. This is used for space environments as well as for worlds that are mostly underwater.||False|
|Max Player Oxygen||This value determines what the maximum amount of oxygen the player has is. In most cases, this should not need to be changed for survival game mechanics.||100.0|
|Update Frequency||This value determins how many times, per second, this system updates. Higher values will result in smoother mechanics and nicer visual feedback results, but may impact performance (both locally and networked).||20|
|Drain Rate||This value determines how much oxygen the player will lose each section when oxygen is draining.||0.5|
|Recovery Rate||This value determines how much oxygen the player recovers, per second, when oxygen drain is not active.||5.0|
|Limit Stamina||If enabled, when the player is asphyxiating (ie. has no oxygen left), they will suffer a stamina penalty, which will lower their maximum stamina value.||False|
|Stamina Reduction||The size of the penalty applied to stamina whilst asphyxiating.||25.0|
|Asphyxiation Damage||This value determins how much damage, per second, the player will receive whilst asphyxiating.||5.0|
|Low Oxygen Visual Effect||The visual effect (if any) used to indicate to the player low oxygen values. Will come into effect when the player's oxygen crosses the Visual Effect Threshold.||Mask Distortion|
|Visual Effect Threshold||Once the player's oxygen drops below this level, the Low Oxygen Visual Effect (if any is set) will kick in.||25.0|
As of the current version of the MSGT (version 18.104.22.168), the system has no wired function for triggering a change of state for the player being in or out of a zero oxygen environment. This will be added in 22.214.171.124 and this documentation will change once that version becomes available. In the meantime, this effect can still be achieve by changing the boolean InOxyFree in the oxygen manager upon entering/exiting the zero oxygen zone. The oxygen manager will automatically handle the transition.
Being that player oxygen levels can decay quite rapidly when players have multiple wounds, and that it requires a specific item, it is recommended to have this system as one of the systems with a higher update frequency as lower rates may result in slower feedback to your players and a less visually cohesive experience.