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 compiling a JMS with specially-named(how?) 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. It is unknown if the mass points move with the node in this case.

Structure and fields

Field Type Comments
radius float
moment scale float
mass float
center of mass Point3D
Field Type Comments
x float
y float
z float
density float
gravity scale float
ground friction float

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 depth float
ground damp fraction float
ground normal k1 float

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 k0 float

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 friction float
water depth float
water density float
air friction float
xx moment float
yy moment float
zz moment float
inertial matrix and inverse Block
  • HEK max count: 2
  • Volatile
  • Min: 2
  • Max: 2
Field Type Comments
matrix Matrix
Field Type Comments
elements float[9]
powered mass points Block
  • HEK max count: 32
Field Type Comments
name TagString
Field Type Comments
buffer char[32]

Null-terminated string in 32-char buffer.

flags bitfield
Flag Mask Comments
ground friction 0x1
water friction 0x2
air friction 0x4
water lift 0x8
air lift 0x10
thrust 0x20
antigrav 0x40
antigrav strength float
antigrav offset float
antigrav height float
antigrav damp fraction float
antigrav normal k1 float
antigrav normal k0 float
mass points Block
  • HEK max count: 32
Field Type Comments
name TagString?
powered mass point int16
model node int16
flags bitfield
Flag Mask Comments
metallic 0x1
relative mass float
mass float
relative density float
density float
position Point3D?
forward Vector3D
Field Type Comments
i float
j float
k float
up Vector3D?
friction type enum
Option Value Comments
point 0x0
forward 0x1
left 0x2
up 0x3
friction parallel scale float
friction perpendicular scale float
radius float

Acknowledgements

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

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