Improving Snowball Fight... with Fists

How I would improve the 'Snowball Fight' mode by Halo Studios using a special weapon in Halo Infinite's Forge.

Alt text Written by Okom on Dec 18, 2024 in Halo. Last edited: Dec 29, 2024.

On Dec 17, 2024 Halo Studios released a new mode called "Snowball Fight" into a featured playlist with the same name. The mode was featured on 3 maps, Snowbound, Snow Ground & Snow Fire. After playing the mode and seeing how Halo Studios executed it's creation, I noticed some things that I could adjust to suit the gameplay experience of the mode better for my liking.

Plasma Grenades being thrown like snowballs.

Analysing the intent

I laid out some basic info on what I think the intention of the mode was so I could then dissect it and pick out parts to improve on. I saw the core values of the mode as being:

The issues

After playing a few games, I noted down the features that stuck out to me and made the gameplay experience less ideal:

The largest issues were the vehicle usage as well as the usage of the Sword weapon with empty ammo. The vehicles led to the gameplay of the mode completely diverting to the point that my teammates started throwing grenades at me in an attempt to stop the percieved griefing that it may have looked like.

Even my teammates didn't want me using the Ghost.

I realize that including vehicle support on the mode might've been to allow the Auto Turrets on the map Snowbound to exist on the map as they are classified as vehicles, but the vehicle abuse overweighs the inclusion of those in my opinion.

The other being the mode creator deciding to use an empty Energy Sword presumably due to it's third-person animation which looks like you're not holding a weapon. While that is a good point, the drawbacks of it were that a message saying "All weapons out of ammo" is constantly displayed on your screen as well as the crosshair of the weapon being kind of obnoxious to my liking.

-
Empty Energy Sword being the only weapon leads to the "All weapons out of ammo" message always showing.

The reason I paid so much attention to the Sword being used was cause I knew of a better and more cleaner method, and was surprised that the developer of the mode hadn't thought of it for an experience where the emphasis seems to be on a clean third-person player model.

The improvements

Here's what I thought of that would make the mode experience better:

The vehicles being on the map was quite of a shock to me, but there may be some reason behind why they were included. To me it's a no-brainer to not have vehicles in such a mode. Preventing meleeing was a personal preference of mine that I think would make players focus more on landing accurate sticks rather than sneaky melees even in close-range fights. My real interest though was using the Fists weapon.

The Fists weapon

The main focus of my improvements would be the "Fists" weapon, which is a normally unobtainable weapon type in Halo Infinite and is only used in the Weapon Drills and the Academy to display your player with no weapon. The weapon type has working animations for first- and third-person as well as all the other animations you'd need for a fully supported gameplay experience such as clambering, sliding and meleeing.

The Fists in use on Academy Training.

The reason why the Halo Studios developer responsible for creating the Snowball Fight mode not using the Fists weapon was probably down to them not knowing that it can even be accessed using Forge tricks.

The discovery

On Jan 30th, 2024, I saw an X post by Makoima where they had found a way to wield a weapon type that was just the fists. There was no explanation on how it was done or the steps to reproduce it, so I had to try and analyse the video in hopes of spotting some leads. To no avail, I let The Scripter's Guild (TSG) Discord community know that someone had found a way to get the Fists.

See the full conversation on TSG.
Makoima: 'Just discovered a way to have no weapon in your hand in Halo Infinite. Further testing needed...' with a 30-second video showing the Fists
Makoima was the first to publicize the Fists weapon being obtainable on a Forge map.

Coincidental discovery

I couldn't come to any conclusions just based on Makoima's video footage, but out of sheer coincidence just 2 hours after I started the conversation about the topic, Implied Skill was doing some completely unrelated things on a test map of ours and had somehow accidentally gotten the Fists.

He was looking into whether the Infected Energy Sword–a new weapon at the time–had any differences to the other Energy Sword variants on a random map, and then jumped on a vehicle health test map to research some vehicle damage resist values for Ringfall, a mod for Halo Infinite. He hadn't changed the mode settings he had adjusted that made him spawn with the Infected Energy Sword as he loaded into the test map and was surprised to find out that he had spawned with two weapons and the Fists weapon in his inventory.

"no irtv was used at all" he added.

When he first told me about it, I brushed it off as some typo as I didn't realize he was talking about the exact same Fists weapon we were pondering about in a completely separate community, but after reassuring it was the same, I had to look into how to reproduce what he had gotten.

Since the map was for testing vehicle health thresholds where we needed to constantly damage vehicles, I had set up a script that would grant the player an unlimited ammo Rocket Launcher as they spawned. This forceful grant of a weapon combined with the overridden Infected Energy Sword weapon in the mode settings was the magical combination that made the Fists weapon appear, and it was all a pure coincidence at the perfect time.

After confirming this to be one way to reproduce the Fists grant, I shared it to TSG, and we finally had a lead on what to follow. Staying undiscovered for 14 months since the launch of Forge on Nov 8, 2022, it was quite a welcome and exciting discovery for the Forge scripting community, including me.

The initial script and mode settings required to obtain the Fists.

More research

As I posted my findings in TSG where we were leading the conversation about the topic, user greeenzx notified that they had also discovered a similar method to mine and that they were sure the Fists weapon was related to the intro sequence where the player animations play. User artifice0 also mentioned that they had seen the Fists weapon in an early Infection mode, but hadn't found a way to reproduce the behavior outside of the mode.

At this point, Makoima himself had joined TSG and chimed in on the conversation; showing images and explaining how he got the Fists to appear. He had used a script that would give you two Energy Sword weapons as you spawned and noted that the Fists only appeared on initial spawn. He theorized that they are using a 3rd inventory slot, similar to how Fusion Coils or objectives do.

Having enough concrete information to back up the theories, we looked deeper into how to grant the Fists without changing mode settings. At this point Implied Skill had also gained an interest in the topic and looked at the Fists weapon tags with IRTV to discover it held the tags "drop on pickup" & "delete on drop", which made granting it to players seemingly impossible as it would just be instantly deleted. He confirmed this by removing the flags and afterwards being able to drop and pick up the Fists.

IRTV is a tag-editing tool for Halo Infinite that can only be used with anti-cheat off.
Disabling some flags on the Fists weapon allowed it to be dropped and picked up, but these were only possible with mods.

Compiling known info

As the research for this new weapon type was getting increasingly complex, I created a forum post in TSG where we could compile the info and research it further. The compiled info about the Fists weapon at this point was:

Granting of the Fists

The Weapon Type

Internal Weapon Flags

Getting the Fists in practice

Scripting nodes for giving players a weapon and overriding their loadout
Script required to spawn with the Fists.
Tag editor showing feature flags of the Fists weapon
Weapon flag that allows the weapon to be in a 3rd weapon slot.
Tag editor showing feature flags of the Fists weapon
Weapon flag that drops the weapon when picking up another weapon.
Tag editor showing feature flags of the Fists weapont
Weapon flag that deletes the weapon when it's dropped.

Some more research was done and I released the script I compiled as a resource called tsg machinimaFists. Although it wasn't what we had fully hoped to end up with since the Fists could not be granted back to the player due to the internal flags in the weapon type, it was the best we could do at this point, and at least share our findings with the machinima community.

The Clone Object node

The research for the Fists weapon sat for three months until the release of the Banished Honor Update for Halo Infinite which saw the addition of a very powerful node called "Clone Object". In essence, this node can clone any object, including the Fists, which would finally make it possible to grant them to players on command.

Note that before we were trying to pull the Weapon Type of the object to grant it, but now we could clone the object and force the cloned object itself into the player's inventory while not trying to pull its Weapon Type data.

Continuing the project

Now having a vision of the endgame for this project in sight, I set out to find out a consistent way to reference the Fists object so we could clone it later. I figured out that the Fists were always the last weapon to be added to a player's inventory during the intro animation sequence in any mode, right before Gameplay Start. The Fists would be deleted as gameplay began so they had to be pulled and cloned before that time.

This was an approach we hadn't even considered earlier as there would've been no way to utilize it since the Fists get deleted as gameplay begins. Being able to duplicate the Fists changed that.

I wrote a script that added all initial weapons of a player to a list and if the list size stayed the same for 0.10 seconds, the last weapon in the list would be the Fists, and it would be stored.

Scripting nodes for storing the Fists, initial pass
Initial script utilizing the Clone Object node for storing the Fists weapon.

Improving the code

I would go on to improve this logic the next day following some critical examination of my code by Discord user coke_cane, but the core of the logic for storing the Fists weapon remains the same to this day.

The way I improved the code was by removing the unnecessary check of making sure the weapon list size was the same, instead just adding a long enough wait time and then storing the last weapon in the list. I then fleshed out the script with events that give the stored Fists object to the player by forcing the object in their inventory and published it for the community. The published prefabs and modes can be found with this filter link. I even made a silly mode called Knock Out that makes the Fists an integral part of the mode where you can kill players in one punch.

Scripting nodes for storing the Fists, final pass
Final script utilizing the Clone Object node for storing the Fists weapon and granting it to players.

The breakdown for the final Fist weapon granting code is as follows:

  1. Each added weapon is tracked per player and added to an object list.
  2. The object list is checked after 1.80 seconds and if the Fists weapon hasn't been stored yet, execution continues.
  3. The last weapon in the object list is cloned and the clone is stored as the Fists weapon reference.
    • This is because the last of the first weapons to be added to a player's inventory is always the Fists weapon.
  4. The Fists weapon object reference is used to grant a clone of the Fists to the player on command, such as On Gameplay Start and On Player Spawned.

The improved mode

Back to Snowball Fight: With all of my adjustments, here's what the core values of the mode would consist of:

And here's what the gameplay experience would generally look like with the changes:
-
Cleaner UI with the Fists weapon.
-
Vehicle spawning turned off.
There's no distractions anymore; the focus is just on predicting the arc of your snowball and dodging others.

And since I've spent so much time justifying the changes I'd make to the mode, it'd be dumb of me not to let everyone try out the changes. You can find the mode following the button below and try it out in Halo Infinite for yourself!

Closing

The Snowball Fight gave me a good opportunity to dive into the fun research project that was the Fists weapon granting as well as experiment with improving a dev-made mode.

Another use of the Fists weapon I discovered is that you can have up to four weapons in your inventory by picking up the Fists at the right times and replacing them with other weapons. This was only left as a proof-of-concept though, as it required manual input from the player by picking up the Fists, so it wasn't pursued further as it couldn't be automated.

See the full conversation on TSG.
Picking up the Fists at right times and replacing them with weapons allowed for four weapons to be held.