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

Biped tags represent the "bodies" of AI- and player-driven characters. They can take on a wide range of forms, like flood infection forms, sentinels, marines, grunts, and scripted characters like Cortana. Invisible bipeds are even used to pilot dropships and detecting explosive damage to the ship's reactor in The Maw. Bipeds are a type of unit.

On its own, a biped will not do anything unless being controlled by a player or actor_variant. This tag defines key physical characteristics like height, speed, collision, and appearance.

Physics and autoaim pills

Biped bodies are approximated with "pills" for physics and autoaim, rather than using their collision model. These simple capsule shapes are sufficient for these purposes and efficient to test against. Pills are parameterized by radius/width and height.

Physics pills are how the biped collides with model_collision_geometry and the BSP. It is not used as the "hitbox" for projectiles. Its width depend on this tag's collision radius. The height depends on standing and crouching collision heights only if the biped uses player physics, and otherwise has 0 height (making the pill a sphere).

Autoaim pills are part of the autoaim system which causes projectiles to fire towards a physics pill when the pill is with in a weapon's autoaim angle and range. The width of this pill is controlled solely by this tag, however its height depends:

  • If the biped has head and pelvis nodes...
    • If the spherical flag is set, then the pill is a sphere at the midpoint between head and pelvis.
    • Otherwise, the capsule spans between the head and pelvis nodes.
  • If the biped doesn't have both of these nodes, the autoaim pill is vertically-aligned and its height is a fraction of the physics pill's. It will be slightly elevated from the physics pill's base.

Structure and fields

This tag inherits fields from unit which are not shown here. See the parent's page for more information. The following information is unique to the biped tag.

Field Type Comments
moving turning speed float
biped flags bitfield
Flag Mask Comments
turns without animating 0x1
uses player physics 0x2

The physics pill height will be controlled by standing and crouching collision heights rather being a simple sphere.

flying 0x4
physics pill centered at origin 0x8
spherical 0x10

The autoaim pill is a sphere at the midpoint between the head and pelvis nodes, rather than a capsule spanning the head and pelvis nodes.

passes through other bipeds 0x20
can climb any surface 0x40
immune to falling damage 0x80
rotate while airborne 0x100
uses limp body physics 0x200
has no dying airborne 0x400
random speed increase 0x800
unit uses old ntsc player physics 0x1000
stationary turning threshold float
  • Unit: degrees per second
biped a in enum
Option Value Comments
none 0x0
flying velocity 0x1
biped b in enum?
biped c in enum?
biped d in enum?
don't use TagDependency: damage_effect
  • Unused
bank angle float
bank apply time float
  • Unit: seconds
bank decay time float
  • Unit: seconds
pitch ratio float
max velocity float
  • Unit: world units per second
max sidestep velocity float
  • Unit: world units per second
acceleration float
  • Unit: world units per second squared
deceleration float
  • Unit: world units per second squared
angular velocity maximum float
  • Unit: degrees per second
angular acceleration maximum float
  • Unit: degrees per second squared
crouch velocity modifier float
  • Min: 0
  • Max: 1
maximum slope angle float
downhill falloff angle float
downhill cutoff angle float
downhill velocity scale float
uphill falloff angle float
uphill cutoff angle float
uphill velocity scale float
footsteps TagDependency: material_effects
jump velocity float
  • Unit: world units per tick
maximum soft landing time float
  • Unit: seconds
maximum hard landing time float
  • Unit: seconds
minimum soft landing velocity float
  • Unit: world units per second
minimum hard landing velocity float
  • Unit: world units per second
maximum hard landing velocity float
  • Unit: world units per second
death hard landing velocity float
  • Unit: world units per second
standing camera height float
  • Unit: world units
crouching camera height float
  • Unit: world units
crouch transition time float
  • Unit: seconds

Controls how long it takes to transition between standing and crouching positions.

standing collision height float
  • Unit: world units

Sets the height of the physics pill when the biped uses player physics and is standing.

crouching collision height float
  • Unit: world units

Sets the height of the physics pill when the biped uses player physics and is crouching.

collision radius float
  • Unit: world units

Sets the radius of the physics pill/sphere.

autoaim width float
  • Unit: world units
cosine stationary turning threshold float
  • Cache only
crouch camera velocity float
  • Cache only
cosine maximum slope angle float
  • Cache only
negative sine downhill falloff angle float
  • Cache only
negative sine downhill cutoff angle float
  • Cache only
sine uphill falloff angle float
  • Cache only
sine uphill cutoff angle float
  • Cache only
head model node index uint16
  • Cache only

Index of the "head" model node used to create the biped's autoaim pill. The pill also uses the "bip01 pelvis" node.

pelvis model node index uint16
  • Cache only

Index of the "bip01 pelvis" model node used to create the biped's autoaim pill. The pill also uses the "bip01 head" node.

contact point Block
  • HEK max count: 2
Field Type Comments
marker name TagString
Field Type Comments
buffer char[32]

Null-terminated string in 32-char buffer.

Acknowledgements

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

  • Kavawuvi (Invader tag definitions)
  • MosesOfEgypt (Tag structure research)