object (abstract tag)

Objects are a high-level abstract tag, meaning they serve as a base for many other tag types but cannot be directly created themselves. Generally, they are "things" with a position in the world but are distinct from the "level" itself. Some examples include elevators, trees, warthogs, and the player.

Some capabilities available to objects (though not used by every subtype) are:

Shadows #

For most dynamic objects, Halo uses shadow mapping with their render model, unless the object's "does not cast shadow" flag is true. However, with scenery, shadows are baked into the lightmap using the object's collision geometry instead, regardless of the "does not cast shadow" flag.

Structure and fields #

Field Type Comments
object type enum (little endian?)
  • Internal to the tag and may be hidden in tools.
  • This field's value may change at build time or have precision errors. It should not be used for exact comparisons between tag data.
Option Value Comments
biped 0x0
vehicle 0x1
weapon 0x2
equipment 0x3
garbage 0x4
projectile 0x5
scenery 0x6
device machine 0x7
device control 0x8
device light fixture 0x9
placeholder 0xa
sound scenery 0xb
flags bitfield(16)
Flag Mask Comments
does not cast shadow 0x1
transparent self occlusion 0x2
brighter than it should be 0x4
not a pathfinding obstacle 0x8
bounding radius f32 (world units)
bounding offset
Point3D
  • x: f32
  • y: f32
  • z: f32
origin offset
Point3D
  • x: f32
  • y: f32
  • z: f32
acceleration scale f32
scales change colors u32 (little endian?)
  • Only set when the tag is compiled into a map cache.
pad(40)
pad(84)
render bounding radius f32 (world units)
a in enum
Option Value Comments
none 0x0
body vitality 0x1
shield vitality 0x2
recent body damage 0x3
recent shield damage 0x4
random constant 0x5
umbrella shield vitality 0x6
shield stun 0x7
recent umbrella shield vitality 0x8
umbrella shield stun 0x9
region 0xa
region 1 0xb
region 2 0xc
region 3 0xd
region 4 0xe
region 5 0xf
region 6 0x10
region 7 0x11
alive 0x12
compass 0x13
b in enum
Option Value Comments
none 0x0
body vitality 0x1
shield vitality 0x2
recent body damage 0x3
recent shield damage 0x4
random constant 0x5
umbrella shield vitality 0x6
shield stun 0x7
recent umbrella shield vitality 0x8
umbrella shield stun 0x9
region 0xa
region 1 0xb
region 2 0xc
region 3 0xd
region 4 0xe
region 5 0xf
region 6 0x10
region 7 0x11
alive 0x12
compass 0x13
c in enum
Option Value Comments
none 0x0
body vitality 0x1
shield vitality 0x2
recent body damage 0x3
recent shield damage 0x4
random constant 0x5
umbrella shield vitality 0x6
shield stun 0x7
recent umbrella shield vitality 0x8
umbrella shield stun 0x9
region 0xa
region 1 0xb
region 2 0xc
region 3 0xd
region 4 0xe
region 5 0xf
region 6 0x10
region 7 0x11
alive 0x12
compass 0x13
d in enum
Option Value Comments
none 0x0
body vitality 0x1
shield vitality 0x2
recent body damage 0x3
recent shield damage 0x4
random constant 0x5
umbrella shield vitality 0x6
shield stun 0x7
recent umbrella shield vitality 0x8
umbrella shield stun 0x9
region 0xa
region 1 0xb
region 2 0xc
region 3 0xd
region 4 0xe
region 5 0xf
region 6 0x10
region 7 0x11
alive 0x12
compass 0x13
pad(44)
hud text message index Index: u16
forced shader permutation index Index: u16
attachments Block?
Field Type Comments
marker char[32]
primary scale enum
Option Value Comments
none 0x0
a out 0x1
b out 0x2
c out 0x3
d out 0x4
secondary scale enum
Option Value Comments
none 0x0
a out 0x1
b out 0x2
c out 0x3
d out 0x4
change color enum
Option Value Comments
none 0x0
a 0x1
b 0x2
c 0x3
d 0x4
pad(2)
pad(16)
widgets Block?
Field Type Comments
pad(16)
functions Block?
Field Type Comments
flags bitfield(32)
Flag Mask Comments
invert 0x1
additive 0x2
always active 0x4
period f32 (seconds)
  • Default value: 1.
scale period by enum
Option Value Comments
none 0x0
a in 0x1
b in 0x2
c in 0x3
d in 0x4
a out 0x5
b out 0x6
c out 0x7
d out 0x8
function enum
Option Value Comments
one 0x0
zero 0x1
cosine 0x2
cosine variable period 0x3
diagonal wave 0x4
diagonal wave variable period 0x5
slide 0x6
slide variable period 0x7
noise 0x8
jitter 0x9
wander 0xa
spark 0xb
scale function by enum
Option Value Comments
none 0x0
a in 0x1
b in 0x2
c in 0x3
d in 0x4
a out 0x5
b out 0x6
c out 0x7
d out 0x8
wobble function enum
Option Value Comments
one 0x0
zero 0x1
cosine 0x2
cosine variable period 0x3
diagonal wave 0x4
diagonal wave variable period 0x5
slide 0x6
slide variable period 0x7
noise 0x8
jitter 0x9
wander 0xa
spark 0xb
wobble period f32 (seconds)
wobble magnitude f32 (percent)
square wave threshold Fraction: f32
step count u16
map to enum
Option Value Comments
linear 0x0
early 0x1
very early 0x2
late 0x3
very late 0x4
cosine 0x5
sawtooth count u16
add enum
Option Value Comments
none 0x0
a in 0x1
b in 0x2
c in 0x3
d in 0x4
a out 0x5
b out 0x6
c out 0x7
d out 0x8
scale result by enum
Option Value Comments
none 0x0
a in 0x1
b in 0x2
c in 0x3
d in 0x4
a out 0x5
b out 0x6
c out 0x7
d out 0x8
bounds mode enum
Option Value Comments
clip 0x0
clip and normalize 0x1
scale to fit 0x2
bounds Fraction: f32 (min & max)
  • Default value: 0,1.
pad(4)
pad(2)
turn off with i16
scale by f32
pad(252)
inverse bounds f32 (little endian?)
  • Only set when the tag is compiled into a map cache.
unknown float 2 f32 (little endian?)
  • Only set when the tag is compiled into a map cache.
inverse step f32 (little endian?)
  • Only set when the tag is compiled into a map cache.
inverse period f32 (little endian?)
  • Only set when the tag is compiled into a map cache.
usage char[32]
change colors Block?
Field Type Comments
darken by enum
Option Value Comments
none 0x0
a in 0x1
b in 0x2
c in 0x3
d in 0x4
a out 0x5
b out 0x6
c out 0x7
d out 0x8
scale by enum
Option Value Comments
none 0x0
a in 0x1
b in 0x2
c in 0x3
d in 0x4
a out 0x5
b out 0x6
c out 0x7
d out 0x8
flags bitfield(32)
Flag Mask Comments
blend in hsv 0x1
more colors 0x2
color lower bound
ColorRGB
  • red: f32
  • green: f32
  • blue: f32
color upper bound
ColorRGB
  • red: f32
  • green: f32
  • blue: f32
permutations Block?
Field Type Comments
weight f32
  • Default value: 1.
color lower bound
ColorRGB
  • red: f32
  • green: f32
  • blue: f32
color upper bound
ColorRGB
  • red: f32
  • green: f32
  • blue: f32
predicted resources Block?
PredictedResource

This information was partially generated using Invader tag definitions.

Acknowledgements

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

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