This page is incomplete! You can contribute information using GitHub issues or pull requests.

Machines are used for objects like doors, elevators, light bridges, and the engine covers in The Maw. These objects have open and closed states and the unique capability of conveying bipeds which stand upon them while they move.

The states of machines are not synchronized over Halo's multiplayer netcode, so it is not adviseable to include them in multiplayer maps unless they are automatic doors (which are just based on biped proximinity) or use a synchronization workaround.

Automatic doors

Rather than scripting every door to open and close by trigger volumes, you can use the automatic door feature. If a placed device_machine's does not operates automatically flag is not set, and its tag has "door" machine type, it will automatically open and close when bipeds approach and leave it.

If the tag's automatic activation radius is non-zero, it controls the distance where the door opens. Otherwise the object bounding radius is used instead. Up to 16 collideable bipeds (not vehicles) will be retrieved from the activation radius then checked for the following conditions:

If one of these bipeds passes all the conditions, the device group desired position will be set to 1 which opens the door.

This opening process is not actually performed every tick, but once every 4 ticks as an optimization, with different doors being offset to different ticks so they're not all checked at the same time. When an automatic door is triggered to open, its time spent open counter is set to -3 ticks.

Once a door has remained in the fully open position for its door open time, its desired position is set to closed. This is checked every tick.

Structure and fields

FieldTypeComments
machine typeenum
OptionValueComments
door0x0

Causes this machine to act like an automatic door.

platform0x1
gear0x2
machine flagsbitfield
FlagMaskComments
pathfinding obstacle0x1
but not when open0x2
elevator0x4

Object lighting samples the lightmap near the object, rather than the ground point directly below it like most objects do.

door open timefloat
  • Unit: seconds

Determines how long a door will stay open for once it has reached a fully open position, even once eligible bipeds have left the activation radius.

collision responseenum
OptionValueComments
pause until crushed0x0
reverse directions0x1
elevator nodeuint16
door open time ticksuint32
  • Cache only

This value is derived from door open time and is compared at runtime to the number of ticks a door-typed machine has been fully open. If the door has been open for more ticks than this value, its desired device group position will be set to 0 causing the door to begin closing.

Acknowledgements

Thanks to the following individuals for their research or contributions to this topic:

  • Kavawuvi (Invader tag definitions)
  • kornman00 (Automatic door behaviour)
  • MosesOfEgypt (Tag structure research)