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 pill

Biped bodies are approximated by vertically-oriented capsule/pill shapes for their physical interactions with the level BSP, the model_collision_geometry of objects (like scenery, devices, vehicles), and with other biped physics pills. Note that the physics pill is not used as the "hitbox" for projectiles; a biped's model_collision_geometry is tested for projectile ray casts.

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).

You can enable debug_objects and debug_objects_biped_physics_pills to visualize physics pills.

Autoaim pill

Two Grunts, the player, and an Elite shown with just their node skeletons, physics pills (white), and autoaim pills (red).

Autoaim pills are part of the autoaim system which causes projectiles to fire towards a biped when the pill is with in a weapon's autoaim angle and range. The width of this pill is controlled within this tag, but its height and placement depends on the model:

  • 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.

You can enable debug_objects and debug_objects_biped_autoaim_pills to visualize autoaim pills.

Structure and fields

FieldTypeComments
moving turning speedfloat
biped flagsbitfield
FlagMaskComments
turns without animating0x1
uses player physics0x2

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

flying0x4
physics pill centered at origin0x8
spherical0x10

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 bipeds0x20
can climb any surface0x40
immune to falling damage0x80
rotate while airborne0x100
uses limp body physics0x200
has no dying airborne0x400
random speed increase0x800
unit uses old ntsc player physics0x1000
stationary turning thresholdfloat
  • Unit: degrees per second
biped a inenum
OptionValueComments
none0x0
flying velocity0x1
biped b inenum?
biped c inenum?
biped d inenum?
don't useTagDependency: damage_effect
  • Unused
bank anglefloat
bank apply timefloat
  • Unit: seconds
bank decay timefloat
  • Unit: seconds
pitch ratiofloat
max velocityfloat
  • Unit: world units per second
max sidestep velocityfloat
  • Unit: world units per second
accelerationfloat
  • Unit: world units per second squared
decelerationfloat
  • Unit: world units per second squared
angular velocity maximumfloat
  • Unit: degrees per second
angular acceleration maximumfloat
  • Unit: degrees per second squared
crouch velocity modifierfloat
  • Min: 0
  • Max: 1
maximum slope anglefloat
downhill falloff anglefloat
downhill cutoff anglefloat
downhill velocity scalefloat
uphill falloff anglefloat
uphill cutoff anglefloat
uphill velocity scalefloat
footstepsTagDependency: material_effects
jump velocityfloat
  • Unit: world units per tick
maximum soft landing timefloat
  • Unit: seconds
maximum hard landing timefloat
  • Unit: seconds
minimum soft landing velocityfloat
  • Unit: world units per second
minimum hard landing velocityfloat
  • Unit: world units per second
maximum hard landing velocityfloat
  • Unit: world units per second
death hard landing velocityfloat
  • Unit: world units per second
standing camera heightfloat
  • Unit: world units
crouching camera heightfloat
  • Unit: world units
crouch transition timefloat
  • Unit: seconds

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

standing collision heightfloat
  • Unit: world units

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

crouching collision heightfloat
  • Unit: world units

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

collision radiusfloat
  • Unit: world units

Sets the radius of the physics pill/sphere.

autoaim widthfloat
  • Unit: world units
cosine stationary turning thresholdfloat
  • Cache only
crouch camera velocityfloat
  • Cache only
cosine maximum slope anglefloat
  • Cache only
negative sine downhill falloff anglefloat
  • Cache only
negative sine downhill cutoff anglefloat
  • Cache only
sine uphill falloff anglefloat
  • Cache only
sine uphill cutoff anglefloat
  • Cache only
head model node indexuint16
  • 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 indexuint16
  • 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 pointBlock
  • HEK max count: 2
FieldTypeComments
marker nameTagString

Acknowledgements

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

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