Reply to .map Modding - Getting Started

Lord Zedd
By Lord Zedd,
12. General Modding Information Let's start with some lingo:   Plugins: External XML files that define the layout and content of a tag so Assembly can display tags correctly. They can be edited by anyone and doing so is encouraged (make sure to send me any changes so they can get added officially ). Updating them is important as they can sometimes include things that improve tag extraction/injection and give names to previously unknown values to play around with.   Tags: Maps are made up of thousands or more of these, and they control a majority of the game itself. For example every weapon is a tag, which in turn references more tags and so on.   Tag Classes: Each tag has a class, which corresponds to the layout and content of a tag. Every tag in a class has the same layout. In tutorials tags are usually referred to by their class as they could be applied to any tags under that class, or sometimes a class is only meant to have one related tag in a map.   Tag Blocks: These are found inside tags, and are typically used for repetitive data. So instead of a long list, the data is broken up in however many sections. Looks like this:   So the name of the block is "AI Properties", and the count is 1 (See parenthesis on the right), and the current index is 0 of 0 (Counting starts at 0 instead of 1)   If you ever modded in the past, you might know these as "reflexives" but that name as it turns out is incorrect. You may see the term used in older tutorials so just know that they refer to the same thing.   TagRef: Tag Reference. Found in tags, they are used to reference another tag. To make an example, a weapon tag contains the tag reference for its projectile.   Locales: Refers to the text in a map, and can be modified in the "Strings" tab in Assembly. Locales are split up by language, and then further split up via UNIC tags by application. Each locale is also paired with a StringID so they can be referenced in tags. A StringID can be attached to more than one string, granted the strings are in different UNIC tags. You are limited to the contents of the UNIC as far as replacing, but you are free to add to it with the String Editor.   StringID: A label of sorts found in tags. Comes in 2 flavors, and are made up of a 32 bit index value. There are global StringIDs which occupy larger indexes and are always the same value between each map, to be used by the engine (xex) for various reasons, and then there are standard StringIDs that are made up of things unique to tags, like object names or object variants.   Now some common tags:   SCNR/Scenario: The backbone tag of a map, defines all the basic information for the map like object spawns, AI spawns, death barriers, forge palettes, scripts, and more. SCNR references more crucial tags like the maps SBSPs and Lightmaps. You typically can't poke anything here without restarting the mission with the start menu or poking a checkpoint reload byte in multiplayer (more on that later)   MATG/Globals: Defines common values that are the same in each map, such as which biped you play as and your movement speed.   MULG/Multiplayer Globals: Defines common multiplayer values that are the same in each map, such as the forge biped and team colors   WEZR/Game Engine Settings: Defines the default gametypes, allowing you to modify typically more settings than what is displayed ingame. Starting with Reach, only Forge and Firefight remain, where the standard gametypes got moved to external files in VTGL. Regardless, you want to edit the WEZR found in the mainmenu, as that is the only place it matters.   HLMT/Model: The name is deceiving, it is not the model as you may think but rather the base of all objects. HLMT defines things like variants and health. It also contains the references for the rest of an object, specifically the MODE, JMAD, PHMO, and COLL.   MODE/Render Model: Now this is your actual model. This tag references the shaders, applies the model raw data, and defines the regions, nodes, and markers.   JMAD/Model Animation Graph: This tag defines all the animations of a model. A lot of animation data is raw data so there isn't too much you can edit here besides swapping or inheriting.   PHMO/Physics Model: Powered by Havok this tag makes models solid to the world. It also defines constraints for limbs as well as controls gravity lifts and mancannons. More info can be found here: http://www.xboxchaos.com/topic/4389-about-physics-models-info-forge-20-making-things-solid/#entry34436   COLL/Collision Model: This tag makes models solid to things like bullets. Nothing much to say otherwise.   SBSP/Scenario Structure BSP: This tag, alongside sLdT (and Lbsp starting in ODST onward) apply the rawdata for the world itself, meaning its model. Not much to edit here for most people besides shaders.