Halo, the computer game developed by Bungie Studios, Microsoft's "Microsoft Game Studios" and "343 Industries", Gearbox Software, and MacSoft, has the following common, playable game versions. The information here is intended to pertain to these versions of this Halo computer game.
Halo 1 "Halo: Combat Evolved" "Halo" for Xbox (Bungie Studios and Microsoft Game Studios) "Halo Demo" for PowerPC Mac (MacSoft), "Halo Trial" for PC (Gearbox) "Halo PC" 18.104.22.1680 for PC (Gearbox / Roger Wolfson), "Halo PC" 22.214.171.1241 for PC (Gearbox / Roger Wolfson), "Halo Full" for PowerPC Mac (MacSoft) "Halo Custom Edition" 126.96.36.1990 for PC (Gearbox / Roger Wolfson), "Halo Custom Edition" 188.8.131.521 for PC (Gearbox / Roger Wolfson) "Halo Universal Binary" for PowerPC and Intel Mac (MacSoft), "Halo Mini Demo" for Intel Mac (nil) Halo 2 "Halo 2" for Xbox (Bungie Studios and Microsoft Game Studios) "Halo 2 Vista" for PC (Microsoft Game Studios)
Bungie Studios developed Halo 1 and Halo 2 with help from Microsoft. Microsoft obtained the copyrights to the Halo game through this partnership and turned it into a franchise through Microsoft Game Studios after the large sales of Microsoft's Xbox console which featured Halo. Gearbox Software developed the Halo 1 game into "Halo PC", which runs on Windows. Gearbox developed a free demo of Halo PC called "Halo Trial". Gearbox also developed "Halo Custom Edition" or "Halo CE" for PC, which is intended to be used by gamers who want to play additional content on their computers. MacSoft ported Gearbox's Halo PC to run on PowerPC-based Apple Macintosh computers as "Halo for Mac", or "Halo PPC", or "Halo Full" to contrast with "Halo Demo" or "Halo Demo PPC". MacSoft developed Halo Demo for Mac to coincide with Gearbox's Halo Trial for PC. When Apple changed from building computers using the Motorola PowerPC ("PPC") processor to the Intel processor, MacSoft greatly overhauled the source code to their Halo for Mac application and developed a Universal Binary version which would run on PowerPC and Intel Macs, called "Halo Universal Binary" or "Halo UB". Some fans of Halo Demo who had experimented with developing software based upon their analyses of the files from Halo PC, Halo Custom Edition, Halo Trial, Halo Demo, and Halo PPC, gathered through Monoman's web site forum, Mac Gaming Mods (http://www.macgamingmods.com/forum). Using that communication venue, nil and others there developed a modified version of MacSoft's Halo Universal Binary and presented it to the community as Halo Mini Demo, or HaloMD. The reason for developing HaloMD was to replace the version of Halo Demo PPC which was becoming unusable as a result of Apple's change to Intel processors. When GameSpy ceased their free service of hosting master server lobby connections, both the Mac and PC versions of Halo were affected. MacSoft was unable to renew a license to the Halo source code and copyrights from Microsoft. Gearbox Software was no longer interested in Halo. Roger Wolfson, who formerly worked at Bungie Studios, updated the Halo PC game and dedicated server program executables to version 01.00.10.0621 and, with help from some members of the various Halo web site communities, changed to a different master server lobby host. Halo Demo, which was greatly popular among Mac gamers, was no longer a viable game for multiplayer due to the PowerPC-to-Intel change and the loss of GameSpy services. Later, after Bungie stopped working with Microsoft, Microsoft set up a subsidiary group called "343 Industries" or "343i" to develop more games for their Halo franchise. In October of 2015, Microsoft suddenly ceased hosting their master server lobby for Halo 2 Vista. Several attempts were made to contact Microsoft about this problem, but correspondence was apparently ignored and unreturned by Microsoft. Today, most Halo gamers who use Microsoft Windows PC are left with Halo PC 184.108.40.2061 and Halo Custom Edition 220.127.116.111, and most of the Apple OS X users are left with the community-developed rendition Halo Mini Demo.
Gearbox Software developed "the Halo Editing Kit", abbreviated as "HEK", for use with Halo Custom Edition, so that Halo gamers using a PC can design new multiplayer maps with the Halo Editing Kit and then run them with Halo Custom Edition. The Halo Editing Kit consists of three main programs: Tool, Guerilla, and Sapien. Tool is a console program which means that it is used for distinctly linear tasks and does not provide a user interface to display. Tool is used to generate intermediary files called "tags" and to compile tags into finished "map cache files", or "maps", which is the file format used by the Halo game to store playable game levels and related asset archives. Guerilla is used to modify asset-based tags that were converted by Tool, and can also be used to generate all the other tag files that do not contain assets converted by Tool. Sapien, which was notably developed over several years by Matthew Noguchi, is the HEK program used to view and develop a game level's scenario.
When you install Halo PC, you will need to use a Microsoft software product license key. The license key that comes with your copy of Halo PC is located on an orange sticker above the disc holder inside the disc case. The product key for Halo 2 Vista is also on an orange sticker above its disc holder inside the disc case. MacSoft's Halo PPC also comes with a CD Key which is located on the rear cover of the manual pamphlet included in the box with the installation disc. The format of the CD keys for Halo PC and Halo 2 Vista is capital letters and numbers of the sequence XXXXX-XXXXX-XXXXX-XXXXX-XXXXX, whereas the format for Halo PPC is capital letters and numbers of the sequence XXXX-XXXX-XXXX-XXXX. Product keys are meant to be privately used by the software to identify a player; each product key should only be used by one person's copy of the Halo software. They abstractly represent a proof of purchase and typically should not be shared. The installation software provides an installation ID, but this is typically ignored; the product key is more significant to the player. While MacSoft supported its Universal Binary version of Halo for Mac, they mentioned details about re-using Halo PPC license keys; Halo UB is a separate purchase from MacSoft that comes with its own license key. Halo Mini Demo, which is essentially a community-modified version of Halo UB, does not require a CD Key or a license key of its players.
Halo Custom Edition's installer requires that you provide a Halo PC license key. Therefore, both Halo PC and Halo CE are considered licensed software, and Halo CE requires that you have a Halo PC product key. However, it is possible to install the Halo Editing Kit without having installed Halo Custom Edition. But Halo Custom Edition is required to play the map files that you have compiled using the Halo Editing Kit. So in essence, the typically installation process is to first install Halo PC, then Halo Custom Edition, and finally the Halo Editing Kit. However, if you do not own a copy of Halo PC and do not have a valid product key for it, you can only install the Halo Editing Kit, and you will not be able to use Halo Custom Edition to play your new map files.
Halo PC's default installation directory is "C:\Program Files\Microsoft Games\Halo". Halo Custom Edition's default installation directory is "C:\Program Files\Microsoft Games\Halo Custom Edition". The Halo Editing Kit installs into the Halo Custom Edition program's folder. Note that Halo is a 32-bit program, and so the default installation directory on 64-bit computers running 64-bit versions of Windows would be "C:\Program Files (x86)\Microsoft Games\Halo" and "C:\Program Files (x86)\Microsoft Games\Halo Custom Edition". The 32-bit programs usually install into the "Program Files (x86)" directory instead of the "Program Files" directory when the Windows operating system is 64-bit. The Halo Editing Kit installs two working directories within the Halo CE directory: a folder called "tags" and a folder called "data". When you use the Tool program to convert data like images and sounds into tags like .bitmap and .sound, you place the data files into folders within the "data" folder, run the appropriate Tool command, and Tool generates the tags and places them within coinciding subdirectories within the "tags" folder. The HEK programs Tool, Guerilla and Sapien are designed to only operate with the "working tags directory". To avoid issues with programs that are hard-coded to use the default installation directories for the Halo games, it is recommended that you use the default installation directories when installing Halo, Halo Custom Edition, and the Halo Editing Kit.
Halo for PC and Mac also install saved game information and certain settings files within the Saved Games and Documents folders within the user's directory. These file paths are hard-coded into the game, so you do not get an option to customize their location. Therefore, if a user file is not in its default location, it will be considered non-existent.
Halo for Xbox uses compression for its files. The Xbox version of the game also uses a different set of shader and model tag types from the Gearbox ports and the MacSoft ports. So for example, the appearance of teleporter entrances varies noticeably between the Xbox version of Halo and PC / Mac versions of Halo. The port of Halo between Xbox and PC / Mac is not exact. Gearbox Software included "optimizations" and MacSoft did its own overhaul with the Halo Universal Binary version. Halo PC and Halo Custom Edition also differ from each other.
The format and directory structure for Halo Xbox files is unique, since it uses compression and optimizations were seen as very necessary. The format of Halo PC files, notably the map files which contain level data, is practically the same as the format of files for Halo Full for Mac. Halo Demo and Halo Trial have about the same format of files as each other, different from the commercial versions Halo PC and Halo Full PPC, but the Halo Demo and Halo Trial programs have different quirks that can cause malformed or illogical map files to work on one but cause the other to crash. Halo Custom Edition uses a different format for its files, with its map files more heavily reliant upon common resource map references. The common resource map files for the games are bitmaps.map and sounds.map, where bitmaps.map contains common image data and sounds.map contains common audio data. Resource maps are used so that each scenario level stored in a playable .map file does not need to contain large swaths of duplicate data.
Playable levels are stored within .map files found within the "maps" folder in each Halo installation directory. (Halo PC uses "MAPS" and other capitalized folder names in the Halo installation directory, but using a case-insensitive computer setup means that "MAPS" is the same as "maps"; following the unix and Internet norm, lowercase is preferable and underscores are often necessary in lieu of spaces in subdirectories and file names. It is recommended to always use lowercase and underscores in lieu of spaces when using the Halo Editing Kit. Also note that unix uses the forward-slash "/" directory separator whereas Windows uses the back-slash "\" directory separator.) The .map files that contain playable information are of one general structure, different from the resource map files bitmaps.map and sounds.map. Halo CE and the HEK have a loc.map file which is used by Tool to help determine which tags are considered common; removing the loc.map file from your Halo CE's "maps" folder will result in Tool copying every tag that a compiled .map file references into the .map file during its compilation. Copying resource tags into a playable .map file is known as "internalizing" the tags. When a map has internalized tags, it potentially contains data in duplicate of the bitmaps.map and sounds.map resource map files -- the bitmaps or sounds from the standalone tags in the HEK tags directory are copied into the map file, even though their data could be already present in the resource maps bitmaps.map or sounds.map. When Tool does not find a loc.map, it will attempt to create a new loc.map, but not give it any data. So to switch back to normal map compilation and internalization functionality, the user would need to place their original loc.map file back into their Halo CE "maps" folder. Normal functionality only "internalizes" novel tag data into a map; only content that is not present within the two standard resource maps. Note that ui.map is also a playable level, but is unique in its use as the main menu for the game. Halo only loads one .map file at a time into memory, although it keeps it in memory once it is loaded. Halo PC and Halo Custom Edition initiate file locks on map files, and Halo Custom Edition only loads all the map files it can find in its "maps" folder all at once when it starts, so that while they are running, the .map file is not really modifiable. Halo Mac and Halo Demo do not lock modifications to the map files, and changes made to the file will be visible after a map file is reloaded, such as when choosing "new game" within the game menu while the map level is being played. Making map files work with Halo Demo or Halo Trial requires changing the format of the map file from its Xbox, commercial, or Custom Edition formats, and renaming the file as "bloodgulch.map" to replace the presence of the former "bloodgulch.map" file located in the game's "maps" folder. Halo Demo and Halo Trial look for the single "bloodgulch.map" as the multi-player level and the single "b30.map" as the single-player level. The "full" commercial versions Halo PC, Halo PPC, and Halo UB contain more information in their resource maps than the Halo Demo and Halo Trial versions. Resource maps are not normally interchangeable in equivalency between ports, just like the other .map files and user files are not interchangeable in equivalency between ports. The exception to this is that certain Halo PC and Halo Mac files, notably their .map files, are practically or exactly equivalent, and at least the .map files between Halo Demo and Halo Trial are very closely similar or exactly the same as each other. So the files between Halo PC and Halo Mac, and between Halo Demo and Halo Trial, are similar, even though the specific behaviors and tolerances for odd values in those files has been seen to vary, notably between Halo Demo and Halo Trial, where a modified .map file might crash on one and run fine on the other. Also, shaders noticeably vary between different game ports: Halo for Xbox, Halo PC, Halo Custom Edition, Halo Trial (although possibly identical to Halo PC), Halo Demo PPC, and Halo Universal Binary each have their own redesign of their shader rendering files.
Playable maps contain game level information stored within tags. Essentially, playable map files consist of Halo Editing Kit tags that have been processed by Tool. When Tool processes tag files from the HEK "tags" directory, compiling them into a map cache file using the "build-cache-file" command, Tool adds additional information to the tags and removes the irrelevant file headers from them. Tool seeks out each tag in the tags directory that is referenced in chain starting with the two primary base tags, which are the globals tag located at "globals\globals.globals", and the scenario tag at hand, which is of a custom location within the tags directory which was specified as a parameter using the "build-cache-file" command. Tool organizes the tag data, sets up a tag index, and applies calculated file data internal offsets for each tag in lieu of the directory paths of the referenced tags which are stored as strings within the HEK format of the tags. Since the map file gets loaded directly into Halo's memory, Tool applies calculated offsets. Note that HEK tag files store data in Big Endian, and byte swapping occurs when Tool handles the map data, so that the Big Endian tag data is converted into Little Endian for Halo to read directly into its Little Endian memory space. This is why, for example, a scenario tag's referenced Binary Space Partition's tag class as "sbsp" for .scenario_structure_bsp HEK tags appears reversed as "psbs" in compiled .map files: the four bytes are reversed in order, from s-b-s-p to p-s-b-s, since the HEK tag file data is in Big Endian byte order and the map cache file's converted tag file data is in Little Endian byte order.
Halo 1 has 83 tag types, or tag classes, that are recognized by the Halo Editing Kit programs. Tags come in different types. For example, vehicle tag types store information about vehicles in the game. Each tag of a certain type provides information for the game to use. When you add a tag to a playable map file, you add information of a specific type to that map, for example, a new kind of vehicle to exist in the game level. The Halo Editing Kit takes all the various tags that are somehow referenced through the main tags, as already mentioned, and compiles them into a playable .map file, and then you can play the level in Halo Custom Edition. Only 78 of the 83 tag classes are directly used with the HEK; the 5 others are somewhat abstract primary or secondary super-classes. Furthermore, not all 78 tag classes are implemented by the Halo game.
Here is a list of all the Halo 1 tag classes, presented as the four-letter tag class ID, the HEK tag file extension, a name for the tag class, and some information describing the role of tags of that type:
actr / .actor / Actor : The "actor" tag type stores information about basic character behavior for artificial intelligence. It is partnered with "actor variant" (actv) which specifies behavior variations in greater detail. actv / .actor_variant / Actor Variant : This is the main tag type that specifies behavior variations for artificial intelligence. ant! / .antenna / Antenna : Bitmap image sequences applied with customized physics to imitate the behavior of an antenna. antr / .model_animations / Animations : Animation data organized according to associated tags and their specific animation types. bipd / .biped / Biped : This is the obje affiliation for actv tags. bitm / .bitmap / Bitmap : One or more compressed images organized by usage. boom / .spheroid / Spheroid : An apparently unused tag class. It may have been a simple class used for hitbox detection, for memory use only. cdmg / .continuous_damage_effect / Continuous Damage Effect : Referenced by lsnd but apparently unused, this would probably be used with ssce. coll / .model_collision_geometry / Collision Model : The collision model can be referenced by subclasses of obje and is stored separately from the visible mod2 or mode tags. It stores health and shield values and associates material damage ratios. colo / .color_table / Color Table : Not often modified. cont / .contrail / Contrail : A contrail is a referenced bitmap rendered at periodic time intervals at a specified marker used by a tag class such as proj. ctrl / .device_control / Control Panel : This is an obje subclass that has details about player-interactive switches for toggling the states of mach tags. deca / .decal / Decal : A decal is a decorative bitm tag reference snapped to sbsp tag geometry. It is stored by a level's scnr tag, and therefore more closely binds the scnr tag with its sbsp tags. DeLa / .ui_widget_definition / UI Widget Definition : A partner tag class with Soul, both of which are the main user interface tag classes. devc / .input_device_defaults / Input Device Defaults : Not often modified; it stores settings for game pad controllers. devi / .device / Device : The tier 2 class for obje subclasses related to machines. Memory use only. dobc / .detail_object_collection / Detail Object Collection : Similar to deca, but rendered perpendicularly to the sbsp geometry and uses bitmap sprites for camera-facing rendering. effe / .effect / Effect : This is the main class for particle effects and their associated sounds. It can be used in unorthodox ways, given its support for spawning a variety of tag classes. It supports periodicity and vectors. In complex references, can overwhelm the game's memory table management, resulting in memory leaks and rendering snafus. elec / .lightning / Lightning : Similar in behavior to ant!. eqip / .equipment / Equipment : This is the obje subclass for an obtainable dumb item in the game and is used so that the player can gather ammunition apart from a full-fledged weap tag. It is also used for power-ups. flag / .flag / Flag Cloth : This lets you customize the flag cloth for Capture The Flag game types. fog / .fog / Fog : This is associated with a "fog plane" in the sbsp geometry, rather than the generic "fog ambience" used by sky. font / .font / Font : Not often modified. This stores information about textual character glyphs used when the game shows text. foot / .material_effects / Material Collision Effects : Effe and snd! associations with collision events between obje-related tags (and their coll's) and sbsp collision surfaces. Examples are footstep sounds and footprints, and tire tracks and skid sounds. garb / .garbage / Garbage : This is a simple obje subclass like scen, and it is removed from the game's rendering table after a short time. glw! / .glow / Particle Glow Effect : Glowing particle effects associated with markers, primarily used to achieve the energy sword weapon's glowing appearance. grhi / .grenade_hud_interface / Grenade HUD Interface : The customization for the player's visible grenade heads-up display. hmt / .hud_message_text / HUD Messages : Text shown on the player's visible heads-up display. Characters are stored differently than with ustr. hudg / .hud_globals / General HUD Settings : This is the main class for modifying the player's visible heads-up display. hud# / .hud_number / HUD Numbers Settings : Number glyphs shown on the player's visible heads-up display, for example, the number glyphs showing the distance to the next waypoint marker on the player's HUD. item / .item / Item : The tier 2 class for obje subclasses related to equipment. Memory use only. itmc / .item_collection / Respawning Objects Collection : Multiplayer games use this to respawn obje subclasses like weap and eqip. jpt! / .damage_effect / Damage Effect : Damage values applied to coll tags within a specified area of effect. Negative values can "heal"; extreme values cause unusual results. lens / .lens_flare / Lens Flare : A screen effect often used with ligh, such as the light source in a sky. lifi / .device_light_fixture / Light Fixture : This is the obje and devi subclass representing decorative light fixtures that can be toggled on and off and often associate ligh tags that affect the radiosity lighting of the sbsp. ligh / .light / Light : A visible light source. lsnd / .sound_looping / Looping Sound : Snd! references that can be customized to repeat ad nauseum, such as could be used to simulate ambient noises and music. mach / .device_machine / Machine : Stationary objects that can be animated along a path and toggled on and off using a ctrl, such as for elevators and doors. matg / .globals / General Game Settings : The main tag class that specifies generic game settings for a map cache file. It is stored separately from scnr because matg has settings normalized for consistency in gameplay mechanics, such as player movement speed. metr / .meter / Meter : A special class used to simulate a meter on the heads-up display, such as with the player's shield level visualization. mgs2 / .light_volume / Volumetric Light : Applies lit blobs to mod2 or mode markers, such as for the plasma weapon projectiles. mod2 / .gbxmodel / Gearbox PC Model : The main visual render model class used with the PC version of the game. Uses uncompressed vertices. mode / .model / Xbox Model : The main visual render model class used with the Xbox version of the game. Uses compressed vertices relativized between -1 and 1. mply / .multiplayer_scenario_description / Multiplayer Scenario Descriptions : Used to make introductory level information, including a preview bitm and description. ngpr / .preferences_network_game / Multiplayer Character Settings : Can store default user profile information, such as player colors. Not often modified, since it would probably only be customized with a new user interface map cache file. obje / .object / Object : The tier 1 class that contains over 10 subclasses related to objects managed by the game's memory tables. For memory use only. part / .particle / Particle : Used to simulate special particle effects. pctl / .particle_system / Particle System : Used with part and pphy. phys / .physics / Object Physics : The game supports phys associated with vehi; this is what can be used to customize vehicle physics. plac / .placeholder / Object Placeholder : Unused. An obje subclass probably for development purposes. pphy / .point_physics / Particle Point Physics : Specifies physics simulation information for part and pctl. proj / .projectile / Projectile : An obje subclass used to represent a projectile fired from a weap. rain / .weather_particle_system / Weather : A viewer-facing camera overlay rendered particle effect that can be used to simulate raindrops in rainy weather or bubbles and dirt underwater. sbsp / .scenario_structure_bsp / Scenario Environment Structure : The terrain for a level, including its visible and physical geometry, portal and lightmap groupings, and fog and lsnd references. Groupings such as the sky use indices from the scnr. scen / .scenery / Scenery : The simplest obje subclass that can be used to represent stationary objects such as rocks and trees. If animated, the current animation frame will not synchronize in a multiplayer game. scex / .shader_transparent_chicago_extended / Extended Transparent Shader : A PC version of a complex transparent shader. schi / .shader_transparent_chicago / Transparent Shader : A PC version of a simple transparent shader. scnr / .scenario / Scenario Environment Configuration : This is the main tag class for a playable level, and it associates all the other tag classes that would most often be customized in a multiplayer map cache file. senv / .shader_environment / Environment Shader : This shader class is used with sbsp. sgla / .shader_transparent_glass / Transparent Glass Shader : This shader class is used to render highly-transparent faces, such as with glass. shdr / .shader / Generic Shader : This is the superclass for shader classes. For memory use only. sky / .sky / Sky : Stores information about the light source(s) and simple fog along with the reference to the visible model and optional animations used with a rendered sky. smet / .shader_transparent_meter / Transparent Meter Shader : Special shader used with non-HUD meters, such as those on the warthog's driver panel and the plasma weapons' heat and charge meters on their first-person models. snd! / .sound / Sound : Customize a compressed audio file's playback. snde / .sound_environment / Ambient Effect : A special audio effect for DirectSound audio playback which uses echo effects to simulate physical space ambience. soso / .shader_model / Model Shader : Used for simple model appearances, such as with scen. sotr / .shader_transparent_generic / Generic Transparent Shader : A special Xbox shader class which is more advanced than its scex PC counterpart. Soul / .ui_widget_collection / UI Widget Collection : Used with DeLa to customize the elements of a player-interactive user interface. spla / .shader_transparent_plasma / Transparent Plasma Shader : A special model shader used for plasma-like rendering effects. ssce / .sound_scenery / Sound-Emitting Scenery : The same thing as scen, but just separated for purposes of keeping things organized; you would normally reference an lsnd as an attachment, although you could do the same with a scen tag. str# / .string_list / String References : Not usually modified. Some base tags use this as a kind of tagc of strings. swat / .shader_transparent_water / Transparent Water Shader : A special shader associated with the "water" material which is used to transparently render waves and ripples as if it were used for the surface of a volume of water. tagc / .tag_collection / Tag Collection : A base tag class not usually modified. This usually is and/or contains tags that often have their tag path name strings hardcoded in the game. trak / .camera_track / Camera Track : Indicates how the 3D camera view should behave, such as its constraints and relative velocity when revolving around a point. udlg / .dialogue / Unit Dialogue : A list of snd! references used at actv voice trigger moments. unhi / .unit_hud_interface / Unit HUD Interface : A very detailed tag class for customizing the basic heads-up display in the game. Supports overriding through wphi. unit / .unit / Unit : A tier 2 obje subclass used to group unit classes, such as bipd and vehi. For memory use only, despite the odd possible reference to it in Guerilla, such as in the actv tag class -- but unit is unsupported. ustr / .unicode_string_list / Unicode String References : Groupings of textual strings encoded differently from hmt . Used frequently. vcky / .virtual_keyboard / Virtual Keyboard : Not often modified. Associates a font with a keyboard character. vehi / .vehicle / Vehicle : An obje subclass that is used to represent a player-controllable vehicle. Uniquely synchronized in multiplayer games. weap / .weapon / Weapon : An obje subclass that is used to represent weapons that can be picked-up off a collision plane and wielded. Represent themselves as ammunition when the player is already wielding that weapon. wind / .wind / Wind : Some basic values that are used to simulate wind as it would interact with flag and cont. wphi / .weapon_hud_interface / Weapon HUD Interface : An override of unhi that is assigned while wielding a weap.
The .device, .item, .object, .shader and .unit tags are the five abstract tag super-classes that are primary or secondary of these 83 mentioned tag classes; the actual usable tag classes are only 78 and are tertiary tag classes. Primary, secondary, and tertiary refer to the tag hierarchy within a map cache file. Primary and secondary tag super-classes describe the general categories of certain tertiary tag classes. Primary means the most general categorization and secondary is a more specific categorization, both describing the tertiary specific tag class. For example, both vehicles of the vehi tag class and bipeds of the bipd tag class are of the primary obje object tag class and the secondary unit tag class. So this essentially means that the game engine interprets these two specific tertiary tag classes as objects, and more specifically, units, and they both include object and unit sections of information within their details. As another example, weapons are objects, but instead of being units, they are items. So the primary abstract tag class for a weap tag is obje and the secondary abstract tag class is item. When a tag only contains one abstract class, it is listed as the secondary class, since there is no more-generic primary tag class applicable; so for example, a soso shader model is a tertiary class with a single abstract class of shdr shader, and there is no other abstract class for soso, and so shdr is the secondary abstract super-class for soso shader model tag types. Obje is not always a primary tag class: for example, with scen scenery, it is the only abstract class, and so is listed as a secondary tag super-class for scenery tag types. It helps to visualize it in this way: 3 columns, numbered from left to right as 3 (tertiary), 2 (secondary) and 1 (primary), the first containing the actual tag class in question and the other two columns containing optional secondary and primary tag super-classes by which the tag class in question can be categorized. For example:
tertiary main class / secondary abstract class / primary abstract class bitm / - / - matg / - / - soso / shdr / - (soso Shader Model is a kind of shdr Generic Shader) scen / obje / - (scen Scenery, such as rocks and trees, is a kind of obje Object) bipd / unit / obje (bipd Biped, such as the player character, is a kind of unit Unit, and also more generically a kind of obje Object)
Here is an actual 832-byte segment from the tag index within the a10.map playable map file:
mtibˇˇˇˇˇˇˇˇ∫.‚óÓ[email protected]‡:[email protected] ososrdhsˇˇˇˇª/‚«Ó[email protected]º;[email protected] mtibˇˇˇˇˇˇˇˇº0‚ÒÓ[email protected][email protected] ososrdhsˇˇˇˇΩ1‚�Ô[email protected]>[email protected] ososrdhsˇˇˇˇæ2‚NÔ[email protected]�@[email protected] ososrdhsˇˇˇˇø3‚vÔ[email protected]¿[email protected] ihcsrdhsˇˇˇˇ¿4‚£Ô[email protected]@ mtibˇˇˇˇˇˇˇˇ¡5‚ÕÔ[email protected]ú[email protected] rtnaˇˇˇˇˇˇˇˇ¬6‚˜Ô[email protected]@ hgilˇˇˇˇˇˇˇˇ√7‚�[email protected]`[email protected] snelˇˇˇˇˇˇˇˇƒ8‚;[email protected]¿[email protected] mtibˇˇˇˇˇˇˇˇ≈9‚h[email protected]@ necsejboˇˇˇˇ∆:‚ù[email protected]\[email protected] 2domˇˇˇˇˇˇˇˇ«;‚ [email protected]¿[email protected] ososrdhsˇˇˇˇ»<‚˝[email protected]¿[email protected] mtibˇˇˇˇˇˇˇˇ…=‚3Ò[email protected]@ mtibˇˇˇˇˇˇˇˇ >‚ÉÒ[email protected]Ñ[email protected] mtibˇˇˇˇˇˇˇˇÀ?‚ŸÒ[email protected]ê[[email protected] ihcsrdhsˇˇˇˇÃ@‚�Ú[email protected]\[email protected] mtibˇˇˇˇˇˇˇˇÕA‚7Ú[email protected]¥][email protected] hgilˇˇˇˇˇˇˇˇŒB‚XÚ[email protected]ê^[email protected] snelˇˇˇˇˇˇˇˇœC‚?Ú[email protected][email protected] dpibtinuejbo–D‚®Ú[email protected]`[email protected] 2domˇˇˇˇˇˇˇˇ—E‚√Ú[email protected]@ ososrdhsˇˇˇˇ“F‚ﬁÚ[email protected]<ä[email protected] mtibˇˇˇˇˇˇˇˇ”G‚�Û[email protected]Ùã[email protected]
You can see how the four-letter tag classes of each indexed tag, presented here as one entry per line, shows the tag classes reversed, having been byte-swapped from the HEK tag files in Big Endian to the Little Endian map cache file format suitable for reading into game memory. The first four bytes are the tertiary column, the second are the secondary column and the third are the primary column. The first entry, "mtib" is a bitm Bitmap tag entry which contains no super-classes. The second entry is "ososrdhs", which is soso Shader Model of the super-class shdr Generic Shader and no other abstract class, so there is nothing listed for the primary abstract tag class. Moving down, you can see that "necsejbo" means that scen Scenery tag classes have a single abstract class, therefore given as the secondary super-class, which is obje Object. Towards the end of the example, you see "dpibtinuejbo" or obje - unit - bipd, where the primary abstract class is obje Object, the secondary, more specific abstract class is unit Unit, and the actual tag class, the tertiary class, is bipd Biped.
13 tag classes have obje (object) abstract super-classes. They are listed here according to their internal indices:
-1 / obje / .object / Object 0 / bipd / .biped / Biped 1 / vehi / .vehicle / Vehicle 2 / weap / .weapon / Weapon 3 / eqip / .equipment / Equipment 4 / garb / .garbage / Garbage 5 / proj / .projectile / Projectile 6 / scen / .scenery / Scenery 7 / mach / .device_machine / Machine 8 / ctrl / .device_control / Control Panel 9 / lifi / .device_light_fixture / Light Fixture 10 / plac / .placeholder / Object Placeholder 11 / ssce / .sound_scenery / Sound-Emitting Scenery
10 tag classes have shdr (shader) abstract super-classes. They are listed here according to their internal indices:
-1 / shdr / .shader / Generic Shader 3 / senv / .shader_environment / Environment Shader 4 / soso / .shader_model / Model Shader 5 / sotr / .shader_transparent_generic / Generic Transparent Shader 6 / schi / .shader_transparent_chicago / Transparent Shader 7 / scex / .shader_transparent_chicago_extended / Extended Transparent Shader 8 / swat / .shader_transparent_water / Transparent Water Shader 9 / sgla / .shader_transparent_glass / Transparent Glass Shader 10 / smet / .shader_transparent_meter / Transparent Meter Shader 11 / spla / .shader_transparent_plasma / Transparent Plasma Shader
There are 4 types of devi (device) tags, but they are not apparently indexed. They are listed here:
devi / .device / Device ctrl / .device_control / Control Panel lifi / .device_light_fixture / Light Fixture mach / .device_machine / Machine
There are 4 types of item (item) tags, but they are not apparently indexed. They are listed here:
item / .item / Item eqip / .equipment / Equipment garb / .garbage / Garbage weap / .weapon / Weapon
There are 3 types of unit (unit) tags, but they are not apparently indexed. They are listed here:
unit / .unit / Unit bipd / .biped / Biped vehi / .vehicle / Vehicle
More information about: