What happened to OC? - CLOSED Carnage?!

Search the Community: Showing results for tags 'HR Tutorial'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • OPENCARNAGE.NET (OC)
    • Site Matters
    • Member Introductions
  • HALO: SOFTWARE EXTENSIONS (SE)
    • Chimera: General
    • SAPP: General
  • HALO: CUSTOM EDITION (CE)
    • Halo CE: General
    • Halo CE: Development
  • HALO: COMBAT EVOLVED (PC)
    • Halo PC: General
    • Halo PC: Development
  • HALO: MASTER CHIEF COLLECTION (MCC)
    • Halo MCC: General
    • Halo MCC: Development
  • BROAD STROKES (BS)
    • General Gaming
    • Tech Chatter
    • Off-Topic

Found 7 results

  1. Similar to the Tools Shortlist, you can find many of the most useful MCC tutorials listed here. MCC Compression Formats Detailed information on compression formats used by various files. Running MCC Modding Tools on Linux With Wine Tips on configuring wine for the MCC mod tools. Porting CE Maps To MCC Tips on how to port existing CE maps to MCC. Working With GBXModels Creating and working with models used by the engine. Editing Thumbnails and Loading Screen Map Names Modifying the main menu elements for MCC. S3dpaks Detailed information on the s3dpak and some of its contained files. Tutorials making it to this list earn 8 Raffle Tickets!
  2. To play Halo: The Master Chief Collection on Steam, with mods, you must disable Easy Anti-Cheat (EAC) or simply 'anticheat'. If you don't do this, you can get VAC banned on Steam which may lead to consequences like being unable to play multiplayer or worse. Option 1: Desktop shortcut. Here's how to get a desktop shortcut with the official icon. First get the original game shortcut which can be placed automatically as you install the game, or manually add it later by doing the following: Find Halo: The Master Chief Collection in your Steam games library list and right click it. Select Manage. Inside the Manage sub-menu, click Add desktop shortcut. Once you have a normal Halo MCC desktop shortcut, do the following: Copy and paste the shortcut Steam made for you, then rename it 'MCC NonAC' or whatever you like. Edit the properties of the shortcut. In the URL field, replace steam://rungameid/976730 with steam://launch/976730/option1. To finish, select OK. Be careful not to accidentally run the original if you have installed mods. Or just don't have the original at all. Option 2: Through the Steam games library. I personally find this method to be annoyingly repetitious but if you have lots of games, this can be a way to keep your desktop clean. Navigate to Halo: The Master Chief Collection in your Steam games library. Launch the game using the big green PLAY button. (Shown in the picture as blue CANCEL since I already clicked it.) Two windows will appear, one is a prompt. In the prompt, select the option that says "Play Halo: MCC Anti-Cheat Disabled (Mods and Limited ..." Press PLAY and enjoy your mods worry-free!
  3. This tutorial is to teach you how to create boats and amphibious vehicles using the boat type block. We’ll focus this tutorial on making a ‘boathog’, which is an amphibious warthog, though much of this would also be important for floating platforms and other such objects. Floating Objects Vehi First thing you’ll want to do is set water density to ‘super floater’ right towards the top of the vehi block. This will make the boat float, though for now the game will ignore it after a short time, causing it to sink after a bit. We’ll fix that soon. Next you’ll want to make a hull surface element, and a drag element. In drag you’ll want to have linear and angular dampening to be any number above 0, otherwise your vehicle won’t have a top speed and end up an uncontrollable mess. You may also want the material to be ‘liquid_thin_water’ and to have other aspects to it that the warthog comes with by default, but other objects might not. Even for a non vehicle, you may want this so they don’t entirely lack friction and just float away forever in whatever direction they’re pushed. Mode Now, to finish off floating and getting it functioning (not sinking after a short period), we’ll need to make an effect, and a jpt! for it to call by duplicating any other effect and jpt tag. Additionally, since you’d ideally be making one effe for every floating object in your map, you’ll also want to open your vehicle’s mode to give it a unique marker for your effect to play from. For this example, we’ll use floating_point. Effe/Jpt! In the effect tag, add the marker to your locations block, then have it run an event roughly every 5 seconds (duration bounds 5 min 5 max), set the runtime base group tag to jpt!, and set the Type to the jpt! You’ve created. Next, you’re going to want to set the jpt! you’ve made to have a non 0 radius (we’ll use 0.7, though that’s a bit large), and give it an instantaneous acceleration of at least 0.1. Ensure it does 0 damage, and then if it’s not working, adjust numbers, particularly the radius or the marker in the mode of your object till it floats back out of the water. Finally, you'll want to close and reopen your vehicle tag, and add another element to your attachments block inside of it that points to your effect, with the marker set to the one you're using. Boat/Amphibious Vehicles Then add an element to the boat block. If you want it to be like the warthog, copy all the values down to it from the Human Jeep type, including the addresses and entry counts of the ‘gears’ and ‘load and cruise sound’ blocks, which you’ll find by clicking the i icon next to the gear in the block. If you want to make the boat not amphibious, you’ll want to set the gear ratio in the gears block to 0. Finally, you’ll want to mess around with the block engine block. The propeller marker will need to be any marker on your vehicle that reaches the water, the propeller radius is how far that marker can be from water and still function, the torque scale is how far back the vehicle is flung as it moves forward (or flung forward as it moves back). Reverse linear acceleration is moving backwards, while linear is moving forwards. Angular acceleration is turning, and stabilization is how much the vehicle wants to point a certain angle. The rest of what's in the boat block is either too difficult for me to figure out or outright crashes the game. Congrats! After you do all of this, you should have a proper boathog, with some bugs I’ll list. 1. The vehicle slides around a lot, like it has low friction 2. The tires aren’t properly animated 3. Moving backwards is really slow (can fix this by making the negative gear shift a much more potent number) 4. The hog gets pushed slightly once every 5 seconds Hopefully none of these are deal breakers for you and who knows? Maybe people will figure out how to fix these.
  4. This tutorial is on how to add inherited animations and more importantly, functional animations to a biped. Let’s say, for example, you want to make a grunt able to drive a warthog. The first thing people have thought of is to swap the warthog_d seat with ghost_d, but that’s wrong, and bad! It breaks the animations of others, it breaks scripts, ect. What you’re gonna want to do instead is inherit animations and edit the modes block in the jmad. Before you start, I suggest making a backup of your mod, this will come in handy later when we deal with the modes block. Animation Inheritance We'll be inheriting warthog_d animations from the marine to the grunt, so the first step is to open the jmad tag of both. After that, go down to the bottom of the grunt jmad, hit the gear on the 'new inheritance list' to add a new element, and set the inherited graph to the marine jmad. After that, add as many 'Node Map' elements as there are 'skeleton node's in your inherited graph (check back at the other jmad for this. For marines, this is 70) and add 'node map flags' so that you have as many as your node maps can fit divided by 32, rounded up. You'll then want to cross reference the names in the skeleton nodes of both the grunt and the marine for this next step, so I would suggest taking out a notepad and copying them down with their number in each respective list. For each entry in the 'Node Map' under the new inheritance list, you'll want to add in the number corresponding to the name of the skeleton node in the grunt jmad that is identical to the marine skeleton node you are on. If there is none, type in -1. After that, go through the 'node map flags' and check every flag who's corresponding value in the nodemap isn't -1. The second page uses the second numbers next to the checkbox, third page third, ect. Once done, it should look something like this. After this is done, you'll want to make new elements in your grunt jmad for all the new animations you want. while I'll only show one, for our purposes you'll want all 8 animations named warthog_d:, as well as any other warthog animation if you want to give the grunt full access to all of the seats and boarding. You'll likely want to name your animation the same as the one you're taking, for example warthog_d:acc, copy the values and flags from it, except you'll want to leave the shared animation data block with no elements, as well as add the element number of what animation you want to copy into the shared animation index, and add the marine jmad to the shared graph reference. Additionally, you'll most likely want to flag translate root and scale only on each animation to ensure your biped does stretch out to marine proportions. When you're done, it should look like this, and repeat as necessary for your needs. Modes block Editing Now, you may think you'd be done. You have your animations after all, right? Technically yes, but the game will never actually call them up like this, and that's where one of the easily overlooked blocks you scrolled past to get to inheritance comes in, the modes block. This dictates all of the actions a biped can do, and the animations associated with them. (This is also separate from the mode tag, which is the model) What you’ll need to add to your grunt's modes block is warthog_d, warthog_p, and warthog_g, as well as warthog_b_d, warthog_b_p, and warthog_b_g if you want them to be able to board. However, the block needs to be in a certain order. While it is possible to remake the entire block to fit these in, I suggest instead making the jmad in another version of the same map, and then importing it into the map you’re working on, as this sorts it correctly. Open up the jmad for the marine (or anything else that does what you want your biped to do). Copy the names of the main block into your jmad’s main block at the end of it, and then export. Once you’ve exported, reimport the files into the version of the map you’re actually working on, thus sorting all the files. From this point you’ll want to fill in the blocks with all the relevant sub-blocks for the actions you’ll need. You’ll need to fill in weapon class, weapon type, and sets with any for nearly all blocks, but may need more for blocks where players can use their weapons. You’ll also need an enter, an exit, an idle, and an ejection under action for seats such as warthog_d. You may also need to add overlays, and overlay groups. Warhog_d as per the marine needs aim_still_up, grip, acc, and look_still_up, and remember, keep them in order. The actions and overlays need to reference animations, Overlay groups are set by number in the idle block of a vehicle, and sometimes the enter and exit as well, particularly for something like passenger seats where you can aim and shoot in them. These need to be set up for your character to lean, look around, aim their weapons, and other essentials such as those. You’ll need to probably create an overlay group, as well as a few new blend screens, which the overlay group will reference. For warthog_d, you’ll make an overlay group named warthog_d:aim_still_up, and have 3 entries in the blendscreens. Warthog_d:acc, warthog_d:aim_still_up, and warthog_d:look_still_up. The node mask index should be -1 on all of these except warthog_d:aim_still_up, which should instead be 0. Basically, just copy values from the spartan. acc and aim_still_up should generally look like this regardless of vehicle: Make sure the animations are pointing in the right place in the new blend screens as well. Once you’re done with that, and you’ve added them to the overlay group and the overlay group to the idle, you should have a grunt who can successfully enter a warthog driver seat. This information should be applicable to a great many things, such as giving any biped any weapon (involves that weapon class section), getting elite players into sabres, and much more.
  5. Hey! I'm sure this is pretty basic, and probably already across the net; however, I figured I'd share it here as well. I was screwing around with some hex and looking around. The "maps/images" (.blf) are basically just jpgs with some header info. I believe the first 48 bytes are basically just a generic blam header, it's found across multiple file formats. then the next 20 bytes determine the map it corresponds to (unsure how) then the rest of the file is just a jpg. If you delete the first 68 bytes in a hex editor and save it as jpg most image viewers can open it.
  6. Disclaimer: This is not my tutorial, and it was not signed, however it does contain references to other contributors. The Introduction Many people have asked for it, here it is, the guide on how you too can load way more into your map than the original Xbox 360 ever intended. Be warned, this is not a guide for first time users of Assembly - you should have a good understanding of the program and modding the game in general as this guide will make assumptions on your knowledge. You should already have a map converted from Campaign to Multiplayer, if not take a look at the Campaign/Firefight Map Conversion Guide to learn how to get Campaign maps into Multiplayer The syntax used in the guide will also be using a different naming convention to mainline Assembly, as it uses Camden’s custom made plugin with more information and different names. There is a link to this in the Tools section, with thanks to Camden for allowing us to share it. Whilst the first section will cover how to load into a different area of the map, loading more BSPs is a much more difficult task that will test your patience, willpower and desire. You have to be willing to put in days and very likely weeks of your time to get things right, because it does demand perfection. The guide was put together with help from numerous members of the Halo Modding community, especially Camden who is a master of his craft. If you get your mod to work, make sure to remember him in the credits as without his help this guide would not even exist. Tools Assembly - You should have this already unless you believe you can do this with another tool Adjutant - A similar tool to Assembly, it can be used to view models of objects however it only works on Xbox 360 maps. You can find Xbox 360 maps online for use with this. Camden’s .scnr plugin - An alteration of Assembly’s plugin for the scnr tag made by Camden based on tags from Halo 5 which reveals some of the Unknowns and changes the names of a few things - it’s assumed throughout the guide you have this or have included it’s elements in your own plugin. Place into the assembly/plugins/ReachMCC folder. Notepad - You’re probably going to need to do some note taking to remember what you’ve done Common Terms BSP - Binary Space Partition, don’t worry too much about understanding it, just know that it refers to sections of a map Zone Sets - A group of BSPs and other elements Clusters - Portions of a Structure BSP Portals - Think of them as windows or doors from one BSP into another, lets you see from one BSP to another. PVS - Potential Visibility Set, once again don’t worry about understanding what it means Unknown - We don’t know what this is or what it does Loading into a different Zone Set Compared to the rest of this guide, just loading into another area is quite simple. For many people this will be enough, perhaps you only want a specific area and the game has that - but for some things such as the Corvette and New Alexandria’s buildings not all of it is loaded in at once. For this section, we’re going to be working completely within the Zone Sets, or Scenario Zone Set Groups if you’re not using Camden’s plugin for scnr. When loading a campaign map as a multiplayer map, it always loads the first entry, as seen here: Whilst the below section covers altering the Zone Sets, in this one we will simply be changing the first entry to match another so it loads that instead. As an example, we’re going to use m10’s first Zone Set which looks like this: The name and name string don’t matter but everything else I would advise changing to match the Zone Set you want to load into instead. So, say we wanted to load into zoneset_outpost_interior, which is the Outpost interior section of m10 where you find Sorvad’s datapad - You’d need to copy the information from that entry to entry 0. A basic overview of what each one does follows: BSP Group Index - This refers to the Zone Set PVS - a block that covers what parts of the level are rendered in basic terms. BSP Zone Flags - Which BSPs should be loaded, these should always match what is in the Zone Set PVS Structure Design Zone Flags - these tell the game which sddt tags to use and should be the same as Runtime Structure Design Zone Flags Designer Zonesets, Loaded and Unloaded - This covers what objects will be loaded in the area, things like guns, vehicles and crates. For multiplayer, you will likely want everything in Loaded ticked and everything in Unloaded unticked. Cinematic Zonesets - This refers to cinematic objects - It doesn’t need to be ticked as it only tells the game to load cutscenes beforehand like campaign does it Hint Previous Zone Set - Leave this at -1 unless you find a group that has otherwise. Audibility Index - this is what Zone Set Audibility the zone set uses, it determines what can be heard from where - if you can hear a gunshot from one room to another. If you plan on adding more BSPs in the later section set this to -1, otherwise just copy the entry from the Zone Set you want to use. Planar Fog Visibility - Covers planar fog and where it can be seen from, you can copy the address from the Zone Set or leave it alone if it’s not causing issues. If you got it all right you should be able to load into the area of your choice - remember to set your spawn point to a new location if applicable or you could fail to spawn or show up in the middle of a void. You can use a tool called Adjutant to find the coordinates you want. It needs Xbox 360 maps but it has a BSP viewer you can use to get the correct coordinates down to the point. BSP positions didn’t change at all between the Xbox 360 version and MCC Reach. One last thing to consider is Zone Set Switch Trigger Volumes. This is what in the campaign allows you to walk from one area to the next and also go back, like in Sword Base where you visit the two areas then go back into the base. In multiplayer, this can disconnect your clients, so it’s recommended to set the Count to 0 lest you accidentally deload whoever you’re playing with, unless you just want to play the level by yourself. Adding more BSPs to your Zone Set This is the difficult part. Brace yourselves. The main determining factor in where you load into a map is it’s Zone Set PVS, a group of BSPs knitted together with PVA glue and duct tape. These are split into three sections: BSP Checksums - Each BSP has a checksum, just copy paste the number, the number can be also found in the sbsp tag of the BSP. Structure BSP PVS - The main meat of it, where it’s all put together. Portal=>Device Mappings, where doors and the like are linked to portals. By large what you’re going to be dealing with is the Clusters located in Structure BSP PVS - each BSP is split into multiple clusters, though not always. Some have just the one, others have many more. To show you an example, this is the model of the Corvette BSP from m45 viewed in Adjutant: As you can see on the left, the BSP has six clusters starting at zero. In Assembly, you can see these represented Cluster PVS which has an entry for each other BSP you have loaded which then have Bits determining what objects can be seen, there is also Cluster Skies, which determine whether the sky can be seen and Cluster Mappings which work a little differently but these are what shows the BSPs themselves. There are five BSPs loaded in this particular Zone Set so Structure BSP PVS has five entries, found in the top right corner. The blocks within these have entries according to how many clusters the BSP has, in this example the 4th BSP has two clusters, so has two entries for everything but the unknown, which you can safely ignore. The sections below go into more detail for each block. Cluster PVS & Cluster PVS Doors Closed Cluster PVS defines which objects can be shown, but sadly we don’t have documentation on which bit corresponds to what objects, or group of objects. I recommend keeping it matching with the original. Each Cluster PVS entry has an entry for all the BSPs you have decided to load, you need to make sure to keep the order, first BSP on the active BSPs list, no matter if its BSP 0, BSP 12, BSP 15, whatever. As long as it’s the first one on the list, it will always be the first entry of Cluster PVS, second one on the list will always be the second entry inside the Cluster PVS. Thank you to Camden for this helpful image: Cluster Mappings Whilst the Cluster PVS defines which objects can be shown, the Cluster Mappings determine the location of Portals which let you see from one BSP to the other - things like doorways and windows. It’s also how you can see the BSP inside of itself, if these aren’t done right you can walk into an area and not be able to see anything but the void. This will also cause crashes in campaign maps on areas that have loading triggers between BSPs, going around these triggers will let you pass but it’s not perfect. Still good for testing if you want to see how stuff loads at the moment and don’t have the loading triggers setup properly. Once again, there’s an entry for each Cluster, but unlike the Cluster PVS there aren’t entries for each BSP, only the BSP you’re editing the mappings for, and any BSPs which are connected to it. What often happens is that you have an area with an entrance, and then an exit to another area and only the exit or the entrance is ever normally loaded, meaning you have to add one yourself. Compared to the Cluster PVS this is fairly simple, you can simply add the numbers from a BSP with the area connected on top and there’s no need to make entries for each BSP, but it’s still worth rechecking everything is where it’s supposed to be afterwards. Here you can see an altered Cluster Mappings, you can just add on to the existing one if it has some of the entries already and as always reuse addresses where you can but often reallocation will be necessary. Cluster Skies, Unknown and Portal=>Device Mappings If you could say that Zone Set PVS had an easy part, this would be it. The Cluster Skies are as simple as copy pasting the numbers from the origin group BSP, and the Unknown seems to always be set to 0x1C8D920F20. A chance look at Portal=>Device Mappings might make you think they’re like Cluster Mappings, but they’re easier than those - there’s just one Portal=>Device Mappings block for the whole Zone Set PVS and each entry represents a different BSP, so you simply need to set the addresses correctly for each BSP you plan on loading. Since the portals are done per BSP, you should be fine to leave the contents of each block as is and just change the Device Portal Associations, Game Portal to Portal Map and Occluding Portal to Portal Map’s Count and Addresses to match their native groups. Common Issues Many things can and will make your game crash. Check that everything is where it should be and after that check it again. Don’t despair when things don’t work right the first, second, or thirteenth time. It takes a lot of patience to get this right. If you cannot see through portals (like this) you need to double check your Cluster mappings, the problem is there. Make sure you double check your cluster PVS after you have set them up, adding entries can cause other entries to get nulled due to the cache optimization pass. All verifiably duplicate data in the tags buffer points to the same address instead of allocating it multiple times. Setting cluster PVS up improperly will also cause crashes in campaign maps on areas that have loading triggers between BSPs, going around these triggers will let you pass but don’t stop there and try to fix it the rest of the way. It’s still good for testing if you want to see how stuff loads at the moment and don’t have the loading triggers setup properly. Final words and thanks Apologies to anyone who has been waiting on this guide for a while now. It’s been taking quite a while as we are just two people diving into new territories with stuff that hasn’t been possible to explore much before (if we don’t count the work put into ED, ED developers have done way more than what we two can do). Feel free to leave comments here on stuff we should improve and we will get on that, also if you need more support feel free to ping me; @arttumiro in the halomods discord modding support chat Major thanks goes out to Camden and Dany for being chill and good at providing support and help. (Also extra props for camden for the nice helper picture) Gamecheat13 made both the Halo Mods Discord where we received advice, as well as Unearthed, the first multiplayer map conversion which provided great insight into the process of importing Campaign and Firefight maps to multiplayer. Without XboxChaos, Lord Zedd, Thunder and the many other contributors to Assembly this would not be possible. And of course, none of us would be here were it not for the efforts of Bungie in making the original game and 343 Industries porting the Halo games to PC.
  7. Disclaimer: This is not my tutorial, and it was not signed, however it does contain references to other contributors. Loading the map in MCC’s menus As of right now, you can’t add new maps to the menus, so we’re going to have to replace a multiplayer map. You’ll want to backup the map you want to convert and a multiplayer map we’re going to replace it with, if you haven’t already. First, rename the multiplayer map to something else, but keep the file type intact as we’re going to use it as a reference. Then, rename the campaign/firefight map to the multiplayer map. Now load both up in Assembly and locate the .scnr tag in both. We can drag the original .map file so it appears on the right so we can use it as a quick reference and there’s many things we’ll need from it. To allow the map to even attempt to load, we’ll need to change the map ID of our campaign map to that of the multiplayer map. If you want to be able to save forged map variants, go ahead and change the Sandbox Budget to any number above zero or nothing will save. After you’re done, close the tag so that later the imported objects will appear in it’s lists. Tag Extracting/Importing The next thing you’re going to want to do is extract some needed tags from the multiplayer map. The two most important are the .mulg multiplayer_globals tag and the .wgtz ui\multiplayer tag - you can skip down to Setting up Forge objects if you’re using a Firefight map - they should have all the information necessary, however if you want to learn, read on. I recommend using a small map such as Beaver Creek or Prisoner for extracting the tags, as the .mulg tag will include vehicles and weapons native to that map. When you extract tags, there is the option to extract one at a time, however you can also add them to an extract list as seen above which will put all of the tags you want into the same file. It’s worth grabbing Forge related items you want in your map such as spawn points and objectives, find the Sandbox Palette in the multiplayer map’s .scnr and scroll through the entries to locate the different objects you want - at the very least you’ll probably want an Initial Spawn Point especially if it’s a campaign map. When you’re done adding things, click Extract All and give the .tagc file a nice name. But before you import it all into the campaign map, go to the campaign map’s mulg tag and give it a new name - remember to click Save Tag Names afterwards. Now you can import your .tagc file, be aware it may take a long time and it’ll look like Assembly has frozen but just wait. Switching things up Now you have your tags in, there’s a few things left to do in order to actually make the map playable. First, head over to the global.matg tag and search for “mulg” and change the drop down box so it points to your newly imported tag - this is why we renamed the old one earlier. Still in the .matg tag, search for wgtz and set both Single Player/Survival UI Globals and Multiplayer UI Globals over to the multiplayer variant - without it accessing Forge isn’t possible. Now we’re going to head over to the .scnr tag - there’s two things we have to do here, the first is to go over to the Scripts block, hit the i symbol and change the count to 0, then do the same for the Globals block. By changing the count to zero we can stop any scripts from attempting to trigger and crashing the game whilst still preserving them all should you ever want to try your hand at adding some to the level - just change the 0 back to whatever it was originally and they’re back. This next part may not be necessary if you’re using a Firefight map, but it’s probably worth doing anyway just in case - if your map loads but you’re faced with a black screen and can’t spawn, it’s because your spawn isn’t working. Find the Scenery Palette and add a new entry with the plus symbol, after reallocating you’ll now have a new number at the bottom of the drop down. Change the tag type from null to scen, then change the object to be the initial spawn point that was imported from the multiplayer map - this allows us to place a spawn point in the map without using forge. Above the scenery palette you’ll see another block labelled just Scenery, add another entry to this like you did with the palette. The Palette Index is the number corresponding to the item in the scenery palette, it works this way with all other types of objects as well. Set this to the palette number of your initial spawn point that we created in the previous step. Next you’ll see Position X,Y,Z - in order to guarantee you won’t spawn into the void you’ll want to search for the Player Starting Locations block - grab the coordinates from there and copy them into your new scenery tag. Lower down in the Scenery block you’ll see Type and Source - switch these to Scenery and Editor respectively. Now you’ll want to edit the Allowed Zonesets, these are the finicky buggers that determine what area of a map loads what resources - for now just right click and select all so your spawn point will appear regardless of what portion of the map is loaded. Lastly, change Team in the section above to Neutral so you can spawn in regardless of what team you’re on - it defaults to Red, which is the same as the Forge default but it’s good practice in case you ever want to play with friends. Elite Player Models In the campaign, the player is always a Spartan - it wouldn’t make a lot of sense if they allowed people to play as Elites there. This isn’t normally a problem, except when you import a campaign map to multiplayer and you try to play as an Elite it can’t find the required information, so it just doesn’t allow you to spawn in. Firefight fortunately does not have this issue, but for campaign maps there are some steps that need to be taken. We can either import the Elite bipd and first person models, which may make multiplayer black screen if you’ve imported a lot of other tags, or we can set the Elite models to a Spartans, either way you’ll want to go to the Player Representation block in the matg tag, as seen here: By default, up in the top right it will have 0, that is the Spartan’s representation. The second entry is for Elites and this is what it will look like by default. To make Elites spawn in as Spartans, we’ll first need to copy all of the information from the Spartan representation to the Elite representation, or copy the proper Elite information from a map with it to make them spawn properly as Elites. This will allow Elite players to spawn in, however you may notice some issues.. The first obvious one you’ll notice is that most of the weapons you use don’t have a first person model or animations. Much like the player representation in matg, each weapon has a model/animation block for player types called First Person with two entries. If you’re not importing an Elite model, instead of having to enter the information for each weapon we can instead click the i symbol and set the Count to 1, forcing weapons to use the Spartan information, but we’ll still need to go over each weapon doing this. The second issue will only be for the pseudo “Elite-Spartans”, you will notice a lack of arms when viewing your character in third person. This is because the game is trying to apply the Elite armor permutations to Spartans, but we can fix that. Navigate to the .pmcg tag and scroll down to the bottom. You’ll notice Spartan Base and Elite Base - in the region section, the Spartan’s first entry is arms, whereas the Elites first entry is head. All we have to do here is change the Elite’s region names for each entry to match the Spartan Base first three entries. There is of course no need to do this if you have imported the Elite model instead. Thanks to Arttumiro for identifying this issue. Spawning in If you’ve done everything above, saved it all and double checked it, you should be ready to go. Load up MCC without anti cheat, switch out your .pak so you can play Forge and load the map under the multiplayer map name you chose. If it worked and you’re where you’re supposed to be, great! You can move on to the next section. Buuuut it probably didn’t, because let’s face it these things rarely work the first time. Here’s what you can try, assuming your map does load and not just crash to the desktop. Adding the initial spawn point to the sandbox palette - see below, this may be necessary to spawn at all in the campaign maps. Slightly raising the Z coordinate for your respawn point to make sure it’s not getting stuck in the ground. Looking up the Squad block and changing the spawn point to that of one of the Single Locations listed for your AI teammates that would normally spawn in the level. Heading over to the Scenario Zoneset Groups block and checking Loaded Designer Zonesets and unchecking Unloaded Designer Zonesets for each group. Just randomly changing the coordinates to random squad locations. Loading a different BSP (a bit complicated for a bullet point). Switching your player model preference to Spartan - see the new Elite Player Models guide update for more information. If you’re crashing before you can even load the map your best hope is going over everything here and making sure you followed each step properly, if you did and it’s still not working there might be an issue with that map that’s beyond my current knowledge. Setting up Forge objects So your map works, you can load in and fly around, but your forge menu is empty, you can’t place anything. This is where the Sandbox Palette comes in - the Sandbox Palette contains all of the entries for the forge menu. In order to set it up, it’s best to use the old multiplayer map as a reference, but note that since it’s a campaign map not all of the items from multiplayer will be available and even with injection won’t work properly. Be aware that if you alter the Sandbox Palette after creating map variants they may no longer function so finish up everything you want to do here before going at it. The first level of the Sandbox Palette is where you’ll have your entries, ff_spawning for example contains the initial_respawn_point entry, which itself will need an entry variant with the object tag - you don’t need to worry about adding a name for the variant unless there are multiple such as with the Warthog or Falcons. You can leave the Entry Count and Entry Price at 0, so long as your Sandbox Budget has a value above one it doesn’t matter. The Thorage value presumably controls whether the item originates from Thorage or not, just leave it at 0. I made a document listing all Forge World entries for convenience, let me know if there’s anything I should improve there and like this document feel free to add suggestions. It is also possible to inject the Sandbox Palette from another level by duplicating the .scnr in that map. You would then null out everything but the parts of the Sandbox Palette you want - keeping in mind that vehicles and thorage objects are known to sometimes cause issues on import - and extract this tag. After injecting it into your map, you would then take the Address of the injected Sandbox Palette and copy that into the map’s regular SCNR. This can be tricky and I recommend making backups, but could also save you a lot of time. Thanks to dany for making the initial suggestion and Lord Zedd for showing me how to get it to work properly. Gametypes and .motl If you want your map to have game types other than Slayer like Capture the Flag or Assault, you have to match your imported objects to the Multiplayer Object List found in the global.motl tag - this will also allow you to spawn in with imported weapons should you match those up as well. While some objects such as the Invisible Cube of Derek may seem like they’re random or pointless, they can actually be very important - the Invisible Cube of Derek/Alarming objects enable game types such as Oddball, King of the Hill and Invasion to work - so don’t be like me and neglect to put them in. Many thanks to Lord Zedd for showing me how to do this. My object isn’t spawning! There are a few different reasons why this might be and I know of at least two. The most common reason is because the Designer Zonesets are blocking it - you can try going to the Scenario Zoneset Groups block and checking all the sets as previously detailed in the Spawning In section. Another reason it wouldn’t spawn is if your object doesn’t have the Multiplayer Object Properties block - go to to the object’s tag and add one in if necessary, the relevant parts are the Object Type, Spawn Timer Mode, Spawn Time and Abandon Time, as far as I know you can leave everything else as is. If you’re outside the normal map bounds, head over to the Structure BSPs block in the .scnr tag and check each entry for the Prevents Forging flag, untick that and you should be good to go. If all else fails, you can forceload a tag by right clicking on it in assembly and clicking “Forceload” and it’ll make the tag act as if it had been injected into the map - Thanks to Lord Zedd for showing me this! Alternate BSP Loading So you’ve got the map loaded and working, but you’re not in the area you’d like. Campaign map areas are split up into BSPs, which are then loaded as part of BSP Groups. Loading different areas can be quite tricky, as often a single mistake will cause the map to crash, but with some luck you’ll get it working. First, find the Scenario Zoneset Groups block in the .scnr tag. It should look something like this: It looks like a lot, but it’s actually just as simple as copying a few numbers. In the block’s top right drop down, find the group you want to load into. Sometimes it’s obvious which is which from the names, other times you’ll need to experiment. From the group you want to load, note down the BSP Group Index, Loaded BSPs 1 and 2, Scenario BSP Audibility Index and it’s probably wise to change the Unknown fields as well. Don’t worry about the Name and Name String, and you shouldn’t need to do anything with the Unknown 6 block either. If you’ve read the other parts of the guide you might recognize Loaded/Unloaded Designer Zonesets - personally I tick all of the Loaded and untick all the Unloaded, but it’s up to you if you feel that’s necessary for your map. Now, assuming you do all of this correctly you might still have issues getting in. This is likely because your spawn point is in a different area, so what I recommend is going into your new area in the campaign, noting down a fairly unique object and finding it in the .scnr and swapping your spawn point location over to the one the object uses. When moving around in the map, you might accidentally load another area - this is fine if you’re on your own, but causes issues in multiplayer, so I recommend finding the Zoneset Switch Trigger Volumes block and setting the Count to 0 so it won’t happen, unless you don’t plan on playing the map with anyone else. It is also possible to load BSPs in a different configuration to what would normally be seen in the map, however that’s not something I myself have fully figured out yet so I won’t be covering it here - what I will say is that it seems to require you to alter or create a new BSP Group in the block of the same name. For a more in-depth tutorial on BSP loading, see this guide here. Other common issues If your Phantom, Spirit or other vehicle is falling through the world, go to it’s .phmo tag and change all the Unknown Interaction fields to -1 and the Interaction Unknown fields to 0 - See Lord Zedd’s topic on XboxChaos. Some vehicles such as Pelicans, Phantoms and the Spirit are difficult to enter for non-host players - increasing the entry radius of the seat can help. If you can’t access the forge menu you need to set the Multiplayer UI Globals to ui\multiplayer in the .matg tag. In multiplayer non-hosts will sometimes have a black screen or won’t be able to see objects that you’ve imported from other maps. This is usually vehicles and bipeds but I have also seen it happen with some Thorage scenery objects. The cause of this is unknown, so I advise caution and repeated testing when importing any object that falls into the above categories. Sometimes the Forge menu in-game has issues remembering your place, try this fix from Wafflexboy on XboxChaos if it becomes a problem. Final words If you’re an experienced Halo modder it’s probably pretty obvious from this tutorial that I don’t really know what I’m doing - you’re welcome to copy this document and correct all the wrong parts, I’d certainly like to know. If you’re a new modder like me and none of this worked, sorry! I’m still pretty new and you might have to ask for help from someone more experienced. But hopefully at least some of it worked out ok and you had some fun with it, I know I did.