Halo: The Master Chief Collection

Halo: The Master Chief Collection

75 évaluations
Halo Modding Tips - Getting Started
De Nathan
Modding Halo is an expansive subject, with 5 titles now having tools allowing you to do a number of things, and so this guide can never realistically be a complete guide on all aspects, but I thought I might collect what I know and I can remember into one guide, that hopefully will help people get started, with maybe a few concrete examples along the way.

I haven't dabbled into making levels, making/editing shaders or advanced texture work, importing/exporting models into the games or such things, but I hope the crude amateurish ideas here will still help direct people who are newcomers like me along the path, and know how to then maybe approach those steps in the future if they want.

Most important main lesson I want to state right now, is to adopt a mindset that I think every tinkerer should have in their thinking toolbox:
Compare-Compare-Compare.
Always when you're trying to figure out what's what and how they work and influence other things, is to just open up different files, see their contents, open up other ones side-by-side, jump back-and-forth, tweak one thing, see how it works, compare & contrast, copy the homework from another file, entry, duplicate, use files and sections as a basis, foundation for your modifications, cross-reference everything and make sure files point to the right parents and siblings.
These are important things to keep in mind, you can't always see in isolation what's what, you can always forget sections to fill out in new entries you create (also, seems more economical/efficient on top of helping with compatibility issues, when you just make a duplicate renaming it from another copy, as you don't need to manually create every section within the tag, just alter and remove the ones you don't need), you can't always see which way a certain value controls a behaviour, without seeing how that value is different in a file for something you already know ingame behaves on one end of a spectrum.
2
2
2
3
   
Récompenser
Ajouter aux favoris
Favoris
Retirer des favoris
Setup & Resources
First thing, is that this original news post about the release of the Halo 1 modding tools will get you up to step 1: Finding the tools, downloading them, then going into their installation folders and extracting the zip files containing all uncompiled data for the pre-existing mp/sp maps/levels/missions/data (H2EK.7z/HCEEK.7z etc), all into that tools folder, so you should have say common/HCEEK/tags/levels or characters etc, not HCEEK/tags/tags, same with data and the rest.
https://steamcommunity.com/games/976730/announcements/detail/3007823106801144959
Modding tool storepages:
H1EK, H2EK, H3EK, H3ODSTEK, HREACHEK, H4EK, H2AMPEK.
Also the Steam Workshop Mod Uploader tool can be found here on Steam as well: MCCModUploader.

Now, the main source of a bunch of information about modding the trilogy, entries for the different tools and tags and such, is going to be the site c20 dot reclaimers dot net. It's a wiki, however it's a bit unclear sometimes about some things, and if you're starting up then knowing where to begin or what to look for can still be a bit abstract in your mind, so that's why my guide won't stop here with just saying go there, and I'll give some ideas about other things.
https://c20.reclaimers.net/

You can also post questions in the steam modding subforum, sadly it's not that active, and most people these days use discord for almost everything, and Halo modding is no different:
Discord Channel: Halo Modding Reclaimers
(Under Discord Home, type it into the upper left "find or start a conversation" field)

As of 23rd of November 2022, 343i have made an official documentation about modding MCC
https://steamcommunity.com/games/976730/announcements/detail/3481873895640384261
https://learn.microsoft.com/en-us/halo-master-chief-collection/
So you now have even more resources to consult when modding!

Steam Workshop
The December 2022 Update brought us The Workshop where you can simply subscribe to download (read their own descriptions for more info) and then launch MCC through your steam library choosing to play without Easy Anti Cheat, and the maps/mods should now be available to simply play inside the games own UI, read more in the December Update news post.
https://steamcommunity.com/games/976730/announcements/detail/3645131284590860010

MCC Desktop Shortcut with No EAC
If you want to launch with a desktop shortcut without Easy Anti-Cheat without having to everytime go through the extra clicks of opening up your steam library, clicking 'play' for Halo MCC there and then choosing the No EAC option, then make a copy of your current Halo MCC desktop shortcut, rename it to something easy to notice like "Halo MCC NoEAC" but then right-click it, hit properties and change the URL from:
steam://rungameid/976730
To:
steam://launch/976730/option2
Only adding "/option2" doesn't work, the "rungameid" needs to be "launch" as well as you can see.
Guerilla Part 1
Across all the games, they have pretty much the same underlying engine and tools as well. So I'll be showing examples of each of the 3 almost interchangeably, though there will be differences, obvious evolution, but you'll spot them on your own.

Because of the nature of a guide, it's easier to show the photogenic stuff, so Guerilla sections are dominated by my visual tweaks for demonstration purposes, but there's a lot that you can do with Guerilla, and once you open up a few things and just glance around, I'm sure you'll start to form mental models of how it all is structured.

Your folder by now should look a bit like this:

And opening Guerilla, will first appear blank, but you can just in the top left corner open up tags:
--------
Now "tags" aren't a specific file extension, they are the chunks of data that the game nicely for us compartmentalize into a hierarchy. These include basically everything, stats in weapons, AI, textures, models-- You can even open up the level scenario chunks, though you can't do with Guerilla as much with them as you can with Sapien.
You can also create new tags from scratch, put them somewhere into the tags folder, properly refer to them within sections, and then manually place them or script them into your maps if that's how you made them.
Here's a view you'll see with tags open:

---------
An example of one thing I've done across all the trilogy titles:
I tweaked muzzleflashes to be flashier, impact effects, added projectile lights to plasma weapons, all to make combat look more hectic.
For projectile lights, I went and made a copy of a weapons light file and renamed it to say bolt dot light, just so that I didn't have to manually recreate the same light color of that weapon, tweaked it. Then I opened up the plasma weapons bolt projectile file, and simply under attachments referred to it as a light:

(Not the best capture of what I did, but hopefully gives an idea of the changes in question.)

Across all three games, creating a new effect like this was pretty much as simple as it looks.
The only thing that tended to make things complicated were when the games had messier hierarchies, relevant files not neatly in folders you'd expect, and if a file was used by an unexpected effect.

For instance in Halo 2 I heavily tweaked the plasma rifle muzzleflash. Little did I know that the same file was somewhere in an obscure section used for Ghost & Wraith hovering glow, even though normally you can't see it. In that case I just made a duplicate PR MF file, tweaked that, and referred that one specifically for the plasma rifle alone, leaving the original untouched for the others.
I suggest everyone do the same in some cases, if you heavily edit some file without knowing if it's used by something different, if you just want it specifically for a single file to be used, just make a duplicate to edit, reducing headaches.

-- To make sure your light tag works and looks good throughout the games, there are certain fields you must go through, they can deceptively make the light almost invisible if not unchecked or filled with a proper number.
Halo CE is pretty simple, no cheeky flags, specularity is cool but remember that it's costly and the engine has a limit to rendering onscreen effects and will start to cull stuff making things look glitchy.
Halo 2 you need to be more careful of. If - like me - you want to make muzzleflashes, impact lights, projectile lights more flashy, you should basically untick every flag at the top, only leave no specularity and no shadows for stuff like hits and projectiles (left for MF on/unticked cause they look cool, engine can still handle that - you might need to add the lights, even MF, to an effect file like firing effect instead of the usual weapon file attachment place, make sure weapon attachment has a primary scale field written with "illumination".)
Halo 3 again untick pretty much every flag for your custom light file for best results, distance diffusion is I think tied to how intense the light is, the bigger the diffusion with too little intensity means the light is spread out too thin, too dim to even notice, but I too small a distance diffusion value will mask the other effects then.

--
Another thing I did which I want to share, is that I made all weapon projectiles in H2&3 use their corresponding impact effect, to further boost their flare in combat.
You would see that, normally in the flyby/impact section of a projectile file, the impact effect field is empty, but if you then refer the impact effect file there, usually located in the weapons' fx folder, you'll see ingame much more, well, impactful hit effects leaving decals more consistently. This doesn't mess with material specific hits, shooting water or dirt still have their specific splashes and dust and only for those situations, not on every surface.

Note on the left, Guerilla open (can save edited tags in realtime and swapping back to Sapien will reload updated tags) shooting with impact effects filled in the field, next field empty, how the shooting looks.


With some weapons I was a bit lazy, like if a machinegun turret or warthog turret didn't have its own files, or an automag didn't have it's own files, then I referred to the other, like with automag using the magnum files in these types of entries. (H2 Rocket launcher interestingly was lacking its rocket_detonation effect in the detonation effect airborne/ground section, and there too adding it improved explosion quality.)

In an impact effect file you can add a hit light (again like projectile light, copied a light file, renamed, edited, then added into impact.effect in the event->parts section, location forward/up/normal, and offset away from geometry). Meaning when a bullet or plasma bolt hit a surface, a light will flash in the impact with all the sparks.


And in an educating moment, in H3's case, it had an undesirable consequence; it doubled impact effects ingame- Where I decided to go over every impact effect file, create a duplicate, renamed it impact_noreflection, deleted inside them the "reflection" part in the top "Locations" part, referred that one in the projectile file, and that was it, now it just played the hit, and still referred to the normal impact file in it's own specific situations, without duplicating a hit effect.

(Though with testing in H3 it didn't seem to need this impact-addition-treatment as much as H2 did, bit of a wasted effort in my part. Still, an educating moment once again in how you should keep in mind the importance of leaving base files alone and making separate ones for edits.)

Duplicates might at first seem to require more effort, but again, do you want to go through the work of creating a tag from scratch and filling out a bunch of fields and adding under them entries (not to mention editing an existing one without knowing where exactly that tag is used elsewhere?), or pick an existing one which has most of what you already need and only want to alter, and just make a copy that you rename and then just have that referred in a smaller handful of places?
Guerilla Part 2
In Halo 3, I made new color variants for Elites like a different white one and a yellow one like a zealot, under the biped files changed colors-initial permutations, just clicking the buttons to add, edit the color I saw, named it something (both for primary & secondary, giving the same name), then opened up the model file, and under the Variants section, added this new variant with the new color.
(Again duplicating an existing one there so that I didn't have to individually create the subsections with shoulders and heads and torsos, I made a "com" with a basic minor_scl foundation, but tweaked torso to be "spec_ops" and one shoulder to be "spec_ops").

You can also tweak tag files and then in real time examine the new saved changes being updated in a map you have open in Sapien, like tweaking the Elite colors and seeing how they look like in the game:

----------
I want to repeat that: You can ALT+TAB to guerilla, change a value like one of those colors, or a shoulder or torso or helmet piece, save, then alt+tab back to your Sapien or even Standalone, and see that change being updated immediately.

Doesn't seem to work for H1 Sapien, tag_test had mixed results. Works for H2 Sapien, not tag_test. Works for both Sapien & tag_test with H3.
Big thanks to a member in the Reclaimers Discord for telling about this, it's been really helpful for getting a realtime impression of changes.

----------

Want headshots to count for something with more weapons than just the ones that one-hit-kill with a headshot?
For Halo 2 & 3, you'll want to open up a characters model file, then select the head part, put the vitality percentage to be lower than 1, it basically means what percentage of the characters total health "resides" in the head section, then add or edit an instant response to the head section below it, and just tick the "kills object" flag, with a damage threshold at zero (I think defaults to it), you don't really need to edit any of the other fields there.
This means, with less health in the head section, and depleting it, it takes less shots to kill a target (0.5=2.0x dmg multiplier).
Now headshots are more efficient no matter the weapon you wield.


For Halo 1 it's a bit simpler. You open up a characters model_collision_geometry file, scroll down to materials, select head for the top down menu, and just increase the body damage multiplier.
I'm going to show how to remove the one-hit-kill for hunters in the unarmored parts.
You'll want to open up that model_collision file, go down to that materials section, select "skin", and untick the "head" flag.
I still suggest maybe increasing the body damage multiplier a bit to make it more vulnerable (and decrease it a tiny bit more for armor), and you can under the damage_effects file dmg modifier section still have certain weapons like AR and Magnum bullets do more damage to hunter skin than plasma if you want to keep that classic Halo rock-paper-scissors balance of what weapons work on what.

-------------

I have also made different AI. For instance in Halo 2, I wanted Arbiter missions to have their own unique Elites with their own stats and behaviours, distinct from the Elites you faced against as Master Chief.
I admit it was a bit to make them better (though I also tweaked enemy elites to still be a challenge, just not more tanky, which I wanted ally elites to be-- Made allies deal less damage by giving them their own generic character file where I made the damage modifier lower for each weapon down in the firing patterns section.)
Made duplicates of the model, biped files, renamed them to elite_ally, in ai folder copies of base character file, again renaming them, opening them up, cross-referencing them, then editing them-- In the Arbiter-specific levels in Sapien, I edited types to add their biped and character files, and replaced every AI squads that were your Elites (not heretics) with my new ones- Worked like a charm.

Cross-referencing is always important and easy to miss when a field pops up that requires some file you want it to refer to. Those are then characters who's types you can then insert into a map with Sapien, and place (or in my case just replace old squads with).

--------------

There's so much more you can do with Guerilla, but these I hope will give an idea of some variety, and opening up different tags will just have (mostly) plain English in clear sections.
Sapien Part 1
With Sapien, you'll be editing . scenario tag files. located in tags/levels or tags/scenarios/solo etc folders.

Using Sapien, sometimes I've placed new scenery in maps-- Especially in Halo 1, because I wanted to hide pickups behind cover that might not have been present. My favourite pickups being active camo in places you'd have to look into, to encourage exploration more. I've also placed weapons that weren't present originally, like Flamethrowers & Plasma Cannons in H1 and Red Plasma Rifles, Automags & Silenced SMGs in H3. I've placed new AI squads, I've edited AI orders and firing positions, placed vehicles and weapons and items I felt were underutilized, edited script files in Data/levels/solo/ tweaking mission scripts to add AI squads into zonesets and their orders and then compiled those changed scripts into a scenario in Sapien from the top left.

This is just the tip of the iceberg. If you've ever seen the creations people have done with the original Halo Custom Edition editing kit (HEK), know that these tools, Guerilla, Sapien, Tool, are pretty much highly related with those.

Some Sapien hotkeys, I copied these from c20 Reclaimers wiki:
The game window is the main interface when interacting with objects in the level. It is also where you can run commands by pressing the ~ (tilde) key. The resolution and aspect ratio cannot be adjusted. Movement of the camera is done in the same way as the in-game debug camera; hold the middle mouse button (unless you lock the mouse) plus: Use the mouse to aim Move with W, A, S, and D Go up with R and down with F Increase camera speed by scrolling down or pressing Shift Decrease camera speed by scrolling up Temporarily boost camera speed by holding Ctrl (new in H1A Sapien) Camera rotation with the G key is only supported in-game and not in Sapien. If you have accidentally opened the singleplayer pause menu, it can be closed again with Middle mouse + Escape. Some of these shortcuts are only used in certain windows or editor modes. General ~: Opens the command console, pressing it again or pressing enter on an empty console will close it. Space: clones the selected object to the camera's location and orientation. If multiple objects are selected, uses the first. Pause/Break: Pauses your Sapien instance. Press "OK" in the opened window to resume Sapien. Control + B: Open the BSP switch dialog window. Control + Shift + B: Creates the file baggage.txt. If you end up getting a maximum tag slots error or are running low on tag space, this file shows the memory usage of tags in the editor. Shift + Click: Select a group of objects or keep previously placed objects selected. You can also use it to select the first and last object in the hierarchy list to select everything in-between at once. Useful for deleting multiple objects or moving them all at once. Control + Click: Select a group of objects or keep previously placed objects selected. This will only select the object you specifically click in the hierarchy list. Useful for deleting multiple objects or moving them all at once. Hold Tab: Using this key combo while having an object selected will set the rotation gizmo to sync with the local rotation of the object. Only really useful if "Local Axes" is not enabled. In the hierarchy view, pressing a key will cycle through all folders that start with that character. For example, pressing A while having the "Missions" folder expanded will immediately take you to the "AI" folder. N: This hotkey will snap a selected object to the normal of the ground below it. Encounters and AI Middle mouse + F1: Selects the spawned actor in the center of the game view. Middle mouse + F2 Select next encounter. You can also use the console command ai_select <encounter>. Middle mouse + F3: Select previous encounter. Middle mouse + F4: When an encounter is selected, selects the next actor. Middle mouse + Shift + F4: Selects the previous actor. Middle mouse + F5: Cycles through render modes for actor sprays: Actions Activation status None Middle mouse + F6: Erase all spawned actors, e.g. those created with ai_place. M: Toggles group labels on firing positions, shows the default actor for move positions used by a squad instance, and highlights editor gizmos/placeholders, making them easier to see. These hotkeys apply in scripted camera mode. A: Toggle "Attach camera to unit" option. E: Toggle "Edit camera point" option. C: Toggle "Scripted camera control". Space: Creates a new camera point at the game view camera's location if "Edit camera point" is disabled. If "Edit camera point" is enabled then it instead moves the "Active camera point" to the camera's location. Shift + V: Using this key combo while in scripted camera mode will take over (posess) the selected unit. Backspace: Cycles through camera types for the posessed unit: First person Third person Flycam Caps lock: Start/stop animation recording. Unfortunately it is not possible to control the posessed unit while recording. Shift + Q: Exits a posessed unit while in scripted camera mode. Detail objects painting Shift + Right Click: Erases all detail objects in a highlighted cell. Shift + Control + Right Click: As above, but also deleted the cell itself.
Pretty much the same controls work throughout H1-2-3EK, as an amateur I've mainly though used the Middle-Mouse-WASD-RF-Shift ones, and the rest relied on clicking.

Another control feature is that you can in Sapien also place your playable character down, I think it's just TAB in Halo 3 Sapien, and in Halo 2 you need to first Under Game Data click on Player Simulation, then right-click in your game window in the world, and then with TAB switch to control the character and TAB to go back again.


Another method of spawning your character in Sapien (at least H3) is when you have the game window selected, press CTRL+Q and your character will spawn where your camera/view is, instead of say at the starting bsp which it does with TAB.
(Oh, and DEBUG menu also works in Sapien, the HOME key)

I mentioned placing weapons that weren't originally present in a map. I opened up the first Halo 1 level, edited types to add it as a thing you could now use in the map, placed a flamethrower towards the end, also a gunrack to somewhat hide it, and that was it, saving, it's there.

Same principle across H1-2-3EK.
Sapien Part 2
In Halo 2, I was always slightly peeved with the unfinished AI pathfinding towards the end in Arbiters Uprising & Great Journey levels. In them it makes inworld sense that the Elites you run across would be just as passionate as you are to charge, continue on assaulting through every Brute you encounter. But in many sections, the Elite AI would just kind of stop, not continuing (Great Journey it was the pair of Hunters you meet which always stopped at the bridge before the holding cells room).

What I did to slightly fix it, was to open up the \Steam\SteamApps\common\H2EK\tags\scenarios\solo\08a_deltacliffs scenario file in Sapien, go over different orders, especially ones towards the end when you're back outside, hopefully with a squad of elites, there are multiple orders of the type e#_cov_etc, and many don't need to be as lax as they are by default. Many also have very limited firing positions, and - though I'm not exactly sure if it's essential - it seemed safe to make a few more of the appropriate areas numbers, especially further towards the end of that order, overlapping a bit with the beginning of the next order in line.
Another thing I found worked for H2, was to force their combat status to combat, and the whole "follow player" flag.


You can add "secondary" firing areas, with firing positions further along, with a trigger for when the AI will move to it, in the picture I made the trigger to be when the player is not within 2 world units of them.
Also, I edited the triggers to force the AI to change orders instead of lingering in the same one for too long, with triggers like if all the prophet forces were dead in that specific section.


You can create new triggers as well.

I made a New Instance of a trigger, looked at another trigger with a similar rule, copied its homework, so in that picture the trigger is if that squad (e9_pro, it's an overarching parent group of other squads within that) has A or fewer alive, the "a" below being zero. Meaning in the previous picture the next order will be triggered when that group of enemies are all dead.

(BTW my edits on deltacliffs/Uprising worked better in a compiled map than in standalone, so even when you might feel that something doesn't work when testing in the tag_test, it might actually work in the final product.)

-------

In Halo 3 I made novel Elite buddies to follow you in many missions.
In Floodgate, I placed at the start a new Elite buddy. For Floodgate it was technically a bit easy, as I just made a duplicate of the Arbiter squad, in every AI->Squads->enc_workertown or enc_warehouse etc, placed starting locations close to where the Arbiter AI would start in different zones, I had the same initial zones and orders, I changed the Parent to be gr_allies because if it were the Arbiter one, then if you'd play coop it would remove the arbiter AI squads. For parity I kept the character, weapons etc the same in each squad in each enc_ subsection.

BTW, it says that I have the Elite "Initially Placed" in a picture above. That was my crude way to force it in the level to show up, but the "proper" way which may look better, instead of having an AI just sitting there from the start (works for Floodgate), is to edit the script file, have (ai_place sq_wt_elite_ally) etc in the beginning sections of what zone or point in time you want it.

Now, on this level it was pretty easy (For other levels, like Ark, or Covenant, I often just placed an elite into an existing marine squad, but sometimes a new one), but my experience with the Floodgate level brings me to another wrinkle worth sharing.
With the November 3rd Hotfix, my simple solution hit a wall, it didn't function correctly anymore. The Elite would follow you like the Arbiter all the way up to the warehouse, but then it wouldn't continue into the warehouse, migrate to that section and those orders (amusingly also there was another elite, duplicate then in that starting point).
Worked before, why not now?
Presumably the hotfix tweaked the floodvoi mission script file in \Steam\SteamApps\common\H3EK\data\levels\solo\050_floodvoi\scripts (you can edit these with notepad++ easily enough), and after some looking and thinking about the specific places in the game, the orders, the transitions, I found what I needed to do was check the ai_set_objective parts, and make sure my elite was being migrated into its proper objective, for this I just placed under the sections like
; migrate ai into proper objectives (ai_set_objective gr_arbiter obj_wh_allies) (ai_set_objective gr_wt_marines obj_wh_allies) (ai_set_objective gr_allies obj_wh_allies)
(Didn't have to do this for the others, as I had it in gr_allies throughout and those were then migrated later on.)
Compile scripts in Sapien, save, and testing to Standalone.
A Bit on Scripts 1
... Well, I guess I should elaborate a bit more on script files before moving on to the tag_test tool.

Script files, .hsc files, exist in the data folder inside your Chelan_1/H2EK/H3EK folders, you don't use Guerilla or Sapien to edit them, you can use notepad, though I still suggest notepad++ just in case, a better free alternative.
After you've edited a hsc file, say as I did with Floodgate in Steam\SteamApps\common\H3EK\data\levels\solo\050_floodvoi\scripts, the mission file, you then open up that scenario file in Steam\SteamApps\common\H3EK\tags\levels\solo\050_floodvoi, with Sapien, and in the top left corner you use the "Compile Scripts" option, and then save the scenario, and you can check your changes in Standalone or a compiled map.

Editing script files as been a bit volatile from my experience. One reason is that you need to be much more mindful when editing, paying attention to the structure of all the lines, simply just forgetting a "(" or a " or a command in one single place will easily result in the game just loading up to a black screen and sitting there, and you need to go back and hunt for where you broke the logic.
The other reason is because these tools aren't perfect, and I'm not sure if these script files are 100% as they should, since they seem like they can get updates as well.

Luckily, blood and flesh human beings sat down to write the scripts originally, so they are in plain english, with some funny commentary here and there. Unluckily, in some cases that's exactly where weird behaviours and broken scripted sequences derive from as I suspect some of my H2 frustrations arose from.

-----------------

I'll expand the Floodgate elite transition I was dealing with, though my experience with Halo 2 scripts might be more informative.

Most sections have a clear distinction for areas. Floodvoi/gate the warehouse section just has a big
;=============================
;=========WAREHOUSE=========
;=============================
Telling you that now it will deal with warehouse scripts.
A Zone, area, usually start with a bunch of generic commands, wake this, place that, set objective, so it was easy for me to spot that in the warehouse
; migrate ai into proper objectives (ai_set_objective gr_arbiter obj_wh_allies) (ai_set_objective gr_wt_marines obj_wh_allies)
But all the rest that I searched for in the text file had "gr_allies", and my Elite was in the group "gr_allies" (as you could see in the screenshots previously), the easiest option seemed to be to just copy that extra line to also set gr_allies, and not needing to do anything else after that.

Halo 3 has those Cortana & Gravemind flashes which slow you down to a crawl.
How would you increase your speed, or as it were, input rate in general?

The globals_scripts . hsc in the data/globals folder is what you want to look into.
; ====================================== ; Cortana / Gravemind Channel Scripts == ; ====================================== ... (script continuous gs_cortana_header (sleep_until g_cortana_header 1) (print "cortana header") --- ; scale player input down (player_control_scale_all_input 0.5 0.5) --- (script continuous gs_cortana_footer (sleep_until g_cortana_footer 1) (print "cortana footer") --- ; scale player input up (player_control_scale_all_input 1.0 0.5) ---- (script continuous gs_gravemind_header ---- (script continuous gs_gravemind_footer
As you can see, there are mainly two lines you'll want to edit: The one under gs_cortana_header not allowing it to scale player input down so much, same with gs_gravemind_header, not scaling player input down so much. Just compare & contrast the up and down lines, up sits at 1.0, which seems plain as day as meaning normal, and anything below is, well, below, slower.

-------

In Halo 2, I investigated the script files for Uprising (deltacliffs) and Great Journey (deltacontrol) the most, and did some heavy-ish tweaks, though they weren't always impactful, but still worth sharing because they are commands and should give an image of what works.

The Hunter Bridge in Great Journey has the most of it all even when it didn't work as well as in Uprising for me, but I'll share my story of the bridge here.
\Steam\SteamApps\common\H2EK\data\scenarios\solo\08b_deltacontrol\scripts
Opening up the 08b_deltacontrol_mission hsc file, well, first thing I noted, was the weird order, start of the level stuff is at the bottom of the file, and then it works upwards to the top being the end.

Opening and closing a specific area is helpfully delineated by a ;- Init and Cleanup - section an a ;= ENCOUNTER # = section, so you can see inbetween those sandwiched the scripts for that linear part in the game.
Just reading the script tells enough to know where you're going in the location and events of the mission, it almost narrates the flow of the mission.

Encounter 4 is the cave area before the bridge, the encounter section goes over the events there, and above that starts the bridge section.
First, a weird thing that I don't know why Bungie did but resulted in me always playing a dumb dance in vanilla.
When your Hunters & dual wielding needler Elite would move from the cave up the ramp to wait for you, and then the bsp loading would change to the bridge, the allies would not migrate here, BUT, if you'd go a bit to the bridge to spawn the prophet forces there then go back towards to the cave and cause it to reload that bsp, then just immediately go back to the bridge to load that bsp again, then suddenly the allies would wake up and go to the bridge.
... What?
Look at this part with the start of that bridge encounter:
(script dormant e5_cov_hunters0_main ; Wait until they've moved on from the previous encounter (sleep_until (and (<= (ai_living_count e4_pro_inf0) 0) (<= (ai_living_count e4_pro_inf1) 0) (<= (ai_living_count e4_pro_inf3) 0) ) ) (sleep_until (= (structure_bsp_index) 1) 15) (sleep_until (= (structure_bsp_index) 0) 15) ; Migrate them, teleport them (ai_migrate e4_cov_hunters0 e5_cov_hunters0) (ai_teleport_to_starting_location_if_outside_bsp e5_cov_hunters0) ) (script dormant e5_cov_inf0_main ; Wait until they've moved on from the previous encounter (sleep_until (and (<= (ai_living_count e4_pro_inf0) 0) (<= (ai_living_count e4_pro_inf1) 0) (<= (ai_living_count e4_pro_inf3) 0) ) ) (sleep_until (= (structure_bsp_index) 1) 15) (sleep_until (= (structure_bsp_index) 0) 15) ; Migrate them, teleport them (ai_migrate e4_cov_inf0 e5_cov_inf0) (ai_teleport_to_starting_location_if_outside_bsp e5_cov_inf0) )
What is that? That's supposed to be transitioning your allies to the bridge?
I replaced those with:
(script dormant e5_cov_hunters0_main ; Migrate them, teleport them (ai_migrate e4_cov_hunters0 e5_cov_hunters0) (ai_teleport_to_starting_location_if_outside_bsp e5_cov_hunters0) (sleep 1) (ai_set_orders e5_cov_hunters0 e5_cov_hunters0_init) ) (script dormant e5_cov_inf0_main ; Migrate them, teleport them (ai_migrate e4_cov_inf0 e5_cov_inf0) (ai_teleport_to_starting_location_if_outside_bsp e5_cov_inf0) (sleep 1) (ai_set_orders e5_cov_inf0 e5_cov_inf0_init) )
Streamlined, straightforward, now when you go to the bridge your allies just continue without any complicated tapdance.
They are migrated to the next squad. In the games the same units are often in a different squad when you continue on. There are cases where, if the game has problems migrating the original characters to the next squad in the next area, it ends up creating duplicates. This happened to me with the Elite in Floodgate, and it happened with my Hunters with them getting from the bridge to the cell rooms.
A Bit on Scripts 2
I'm going to say again, I did not find an ideal solution, the Hunters still lingered on the bridge, but the things I did were still things that had their uses in other places.
Just like with Uprising, in Sapien I placed more firing positions on the bridge, closer to the corridor transitioning to the Holding Cells room where Brutes are holding Elite Councilors and another pair of Hunters. I made their orders follow closest player and added triggers for them to move to the next order.
Didn't work in this case, but good ideas on the paper.
One problem which I solved, was that there wasn't exactly a clean way to have another pair of hunters in the hunterroom with the scripts that control how the hunters in the holding cells would behave. They have scripts to keep them passive behind the bars and look at you, and only start to attack when they are freed. It seemed to mess with the free hunters' behaviours even when I got them there (I literally physically pushed and punched them through the bridge door and up the ramp!).
(script command_script cs_e6_cov_hunters0_1_init ; Make the AI ignore them (ai_disregard (ai_get_object ai_current_actor) true) ; Sleep until we've seen the player or our door is destroyed (sleep_until (or (ai_trigger_test generic_player_sighted ai_current_squad) (< (object_get_health e6_jail_shield5) 0) ) 15 ) ; The look at the player (cs_look_player true) ; Sleep until my door is open (sleep_until (< (object_get_health e6_jail_shield5) 0) 15) ; Stop looking at the player, stop being disregarded, get combat ready (ai_disregard (ai_get_object ai_current_actor) false) (cs_force_combat_status 4) (cs_look_player false) ; If the other door isn't open... (if (> (object_get_health e6_jail_shield4) 0) (begin ; Move out (cs_enable_pathfinding_failsafe true) (cs_go_to cs_e6_hunter_room/hunter1_0) ; Shoot until it's dead (cs_shoot_point true cs_e6_hunter_room/shield4) (sleep_until (< (object_get_health e6_jail_shield4) 0) 15 150) ) ) ; Queue up the jailbreak behavior (cs_queue_command_script ai_current_actor cs_e6_jailbreak_behavior) ) *; (script command_script cs_e6_jailbreak_scene (ai_play_line ai_current_actor 0610) ; "Free our bros, death to the fuzz!" )
My suspicions are that those messed up some part of the Hunter behaviour once they did get to the bsp switch.

I made the bridge hunters first migrate to a different new squad before migrating to the cell room Hunter Squad, have their own orders in the cell room, and only until a trigger (all cell room pro forces dead) then transition back into the main hunter squad.

The init order below, is the only one where I made the assault style to guarding and forced combat status to NONE, the continue1 & engage are assault and combat, still following the player, and debug on if it does anything.


In the script file, for the transitions from e5->e6, their areas, encounters:
;- Order Scripts -----
;- Squad Controls ----
[...]
(script dormant e5_cov_hunters0_continue1 (cs_enable_pathfinding_failsafe true) (cs_enable_targeting true) (cs_enable_looking true) (cs_enable_moving true) (cs_ignore_obstacles true) (cs_enable_dialogue true) (cs_go_to e5_bridge/p0) )
You can make points, where you can use that "cs_go_to"

For e6 init & cleanup and the squad controls and encounters:
;- Init and Cleanup ------------------------------ (script dormant e6_main (sleep_until (volume_test_objects tv_e6_main_begin (players)) 15) (set g_e6_started true) (game_save) (print "e6_main") (data_mine_set_mission_segment "e6_jail") ; Music (wake music_08b_05_start) ; Wake subsequent scripts (wake e7_main) ; Wake control scripts (wake e6_cov_inf0_main) (wake e6_cov_inf1_main) (wake e6_cov_hunters0_main) (wake e6_cov_hunters1_main) (wake e6_pro_inf0_main) ; Shut down (sleep_until g_e7_started) (sleep_forever e6_cov_inf0_main) (sleep_forever e6_cov_inf1_main) (sleep_forever e6_cov_hunters0_main) (sleep_forever e6_cov_hunters1_main) (sleep_forever e6_pro_inf0_main) ; Condemn (ai_disposable e6_pro true) ) (script static void test_hunter_room (switch_bsp 1) (sleep 1) (object_teleport (player0) e6_test) (ai_place e6_cov_inf0) (ai_migrate e5_cov_inf0 e6_cov_inf0) (ai_migrate e5_cov_hunters0 e6_cov_hunters1) (ai_place e6_cov_hunters1) (ai_renew e6_cov) (ai_disposable e6_cov false) (if (not g_e6_started) (wake e6_main)) )
;- Squad Controls -- --------- (script dormant e6_cov_hunters1_main (ai_migrate e5_cov_hunters0 e6_cov_hunters1) (ai_teleport_to_starting_location_if_outside_bsp e6_cov_hunters1) (sleep 15) (ai_set_orders e6_cov_hunters1 e6_cov_hunters1_init) ) (script dormant e6_cov_hunters1_init (cs_enable_pathfinding_failsafe true) (cs_enable_targeting true) (cs_enable_looking true) (cs_enable_moving true) (cs_ignore_obstacles true) (ai_magically_see_object ai_current_squad (player0)) (cs_approach (player0) 2 4 3) ) (script dormant e6_cov_hunters1_engage (cs_enable_pathfinding_failsafe true) (cs_enable_targeting true) (cs_enable_looking true) (cs_enable_moving true) (cs_ignore_obstacles true) (cs_enable_dialogue true) (cs_force_combat_status 4) ; Release prisoners (cs_run_command_script e6_cov_hunters1 cs_e6_jailbreak_behavior) )
;= ENCOUNTER 6 ======= ;* A room where Elites and Hunters are imprisoned, waiting for you to free them. Begins when the player enters the room. Ends when the player leaves the room. Elites e6_cov_inf0 - e5_cov_inf0, Elite allies (init) - Waiting in the elbow room (advance0) - Creeping into the Hunter room (engage0) - Engaging the jailors (follow) - Follow the Dervish e6_cov_inf1 - Imprisoned Elites _0 - Elite in first cell _1 - Elite in second cell _2 - Two Elites in a corner cell _3 - A zealot in the third cell e6_cov_hunters0 - e5_cov_hunters0, or imprisoned Hunter allies (init) - Waiting in the Elbow room (advance0) - Walking up to the entrance of the Hunter room (engage0) - Engage the jailors from the entrance (engage1) - Engage the jailors from the right side (if freed) (follow) - Follow the Dervish e6_cov_hunters1 - e5_cov_hunters, hopefully properly following now (init) - Should follow now... (engage) -should now properly advance into cell room? Let's hope they then continue outside ---------
These scripts allowed the hunters, once in the Cell room bsp, to have a natural behaviour, coming up to the room but not engaging until the Prophet forces were alerted, then charge, going berzerk, still tethered to the player and as such dragged forward, and when the room was clear, moving on back to the normal vanilla hunter orders.

Sadly, the (ai_teleport_to_starting_location_if_outside_bsp e6_cov_hunters1) was the main one to force the hunters to crudely teleport from the bridge into the cell room bsp. As long as you're not running backwards when you're crossing into the next bsp, you won't notice this trick.
Scripts...
In closing, some useful commands I copied from different script files:
(cs_enable_pathfinding_failsafe true) (cs_enable_targeting true) (cs_enable_looking true) (cs_enable_moving true) (cs_ignore_obstacles true) (ai_magically_see_object ai_current_squad (player0)) (cs_approach (player0) 2 4 3) - A bit like a "follow" command, 2 being minimun radius, the next max and something in between (cs_approach ai_current_squad (player0)) (ai_migrate (object_get_ai (list_get (ai_actors e6_cov) 0)) e7_cov_inf0) - More universal migration? (ai_teleport_to_starting_location_if_outside_bsp e6_cov_hunters1) (cs_enable_dialogue true) (cs_go_to xxxxxxxx) go to the designated point/bsp/vehicle/whatever - They are under Sapien AI Script Data point sets (cs_go_to ai_current_squad (player0)) (cs_crouch true) - Seems to make AI remain stationary ? (sleep (random_range 90 120)) (script dormant e4_mars_inf0_main ; Migrate the Marines over (ai_migrate e3_mars_inf0 e4_mars_inf0) (ai_migrate e3_mars_inf1 e4_mars_inf0) (ai_renew e4_mars_inf0) (ai_disposable e4_mars_inf0 false) ) ; Stop looking at the player, stop being disregarded, get combat ready (ai_disregard (ai_get_object ai_current_actor) false) (cs_force_combat_status 4) (cs_look_player false) (script static void test_generator_cave (switch_bsp 1) (sleep 1) (object_teleport (player0) e4_test) (ai_place e4_cov_inf0) - places the AI there when switching bsp? (ai_place e4_cov_hunters0) (if (not g_e4_started) (wake e4_main)) ) ; Make him mortal again (set g_e3_hunter0_arrived true) (ai_renew ai_current_actor) (unit_impervious (ai_get_unit ai_current_actor) false) (object_cannot_die (ai_get_object ai_current_actor) false) (sleep_until (or (<= (objects_distance_to_object (ai_actors e2_pro_inf0) (ai_get_object ai_current_actor)) 2) (<= (ai_strength ai_current_actor) 0.75) (<= (ai_living_count e2_pro_inf0) 1) ) ) (ai_set_active_camo ai_current_actor false) )
That's a list of things I kept in my backpocket when examining the AI issues I had with Uprising & Great Journey.
But in the end, scripts are a bit finicky, the engine is finicky, and none are a guaranteed fix for frustrations, especially bsp transitions can still mess with the best laid plans.
Standalone
The Halo_tag_test executable is basically a way to simply play a level, having it load up the tags directly, instead of having to compile it all into a map file that you then move to the MCC map directories and play the modded map in the game.
They aren't perfect, but you can do so much with them.
Developer consoles work with them, having a ton of commands you can use for testing, probably best listed in the c20 Reclaimers wiki (You'll want to look for Scripting, like H1 Scripting page on c20).
The key to open the console can vary depending on your keyboard, usually it's tilde, the wavy symbol, button below your ESC and above your TAB and capslock keys. But for me, with a skandinavian keyboard, it was ö.

Halo 1 and Halo 2 standalones look pretty much just like how their original PC versions looked like (in menus and stuff, ingame you don't have the broken shaders and effects and s**t, unless you've messed up).
None of these are as stable as the MCC main game, they are fragile, finicky, prone to crashing, for instance editing some menu customizations like graphics options can often crash them.

Halo 3 Standalone suffers from having no audio, and the main menu is pretty much pointless functionally, but more on how to use the Halo3_tag_test below.

In Halo 2 & 3 you also have a debug menu, the HOME key, which can be navigated with your arrow keys, up, down, left and right can change a setting, and enter of course. Not sure of any other way to close the debug menu again but toggling with HOME.
If you are bothered by lots of error messages on your screen when playing, then in the debug menu for instance the error geometry hide all option is what you want if you want to ignore those which probably won't even show up to be an issue in the game itself. Or the Events Suppress one as well to reduce text clutter on screen.

For Halo 3 standalone, you can put inside the init.txt file in your H3EK folder some commands that will be turned on/off at the start. Here are mine:
scenario_load_all_tags true game_difficulty legendary error_geometry_hide_all render_thread_enable true cheat_deathless_player true events_suppress_console_display 1 render_depth_of_field_enable false game_start levels\solo\050_floodvoi\050_floodvoi
(You don't have to load maps only with placing a line into init txt, the debug menu in the game also has a mission section you can choose to load maps from.)

I highly recommend the first one, loading all tags, helps to reduce issues (huge thanks to a user on the Halo Modding Reclaimers Discord for the load_all_tags suggestion).
As you can see, I've chosen to just hide the errors with geometry taking up screenspace on my monitor, same with events, and load up a mission skipping the main menu which is just extra time loading wasting your time. This way I also save time not having to always open up the debug menu when I've loaded a map and individually edit each setting every time I might just want by default and later choose to turn on/off if I want.
Check the debug_menu_init txt file inside the H3EK/bin folder for more commands you can copy into your init txt file. (Again thanks to discord user!)

You can place an init txt file into the H2EK folder for the Halo2_tag_test to read, and from my testing the scenario_load_all_tags true line does seem to work for H2 also, as I had a few things fixed in a playtest. So again a recommended first line to add for H2EK init txt.
No harm in creating an init txt into Halo 1's chelan_1 folder as well and place your desired commands there.

As I said in a previous section, I have tried in real time with both Guerilla & Standalone open at the same time, alt+tabbing back and forth, tweaking a few tags, then switching to standalone, test the result, go back, tweak again, and so on.
That works excellently, for H3.
Sadly H2 Standalone crashes when you try and edit a tag in realtime, BUT, Sapien doesn't crash and reloads edited tags instantly.
H1 Standalone does sort of work, I had trouble making it reload a tag again though, but could be user error, still, didn't crash and it did reload a tag the first time. Sapien I didn't see a change, but didn't crash.

I'll close with some pictures since I was demonstrating and testing Floodgate.

Debug menu in question.

The starting Elite.

Showing how the Elite now follows into the warehouse, & an Automag & Silenced SMG I picked up that I hid in a few corners, dual wielding, and I updated the chud_definition files for the automag & silenced smg in ui/chud in guerilla to have entries for dual wielding in the left hand, copying the homework of something like the magnum & smg, but then tweaking to also mirror their own right hand info.

I edited the weapons of the insertion pod spec ops elites, and I made the commander (the one the Arbiter talks to when they meet), from a red major into my custom light-grey one, which has its own character and style files I made to be a bit more aggressive and more easily prone to berzerking.


Bonus picture, from testing a compiled map of Uprising. I changed some elites for more variety, in weapons and look, and here they are (didn't place any new ones, those are all elites that existed in the squads already), followed me all the way to the end of the level, without having to do complicated tapdances or physically pushing them towards the next area, thanks to the above-mentioned Sapien & Script changes.
Backups
When you're modding things, you probably will want to make backups of your edits, so that you can revert a change you don't like, or have the backups for when the tools get updates - And you should probably extract the data and tags zips again if they were updated as well (recommended clean, deleting the old folders just in case, but it's safe most of the time to then overwrite them with your modded backups).

Now how would you simply keep backups of only the subset of files you've tinkered with (or created from scratch), in folders containing hundreds of subfolders with thousands of files?

Create a bat file in the main installation folder, next to the tags folders and the tool exe etc, you can create a txt text document file there, then when renaming it just replace the last txt part with bat (if you click "view" in the top bar of your windows explorer folder window, you'll see a "File Name Extensions" box you'll want to tick, the first picture in the Guerilla section shows it), and edit the bat with notepad, and add into it for instance:

Robocopy tags backup\tags /MAXAGE:20200101 /s /xo

First file path is what folder you want the command line to examine, second is where to copy, and MAXAGE determines how new the file must be to copy, and only those, examining subfolders and copying their format as well. The date I placed there is simply a crude working one as each original tag will be pre-2020 (Halo 3 being newest at 2007).

This will of course work generally, create bat files into the other trilogy folders, replace the folder fields above with their respective ones and where you want them to create the backups.

(Having simply "tags" is because you don't need the whole folderpath since your bat file is in the same folder where the tags folder is in.)

You can double-click the bat to run the copying whenever and how many times you want to keep your files up to date.
I suggest zipping your backup folders every once in a while before updating them, in case you want to use an older one but not be forced to just wipe the slate clean with an unmodded one, should you find your latest edit ruining the result.
Compiling the Results
When you've modded something and want to compile all your work into a working map file that you can place inside your MCC folders (\Steam\SteamApps\common\Halo The Master Chief Collection\halo1\maps, /halo2/h2_maps_win64_dx11 or /halo3/maps), you might want to again make a bat file (or multiple, I have one bat file for each map in the games, and another bat file for compiling all at once) to make it more automatic with a double-click. The bat file should be inside the mod tools installation folders (Chelan_1, H2EK, H3EK)

Halo 1:
tool build-cache-file "levels\a10\a10" classic tool build-cache-file "levels\a30\a30" classic tool build-cache-file "levels\a50\a50" classic tool build-cache-file "levels\b30\b30" classic tool build-cache-file "levels\b40\b40" classic tool build-cache-file "levels\c10\c10" classic tool build-cache-file "levels\c20\c20" classic tool build-cache-file "levels\c40\c40" classic tool build-cache-file "levels\d20\d20" classic tool build-cache-file "levels\d40\d40" classic
You have to have either classic or remastered, having classic breaks the anniversary toggle, meaning TAB won't do anything ingame - I have it because I wanted to add the plasma cannon & flamethrower into the game, and their assets don't exist in anniversary and crashes the game, and anniversary is bad anyway, so nothing lost imo.

Halo 2:
tool build-cache-file "scenarios\solo\00a_introduction\00a_introduction" dx11_64 resource_sharing tool build-cache-file "scenarios\solo\01a_tutorial\01a_tutorial" dx11_64 resource_sharing tool build-cache-file "scenarios\solo\01b_spacestation\01b_spacestation" dx11_64 resource_sharing tool build-cache-file "scenarios\solo\03a_oldmombasa\03a_oldmombasa" dx11_64 resource_sharing tool build-cache-file "scenarios\solo\03b_newmombasa\03b_newmombasa" dx11_64 resource_sharing tool build-cache-file "scenarios\solo\04a_gasgiant\04a_gasgiant" dx11_64 resource_sharing tool build-cache-file "scenarios\solo\04b_floodlab\04b_floodlab" dx11_64 resource_sharing tool build-cache-file "scenarios\solo\05a_deltaapproach\05a_deltaapproach" dx11_64 resource_sharing tool build-cache-file "scenarios\solo\05b_deltatowers\05b_deltatowers" dx11_64 resource_sharing tool build-cache-file "scenarios\solo\06a_sentinelwalls\06a_sentinelwalls" dx11_64 resource_sharing tool build-cache-file "scenarios\solo\06b_floodzone\06b_floodzone" dx11_64 resource_sharing tool build-cache-file "scenarios\solo\07a_highcharity\07a_highcharity" dx11_64 resource_sharing tool build-cache-file "scenarios\solo\07b_forerunnership\07b_forerunnership" dx11_64 resource_sharing tool build-cache-file "scenarios\solo\08a_deltacliffs\08a_deltacliffs" dx11_64 resource_sharing tool build-cache-file "scenarios\solo\08b_deltacontrol\08b_deltacontrol" dx11_64 resource_sharing
resource_sharing I personally think is essential. You could build a self-contained map without that line, which would be more future-proof in case a MCC update alters one of the shared files. But that would mean it would include all the relevant Anniversary assets as well, and that would balloon the filesize of the map a lot, and now if you're making a mod for the entire campaign...
But if you're compiling a single map that you just want to try out, then definitely remove the resource_sharing, the line should only be used when making a mod for the entire campaign, and you should then also have those intro maps as well as it adds their resources into it and is then compatible with the shared resources files.

Halo 3:
tool build-cache-file "levels\solo\005_intro\005_intro" read tool build-cache-file "levels\solo\010_jungle\010_jungle" read tool build-cache-file "levels\solo\020_base\020_base" read tool build-cache-file "levels\solo\030_outskirts\030_outskirts" read tool build-cache-file "levels\solo\040_voi\040_voi" read tool build-cache-file "levels\solo\050_floodvoi\050_floodvoi" read tool build-cache-file "levels\solo\070_waste\070_waste" read tool build-cache-file "levels\solo\100_citadel\100_citadel" read tool build-cache-file "levels\solo\110_hc\110_hc" read tool build-cache-file "levels\solo\120_halo\120_halo" read tool build-cache-file "levels\solo\130_epilogue\130_epilogue" read
( read might be unnecessary, but I think it might help in making sure some scripts work, but in case of issues, or if it doesn't future-proof the map file, remove it.)

Double click the bat file, and let the command line thingy do its thing.
After the maps are compiled, you can just copy them from the new maps folder that showed up there (or in Halo 2's case, a folder named h2_maps_win64_dx11), and paste them inside the MCC install folders, overwriting the existing maps (as the game doesn't - yet at least - recognize maps with different names, which means you might want to back up the original).

But you can do a LOT of testing with the Standalone tag_test exe before going through the compiling process to play in the actual game itself, though that should be your final testing ring.

-------------------------

(The "tool" executable is used for that compiling process, but it is also used for a LOT more, I haven't dabbled into those other functions, but if you visit the tool pages on the c20 wiki, you'll see all kinds of commands you can use with it, if you plan on expanding your horizons with more modding areas.)

--------------------------

When you want to play your modded maps in the game itself, you'll need to play with Easy Anti Cheat (EAC) disabled. To do that, go to your steam library, and either right-click Halo MCC and click play, or just hit play from the main page of it (no desktop shortcut), you'll get a prompt asking you if you want to launch with EAC disabled or just normally.
Misc (In Progress)
Figured I'd add a cool thing I learned recently.
Thanks to the help of members on the Halo Modding Reclaimers Discord (not sure if I should shout them out if they'd be okay with it), I ported the Halo 1 soundtrack into Halo 2, and I'll later add here on how to go about then adding music in key places in missions.

I'm also hoping to eventually get around to recording some tutorials and put the videos here, what's holding me back is the effort required, I hate my own voice and have been sick for the most part of this year, and I really can't be bothered with getting specialized software, though native recording software has been surprisingly decent from minor testing. But Youtube hasn't allowed me to upload anything above 480p, which will also be an issue if I need to show details, text and such.

-----

Halo 1 music to be able to use in Halo 2.
You'll need: Tags from Halo CE (not the ones from MCC, if you use their music tags, they will be exported as OGG, and you'll need WAV files to be able to import them into Halo 2) - A member on Discord shared a rar in the H2-mcc-modding-help subchannel as we went through the steps.
With the H1CE tags, you'll be exporting the music tags with a program called Mozzarilla, easy to find on google, I got the ready package, no python needed, from
-- https // github com / Sigmmma / mek_essentials / releases / tag / v2.0.0-alpha2

- Run the MEK updater, ignore errors, just run it and close it after it's done.
- Open Mozzarilla, from settings set the CE tags directory where you've extracted the folder.
- Under Tools, select "Tag Data Extraction"
- By default everything for me was selected ("select which tag types to extract from", they were all green), so you'll want to unselect everything until only sound is selected, green.
- Personally, I didn't want to extract all sounds, dialogue, SFX etc, so I also set the Directory to Extract From to be specifically the music folder, and next to that browse button then used the extract button.
- It should do its thing!
- After that, the folder where your newly extracted WAV files will be is a data folder next to wherever the extracted tags folder is.

Okay, time for Halo 2 tool exe commands.
From the wiki, the command you'll want to use is:
Imports sound files in a directory with the import type set to single-layer. Each directory will get its own sound tag.
# sounds-single-layer <source-directory> <type> [compression]
tool sounds-single-layer "sound_test" projectile_impact adpcm
source-file - A local data path to the root of a directory or child directories containing sound files. Supported extensions are WAV saved as 16 bit PCM and AIFF. type - Set the sound class compression - Set the compression. The list of valid options is as follows. uncompressed adpcm opus
So, in this case, I again made a bat file in the same directory where my tool executable is in the H2EK folder, edited it to have this:
tool sounds-single-layer "data\sound\music" music uncompressed
Insert the folder within those quotation marks for your own location, or move the folder to be within the H2EK/data folder in a sound/music folder like I had it.

Run it, and now when you open Guerilla you can find under the sound/music folder tree all the new Halo 1 music folders!

You can even listen to the music within Guerilla! Scroll down to the Permutations section near the bottom of the sound file, and you can from the drop down menu select which snippet to listen to, and you'll see a Play button right there! (This feature exists in the other Guerillas too).

-----

Next time I'll try and walk through some ways to approach adding music, tweaking the way it plays in a mission. Will require Script editing.

**** I apologize for the lack of pictures to demonstrate things, but last time I edited the Guide I seemed to have already hit a limit for how many I could add, will think of workarounds later, though I still think maybe a video would be clearer in walking through steps ****
Conclusion.
The Halo tools are just some of the best things I've messed around with, bordering on its own chill out zone where I endlessly tweak and see my changes.
I feel that their structure is rather intuitive, the way information is clumped into tags, how the tools present all of that information, and just how flexible they can be.

We have them for 3 games, they are right here on steam, you can have a subforum to talk at, easy place to link the tools with, hopefully in the future Steam Workshop as well which have still been mentioned in the newer dev posts-- Halo already has an impressive infrastructure in its engine, easy blueprints to adopt and build upon, with possibilities to create and edit excellent AI with many different behaviours, new levels, effects, weapons, the inherent vehicle mechanics and mixed dual wielding, on top of the crazy stuff veterans have done in the past with HEK...

Say what you want of what 343i have done with Halo 4, 5, Infinite, or the initial launch of MCC, but this, MCC on Steam, Halo 1-2-3-ODST and the rest, with fixed legacy issues for H1&2, expansive customization in accessibility, keybinds, mouse, graphical elements, Hud elemens-- And Modding tools, not buried in some github, but here on Steam.
This is some of their best work, and it's a great time to be a Halo fan.

----------------------------------------------------------------

Remember to check out c20 dot reclaimers dot net, the Halo Modding Reclaimers Discord, and some posts on the Steam Modding Subforum for MCC, 343i people like postums sometime read the pinned feedback threads there for the different titles, so suggestions and reports of issues can be posted there.
And I want to thank again members of the Reclaimers Discord, users on the Steam subforum, who have talked with me through troubleshooting, and helped iron out a few details!

I hope this guide was of some help to people interested in dipping their toes into the wonderful world of modding Halo!
49 commentaires
Nathan  [créateur] 26 oct. 2024 à 3h32 
I don''t have the tools installed ATM, but you should check the script file of newmombasa and make sure the bsp load has ai_place yoursquadnamehere and maybe make sure you migrate them as well, if it's a completely new squad you're spawning and not just more marines in a pre-existing squad.
[TNY] Sulli 25 oct. 2024 à 9h27 
Hello, I have a question currently I am having a problem, I am in the newmombasa level and I am training to spawn marien, so on the sapiens the points are well set, but when I launch the level to test my marines does not appear
SFJake 25 avr. 2024 à 20h43 
Personally, using resource_sharing for Halo 2 and trying to play the maps in MCC, they hard crash on startup (fatal error). Without it and using "remastered_support" it works perfectly fine. Its fine for me with the big map size since this is for personal use, but still I don't understand why it only works this way.
Minos Prime 30 janv. 2024 à 15h34 
how do i add a working crack pipe to halo
Dark Wolf 9 janv. 2024 à 4h42 
Thank you, the second option worked now the maps have support for both graphics!
Nathan  [créateur] 9 janv. 2024 à 4h25 
Try maybe either
tool build-cache-file "scenarios\multi\example" dx11_64 compress|resource_sharing|remastered_support

Or
tool build-cache-file "scenarios\multi\example" dx11_64 compress resource_sharing remastered_support
For example, took those from
https://c20.reclaimers.net/h2/tools/h2-ek/h2-tool/#build-cache-file
Dark Wolf 9 janv. 2024 à 4h14 
Hello, your guide was very useful and it helped me a lot with the modding of Halo 2 and Halo 3, thank you very much for doing it :etgpilot:

But I have a question, how do I compile a Halo 2 maps so that it has the anniversary and classic graphics?

I only see classic graphics when I compile the map and test it in MCC i cannot change them to anniversary
Nathan  [créateur] 7 janv. 2024 à 9h42 
But, I decided to slightly clean up the wording and put in bold under Setup & Resources section about unzipping the tags and alluding to them containing in the zip files all the normal map/data files you'd need anyway and encounter within a ".map" file. In case there was any confusion in the matter. (Technically the zips come with even more, cut content these days that you can play around with.)
Arcturus 7 janv. 2024 à 9h13 
Emperoring, look at it this way; you have a factory that produces goods. All the machines in it are designed for one purpose or another. Then the product is put in a box, taped up and ready to be sold to a buyer. Those machines are no longer able to mess with the product that is taped up because the product is considered "finished".

Tools like Reclaimer and Assembly were built AFTER the games released, by modders who only had the .map files to work with. The "mod tools" are to my knowledge used by the developers themselves to make new maps from scratch, not to modify existing ones. There is a world of difference in their intended use.

And as Nathan said; all the assets used within the campaign maps are available as asset files alongside the modding tools. These tools aren't lame, you're just missing the point of them entirely.
Nathan  [créateur] 7 janv. 2024 à 3h56 
Don't know what else to add on top of what Cy said, apart from that these SDK tools are powerful, you might have missed it if you just skimmed steps, but the thing is ultimately by the end of the process you will have modded ".map" files in your hands after you're done with the SDKs, so really it's not that big of a deal, and yes, check out Assembly if all you want to do is modify pre-existing map files like we used to do back in the day with the Gearbox & Vista ports of Halo 1&2, but like many modders release their uncompiled tags as well which you can incorporate into your own projects.