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

The BSP tag contains geometry/structure data about a level and can be thought of as the "foundation" model without any dynamic objects or scenery decorations. Campaign missions tend to be comprised of multiple BSPs for each large section, while multiplayer maps use just one.

BSPs are modeled in 3D software like Blender.

Zone sets

Unlike Halo 1 and 2, Halo 3 can have multiple BSPs loaded at a time. Combinations of BSPs are called zone sets and are set up in the scenario tag using Guerilla. Zone sets may be created for gameplay purposes, cinematics, or debugging. You can switch between BSPs and zone sets using Ctrl + B in Sapien.

Related script functions and globals:

Function/global

Type

(<long> current_zone_set)

returns the current zone set

Function
(<long> current_zone_set_fully_active)

returns the current zone set

Function
(<void> game_initial_zone_set <long>)

debug map launching: sets the initial bsp for the next map.

Function
(<void> prepare_to_switch_to_zone_set <zone_set>)

prepare for switch to zone set

Function
(<void> switch_map_and_zone_set <string> <long>)

switches to a different scenario and zone set

Function
(<void> switch_zone_set <zone_set>)

switches to a different zone set

Function
(<void> zone_set_trigger_volume_enable <string_id> <boolean>)

enables/disables the trigger volume(s) with the given name that cause zone set switches

Function

Clusters

Clusters are spaces in the BSP which are separated by portals. This is both done as an optimization and to assign localized effects in Sapien, where cluster points are analogous to cluster properties from H1 Sapien. Assignable properties are:

Limits

BSP limitAmount
Maximum Collision Materials Per Structure512
Maximum Structure Surfaces32767
Maximum Structure Surfaces To Triangle Mappings262136
Maximum Surface References per Structure262144
Maximum Lightmap Groups per Structure128
Maximum Indices per Lightmap Group20000
Maximum Lightmaps per Structure128
Maximum Materials per Structure Lightmap2048
Maximum Surfaces per Structure Material20000
Maximum Vertices per Structure Material64000
Maximum Cluster Portals per Cluster512
Maximum Mirrors per Cluster16
Maximum Subclusters per Cluster32768
Maximum Surfaces per Subcluster128
Maximum Surfaces per Cluster32768
Maximum Vertices per Mirror512
Maximum Temporary Clusters per Structure8192
Maximum Clusters per Structure256
Maximum Cluster Data Size65536
Maximum Cluster Portals per Structure512
Maximum Vertices per Cluster Portal128
Maximum Fog Planes per Structure127
Maximum Fog Zones per Structure127
Maximum Weather Palette Entries per Structure32
Maximum Atmosphere Palette Entries per Structure32
Maximum Camera Fx Palette Entries per Structure64
Maximum Weather Polyhedra per Structure32
Maximum Planes per Weather Polyhedron16
Maximum Cluster Sound Palette Entries per Structure64
Maximum Markers per Structure1024
Maximum Lens Flares per Structure256
Maximum Lens Flare Markers per Structure65536
Maximum Decals per Structure6144
Maximum Environment Objects per Structure16384
Maximum Environment Object Palette Entries per Structure100
Maximum Strip Segments per Structure Cluster16384
Maximum Strip Segment References per Structure Cluster16384
Maximum Subcluster Boundaries per Structure Cluster6144
Maximum Lightmap Fragments per Structure Cluster255
Maximum Lightmap Bsp Leaves per Structure Cluster4096
Maximum Lightmap Surfaces per Structure Cluster4096
Maximum Fake Lightprobes per Structure Bsp2048

Instance Geo Limits

BSP limitAmount
Maximum vertices per Instance32767
Maximum indices per Instance64000
Maximum Instance Geometry Definitions per Structure Bsp1024
Maximum Instance Geometry Instances per Structure Bsp4096
Maximum Instance Geometry Instances per Cluster4096

Acknowledgements

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

  • FaberTheCatgirl (Adding Limits to Wiki.)
  • R93_Sniper (Posting Limits to Discord.)