Physics tags characterize the dynamic physics and propulsion of vehicles. They are essentially a collection of spherical mass points. Since vehicles can have both model_collision_geometry and physics, each tag is used in different situations:

Physics tags are created by importing a JMS with specially-named markers parented to nodes. The markers become mass points.

Mass points

Mass points (also known as physics spheres) are spherical volumes with mass and density. They can have various types of friction and may provide powered impulse for flight and driving.

Even though mass points are parented to nodes, they do not move with base, overlay, or aiming animations unlike model_collision_geometry. However, when mass points are parented to nodes they can be used to engage a vehicle's suspension animation (e.g. the Warthog and Scorpion). The animation tag specifies the compression and extension depth. The mass points move with the node in this case.

Related HaloScript

Function/global

Type

(debug_material_effects [boolean])

Displays cyan spheres wherever material_effects are being generated, like under the player's feet and where physics spheres intersect with the BSP or model_collision_geometry.

Global
(debug_objects_physics)

When debug_objects is enabled, displays physics mass points as white spheres.

Global
(debug_objects_position_velocity)

When debug_objects is enabled, displays red, green, and blue object-space reference axes and a yellow velocity vector on each object.

Global
(debug_objects_unit_vectors)

When debug_objects is enabled, displays white and red vectors on objects. Their meaning is unknown.

Global

Structure and fields

FieldTypeComments
radiusfloat
moment scalefloat
massfloat
center of massPoint3D
FieldTypeComments
xfloat
yfloat
zfloat
densityfloat
gravity scalefloat
ground frictionfloat

A coefficient which modifies the amount of friction applied to the vehicle when colliding with "ground" surfaces, which may just mean any BSP surface which is not a water plane. It is unknown if this also modifies friction on scenery collisions. A typical value from the Warthog is 0.23.

ground depthfloat
ground damp fractionfloat
ground normal k1float

Used to determine how steep of a surface the vehicle can climb before its powered mass points no longer have an effect. A typical value is ~0.7, while a value near 1.0 allows vertical climbing assuming sufficient friction.

ground normal k0float

This is also used to determine how steep of a surface the vehicle can climb and seems to be some sort of lower range bound for fading out powered mass points. A typical value is ~0.5, with -1.0 allowing vertical wall climbing.

water frictionfloat
water depthfloat
water densityfloat
air frictionfloat
xx momentfloat
yy momentfloat
zz momentfloat
inertial matrix and inverseBlock
  • HEK max count: 2
  • Volatile
  • Min: 2
  • Max: 2
FieldTypeComments
matrixMatrix
FieldTypeComments
elementsfloat[9]
powered mass pointsBlock
  • HEK max count: 32
FieldTypeComments
nameTagString
flagsbitfield
FlagMaskComments
ground friction0x1
water friction0x2
air friction0x4
water lift0x8
air lift0x10
thrust0x20
antigrav0x40
antigrav strengthfloat
antigrav offsetfloat
antigrav heightfloat
antigrav damp fractionfloat
antigrav normal k1float
antigrav normal k0float
mass pointsBlock
  • HEK max count: 32
FieldTypeComments
nameTagString
powered mass pointint16
model nodeint16
flagsbitfield
FlagMaskComments
metallic0x1
relative massfloat
massfloat
relative densityfloat
densityfloat
positionPoint3D?
forwardVector3D
FieldTypeComments
ifloat
jfloat
kfloat
upVector3D?
friction typeenum
OptionValueComments
point0x0
forward0x1
left0x2
up0x3
friction parallel scalefloat
friction perpendicular scalefloat
radiusfloat

Acknowledgements

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

  • Conscars (Mass point node testing)
  • Kavawuvi (Invader tag definitions)
  • MosesOfEgypt (Tag structure research)