A tag is a piece of data stored in a Halo map. The Halo series defines objects as tags inside of their respective maps. The concept can be most easily described as: there are no Warthogs in Halo, but there are Warthogs in Halo's maps.
Technical details Edit
Tags can be compared to Microsoft Windows' program resources (basically, the icons embedded in program files). They are also similar to computer files in a file system and elements in an XML document. Every single game resource -- from 3D models to textures -- is stored as a tag inside of the map it is used in.
When coding the games in the Halo trilogy, Bungie needed a way to organize and access their content at run-time. They decided to use a system of tags and tag groups, storing game resources as tags and sorting them into groups by type.
When a component of the game needs to use a resource, it is given a reference to the tag instead of a direct reference to the resource. This makes it easier to transform the tag at run-time (e.x. distorting a sound if the game camera is underwater). Also, by defining most game assets as tags, Bungie compartmentalized their code, separating the process of loading the tags and the process of using the tags, thus making it easier and simpler to load a tag.
Because the parts of the game that use the tags (things like the physics engine) are separate from the parts of the game that load the tags (the tag manager), it is possible to optimize the loading of tags without having to modify the parts of the program that use them. This allows features like tag caching to be added and modified while leaving other core parts of the game engine untouched.
Maps and their tags can, in Halo Custom Edition, be edited with a suite of programs called the Halo Editing Kit. These programs include Guerilla, which is used to edit tags directly; Sapien, which is used to place objects in levels; and Tool, which compiles levels into .MAP files.
- Additional information would be very much appreciated. If you have experience modding Halo Custom Edition, please take the time to add more details here.
Below is information on the various types of resources that are defined in tags. Technical details refer to Halo: Combat Evolved and its PC ports unless otherwise stated.
Bitmap tags contain the textures, decals, and other images used in a map.
Gbx_model tags contain the 3D models used in maps. These models are stored in a format called JMS.
Item collections (.item_collection data tags) contain single weapons and items or combinations of weapons and items that can be referenced in order to place weapons and items (such as powerups) in a level.
Lens flare tags are typically used with sky tags.
Scenario tags contain settings for maps. Among other things, scenario tags are used to find the appropriate sky tag for the level and to set which way is north.
Scenarios contain references to sky tags. Apparently, skybox usage is affected by the game mode -- a mapmaker must specify whether the map is single-player or multiplayer when setting up a reference to a sky tag.
Scenarios also contain the data for various objects that are placed in the level. This data can be edited numerically in Guerilla or graphically in Sapien.
Other settings include:
- local north
- Sets which way is north, in degrees. Basically, this acts as an offset for things like the Assault Rifle's compass.
- Starting Equipment
- Allows a mapmaker to alter a player's starting weapons and grenades on a per-gametype basis.
These tags act as spawn points in levels. They are added with Sapien. Their properties include team index, which determines which team owns the spawn point in a team-based game; and settings to enable the spawn point for up to four different gametypes.
Scenario_structure_BSP tags are used for various purposes, including the configuration radiosity lighting in maps. Among other things, they contain references to lightmaps (bitmap tags).
These tags contain:
- References to bitmap tags to be used as lightmaps for radiosity.
- vehicle floor, vehicle ceiling
- Minimum and maximum height limits for vehicles. These effectively act as Y-coordinates for invisible walls that stop vehicles but allow all other objects to pass through.
- default colors
- Several default color settings are provided, allowing mapmakers to give shadows and distant lights a colored tint.
Scenery tags define various decorative objects that may be added to a level with Sapien. Some scenery objects have random permutations; a specific instance of a scenery object can be set to use a specific permutation.
Sky tags define the skyboxes used by the game. They contain references to lens_flare and gbx_model tags, and are in turn referenced by the scenarios that use them. Settings include atmospheric fog.
Sound_environment tags function similarly to sound_looping tags, but they apply to a specific area rather than to the whole level. (Unlike sound_scenery tags, sound_environment tags are not quieter or louder depending on a player's proximity -- they are audible or inaudible, with no variance in their volume.)
These tags are used for background sounds that can be heard regardless of a player's position in a map.
Sound_scenery tags define ambient sounds that may be added to a level with Sapien.
These tags define vehicles. Vehicle settings include an "owner" team and optional gametype-specific limits. Vehicles can be placed for either multiplayer or single-player; the gametype-related settings include spawn options for the different Campaign difficulties.