Firefight CE interview
Posted November 30th 2022
Momentarily bringing my site back out of cryostasis, I present here an in-depth interview with Photolysis (aka Mango0fDoom) on Firefight CE, his recently released Firefight mod for Halo as part of MCC PC (launch trailer here). The pictures I've added come from the promo videos and some private developmental footage (click to enlarge).
- Origin and development
- Map talk
- Weapons and vehicles
- Gametypes and skulls
- Foe and friend
- Music and more
- Closing
Origin and development
"I am actually surprised at what I've been able to get to so far, since I do think I'm on the verge of pushing the engine close to the breaking point. And as I've gone on at length, it's workarounds on top of workarounds." - Photolysis, private email, September 2021
So Photolysis, when did you get the idea for making this mod, and what were your goals?
The idea has always been something of a "what if" in my mind going all the way back to when Firefight was first announced for ODST. When 343i released updated modding tools for CEA in June 2021 I wanted to explore if it was possible to make such a thing. Or failing that, if I could create something similar enough that I'd enjoy playing.
The ideal goal would be to have a very polished and customisable experience, similar to what Bungie created with Reach's version of Firefight, and the features 343i was later able to add to ODST's Firefight mode. It was very apparent very quickly that actually achieving this level of polish was going to be impossible without changing the engine itself, but it was something to strive for.
One very important consideration was that I wanted to be very respectful of what Bungie accomplished, and retain the feel of the gameplay that makes Halo so unique; any changes there had to be done with a great deal of care and caution.
Having been in touch with you along the way, I have the impression that a lot of your work lay in figuring out how to use Halo 'scripting' to make things happen. Can you say more on that?
When I started this project I had a pretty minimal understanding of Halo's scripting language, so learning the basics took quite a bit of trial and error, to put it mildly. A big challenge here is that documentation is extremely limited, and mostly reliant on what players have discovered themselves over the years and pooled together. Helpfully, 343i provided the original Halo campaign scripts as part of the official mod tools, and this was very useful in figuring out how certain functions worked. Things probably wouldn't have been possible without them.
I think another challenge was in cramming your coding into what I gather was a rather minimal space, significantly limiting how much you could do. Tell us about that please.
So the scripting engine Halo uses can only handle a certain amount of entries. To simplify we might as well call them lines of code. 343i did greatly expand this from the original 2001 version of the CE engine, but unlike regular programming where for many practical purposes you can write as much code as you want, that's not the situation with Halo's scripting.
To add to this problem, a lot of scripting space is taken up by functions that would normally be handled by the main game engine. Worse still, because Halo's scripting language doesn't support many of the programming features used in almost every modern programming language, this results in very bloated code when you try to do anything remotely complicated - and a lot of this stuff definitely was complex.
As the scope of the project increased, this meant regularly having to go back and optimise or remove existing code. Some of this optimisation was fairly smooth as I was able to use my much greater experience by that point to write better code, but sometimes it was very painful as it meant throwing away a lot of work, or spending a long time for minor optimisation gains.
What about the overall picture of Firefight CE's long development? It's evolution. Could you sketch that out? And maybe there were some particular milestones or breakthroughs worth mentioning?
It took a long time to gradually build the code up and add more and more features. After the very basics of figuring out how to spawn enemies into the level, a lot of the Firefight principles were quite simple to implement, in terms of how you manage waves and progress through the game.
One real challenge however was randomisation; CE's engine is really not cut out for this sort of stuff. For the middle wave squads where a lot of variety is needed, this resulted in some very complicated code to loop through and generate the random enemies in waves. A method of then placing those enemies within the levels was another complicated task as this was again functionality that CE was never designed for. But when I figured out a solution, this was probably the point at which it started to feel like an actual Firefight game mode.
I was never really happy with this though, and it always felt like a fraction of what it could be. There were a lot of limits. Only the one game mode with no customisation. No lives system, which meant you had to not die at all, which isn't easy at times. This was something of being between a rock and a hard place; I couldn't alter the fundamental game engine logic. If I flagged the map as a multiplayer one, the game engine would handle respawns and lives like a normal multiplayer match, but would not run the AI, so I was forced to run it as a campaign map. Which means that when you die, back to the last checkpoint you go. Not good.
A big breakthrough was the discovery that a lot of console commands can be scripted, including game development cheats, such as infinite ammo. The key one was the use of "deathless player" which allows the player's health to be taken down to zero but stops the player from dying. With some creative scripting this meant it was possible to recognise that the player had 'died', without the player actually having to die and end the game.
The second big breakthrough was the discovery that there were debug commands to enable skulls, something I'd wanted to implement since the start but hadn't seen a way of doing. I was so enthusiastic when I found this out that I spent the best part of a day implementing a skull system, working almost non-stop from start to finish.
The final breakthrough was with regard to customisation. For this you need a way for the player to input information to change the settings. Modifying the main MCC UI to feed this information into the game - like 343i's official Firefight modes - wasn't possible, and it seemed like I was stuck here. Until I remembered the tutorial section on the campaign's first level. It runs a script that asks the player to confirm if they want their pitch inverted or not, and takes action based on that. When the player is able to feed input back into the game, that's when customisation became possible. The rest was just a lot of work to make it happen.
Had you done any modding work before launching into this project? And would you consider yourself something of an expert by now, or what?
I haven't released many mods and certainly not for the Halo series, but I do have some experience in the area. A big project I did around ten years ago was to port an old Star Wars game (Jedi Outcast) into the later game in the series (Jedi Academy), which involved a lot of crazy workarounds to achieve something that was considered impossible.
I'd hesitate to use the term expert, as there are a lot of people far more knowledgeable and skilled than I am. Maybe an expert in stubborn refusal to give up, and implementing things through sheer persistence, if that counts!
Map talk
"So I've actually started the process of trying to build a Firefight map for CE in the rockslide section, as best possible with the engine functionality there." - July 2021
Let's talk maps now. Hangar, Snowfield, Rockslide, Island and Swamp (listed there in the order you previewed them) are based on areas in five of Halo's levels. It would be interesting to hear about the selection process. What led you to choose these places?
Like Firefight in ODST and Reach, the plan was always to use levels from the campaign, which are designed from the ground up to be fought against AI opponents. I've seen several other mods over the years that try to implement Firefight or similar in multiplayer maps, which always has the fundamental issue that you're using a map designed for team games against human opposition.
The biggest concern with selection was what could be feasibly made into a good Firefight map with fairly minimal alterations. This unfortunately meant rejecting several areas which would be very interesting locations to fight in but would need a lot of reworking. The other main consideration was the variety of locations.
Rockslide was the first map developed, in part because an unnamed someone would probably have never spoken to me again if I didn't try. [Ed. I have spent a fair bit of time in the rockslide area, I admit.] While I can't pretend to've fought in the area to the degree that some have, it was always a location I found interesting going back to when I first played CE. The many ways you can navigate the rockslide area make it a unique environment. Another benefit was that Bungie had already created dropship animations for the area, which I was able to repurpose to replicate the traditional Firefight experience.
Hangar was the second map to be developed once the basics of Firefight had already been coded, with the aim of producing an action-packed small arena. I remember when playing the campaign that this can lead to quite intense battles against enemies up on higher levels. Thematically it's also about as different as you can get from Rockslide, going from a large scenic outdoor area to a small indoor location on a Covenant cruiser.
Snowfield and Island were initially developed in parallel, and in both cases there was quite a bit of experimentation with the extent of the playing area. They were originally quite a bit larger but this resulted in frustrating gameplay having to hunt down enemies, so both were reduced down to the one 'room' so to speak.
Finally, the swamp area on 343 Guilty Spark was a map I'd decided early on I wanted to implement, as I was a big fan of the atmosphere and complex terrain. When you consider the unique map elements like the water and the fog, it adds something very different to the mix.
To get suitably contained areas for the combat, you needed some map modifications to impose boundaries. Please talk about the solutions you came up with.
Depending on the map, there were a couple of solutions. In Rockslide I was able to block off the entrances quite neatly with some rocks, and I added a hard kill area to ward off players who missed the hint. Hangar had a useful shield door from the prison section which I was able to use. This not only looks fairly similar to the barriers used in ODST's maps, but fits in well with the map.
For Island, it was immediately apparent that any attempt to impose limits by adding obstacles was a no-go. Even if it was practical to wall off areas with that many objects, it would've ruined the feel of the map. Hard kill areas were considered early on as a solution, but this felt like it would limit the player, who couldn't go far for fear of running into such an area. Implementing soft kill areas like those used in Reach was ideal, as it would give the player freedom to move about the map and if desired, to push those limits a little, while still keeping the player within bounds.
For Snowfield where the layout creates a natural boundary, it was a case of adding hard kill zones, with a soft kill area leading up to it so players had some warning.
One rather special map modification is the presence of grav-lifts in Hangar which provide a handy elevator service. How did you get the idea for those, and then manage to implement them?
I was definitely glad I was able to figure out a solution here, because without the grav-lifts the map would probably have been cut. In an early prototype, having to walk all the way around to get to enemies at the top felt excruciatingly slow, and the gameplay would've been awful if this wasn't resolved.
The inspiration for them actually goes back almost twenty years, to when I was once playing on The Silent Cartographer with an invincibility cheat enabled, and ended up jumping down one of the main shafts. While most such areas in Halo kill you with fall damage, this one kills you with explosive damage. When you're invincible, it results in you accelerating up and eventually hovering in mid-air. Once I remembered that, the rest was just a case of tweaking the numbers to make it work acceptably.
The sound and visuals were taken from existing scenery objects used in The Truth and Reconciliation and then altered to be more suitable. This meant decreasing the range the sound is heard from, and also altering how large an area the particle effects cover. Unfortunately the transparent effects seen in the outside area would mean having to rebuild the map geometry, so those aren't used.
Are there any other map modifications you care to talk about? For example I think you reduced the fog level in the Swamp map, yes? And Snowfield has a couple of giant boulders I don't recall seeing before!
With every map change there's a trade-off between the gameplay and staying true to Bungie's original vision, so like any changes to the game sandbox, this had to be done very carefully. For the most part the modifications are slight tweaks to suit Firefight gameplay, such as altering where weapons appear or adding a bit more cover. On Rockslide there's a crashed Pelican near where the player starts, to provide some cover. For those who care, it also provides a slight excuse for why there are so many weapons littering the area!
A bigger change was modifying the fog density on Swamp to make longer range combat more viable and make it easier to find enemies - but hopefully without losing the unique feel of the area. I didn't want to lose the sinister vibe, but the original density meant that combat other than at close range would be very difficult, and there'd be a lot of hunting around for enemies which would slow the game down.
Snowfield needed the most changes since the area was originally a very wide open space where the player blasts through from one side to the other. Extra trees were added especially on the shaded side of the map to provide more cover for close quarters combat. The more open side is relatively unchanged, but as you point out there were some changes. The boulders and a few trees were added to break up the sight lines and avoid the player being caught completely out in the open when enemies spawned, which would feel a bit cheap and discourage use of other parts of the map.
When I telegraphed your upcoming mod in the HBO forum, I said you'd raised the rockslide area's ceiling to provide more space for Banshee flying, but later you told me I'd misinterpreted something. Please clarify.
When Rockslide was originally developed there was no option to use the Banshee, and so the kill barriers were designed so the 'ceiling' was relatively low, to stop the player escaping the level. When the Banshee was added this needed to be raised significantly to stop players from dying if they went more than two feet above the ground.
So in essence, it was an issue that I'd created and then resolved, rather than something intrinsic to the map that needed to be altered.
I remember you talking about adding 'waypoints' to maps, in connection with controlling enemy behaviour. Can you explain about this aspect a little?
The enemies in Halo need points programmed into the map in order to navigate and take various actions, and without this information they'll just stand in one place. In most cases there was no such information for those areas of the level, or if there was, it was inappropriate for what I wanted and had to be recreated from scratch. This took some time to understand due to the lack of documentation, and there were quite a few issues at first such as enemies getting stuck on objects.
I did get lucky at times though, where I was able to use the existing data Bungie had created, even if it isn't used in the base game. On Island, the waypoints used by enemy Banshees have been in The Silent Cartographer for over twenty years but never used, until now. Hopefully whoever set those up back in the day will be happy that the work wasn't completely in vain!
Pleasingly the Snowfield map has a night variant, lending a different atmosphere to the proceedings. What did you need to do to create that?
This was mostly pretty straightforward since Bungie had done 99% of the hard work in creating the lighting on Two Betrayals, so it was only a case of using that configuration.
There were a few minor fixes such as adding a few extra lights around the map where I felt it was appropriate. The slight fog only apparent over long range was increased a little to make very long range sniping a bit harder and add a slightly different gameplay element from the daytime version.
For the dark environments of Hangar, Swamp and Snowfield-night it would be nice to have an inexhaustible flashlight. Is that an option?
Not at present. I'm not sure exactly where this sits in the files, but I suspect it would mean changing some of the original files that make up the game, which is something I don't want to do. I'd want to use the stock tags that 343i provides to avoid changing things that were originally in the game.
Though it never did make much sense why you could have a massive set of powered armour with energy shielding, yet somehow a small flashlight only lasts a few minutes!
Weapons and vehicles
"I'm testing the power of my new explosion-free Flamethrower. I do think I need to look at increasing the range a bit, as there are some instances it feels like it should do damage but it's out of range." - August 2021
Coming to the matter of weapons now, a very enticing feature is the addition of a flamethrower to the player's arsenal. I seem to recall that this was a weapon almost featured in Halo but eventually dropped for some reason. Please comment on that, and on how you managed to bring it to life.
Long-time fans of the series might well be aware that the flamethrower was originally intended to be part of CE but was cut for time. However there are quite a few elements that were completed and were on the disc in 2001, such as the models and first person animations. Gearbox then finished the remaining work when they added it into multiplayer on Halo PC.
Because of this, adding it into single-player was pretty simple and just a case of tweaking certain weapon values to suit the feel I was going for. The fuel in a canister has been increased quite a bit from multiplayer so the player doesn't need to reload every few seconds. It does require being at close range, but if you can get up close it's very powerful. At times during testing I'd made it a little too powerful, and it was melting all forms of Elites with the Mythic skull on in a couple of seconds!
Grunts are the obvious fun enemy to use it on for their hilarious reactions, but it triggers similar behaviour to being stuck with a plasma grenade. Personally I enjoy using it on Elites the most. Preferably setting them on fire, then punching them in the face with the satisfying melee attack.
I gather that the Halo audio files actually included some Marine lines relating to the flamethrower, and that we'll potentially hear those in Firefight CE, is that right? Give us a few examples if you would.
That's correct. There are quite a lot of dialogue lines that are in the files but would never get a chance to be triggered in the base game. In regard to the flamethrower my personal favourite is Stacker's "Hey, marshmallow time!". Our aussie friend Private Dubbo also gets quite enthusiastic with some of his lines. "Man, look at those things burn!". There's also a slightly less polite piece of dialogue where he gets really enthusiastic!
Much as I'd love to go Grunt toasting with the flamethrower, to my mind an even tastier addition to the player's arsenal is the FRG. Please elucidate on this mighty beast, and any issues concerning its implementation.
As someone who played the multiplayer in Halo PC way back in the day, I definitely appreciated the FRG being added but I think it's safe to say it wasn't the most balanced weapon ever. With a very high rate of fire, extremely high damage and a very generous amount of shots, it was great if you had the weapon, but not so much if you were on the receiving end.
A key goal was to balance the weapon appropriately, while giving it enough of a distinction from the rocket launcher that it didn't just feel like a reskinned version of that. One design choice I quickly made was that unlike the low rate of fire of the rocket launcher, the FRG would retain the ability of rapid fire for greater burst damage. The amount of heat generated in the weapon was balanced so the player can keep up a steady rate of fire indefinitely, or fire up to three rounds rapidly but at the expense of the weapon overheating.
A couple of other aspects were changed. The HUD reticle from later games in the series was ported over as it's less intrusive, looks more appropriate, and makes for greater consistency. A scope was also added, again for consistency, and to make the weapon easier to use at longer ranges.
Changing how much the projectile was influenced by gravity was something that required quite a bit of iteration. Having to use ballistic aiming distinguishes it from the rocket launcher, but with the default values it meant having to point it at a very high angle at longer ranges, meaning you couldn't see your target. I think ultimately I was able to strike the right balance between keeping this unique characteristic and making the weapon usable at a variety of ranges.
In your videos I've seen examples of using certain weapons in places they were never available in Halo. A rocket launcher in Rockslide for example, and a shotty in Island. Does the player potentially have access to all weapons in every map? Because that would in itself present a major enticement.
In some form or another, the player has access to any weapon on any map, subject to gametype limitations. Because of the relatively limited amount of weapons in CE, even with the additions from multiplayer, I decided to add all human weapons as map pickups. If you consider that the pistol, assault rifle and shotgun are designed to be basic weapons (similar to the ammo crates in Reach, ammo for these weapons will instantly respawn), this only leaves the sniper rifle, rocket launcher and flamethrower as power weapons. If there were more weapons in the sandbox like in later games, I'd have been inclined to leave out certain weapons on some maps.
Another thing I noticed is that your weapons were often yellow, or turned yellow when picked up. Also, some of the vehicles turned yellow when boarded. What's that all about?
MCC added a feature a while back where weapon and vehicle skins became an unlockable option in multiplayer, and this was later added as an option to the campaign. Players can definitely choose not to use this if they want.
Notably, Firefight CE offers the experience of using a Wraith - and I'm sure players will be looking forward to jumping into one to unleash explosive carnage on the covies. How did you manage to implement this previously forbidden delight?
For me this was something of a bonus feature to add if practical, but happily I did manage to implement it to a reasonable level of quality. There was a bit of cheating here as the Chief actually uses his Scorpion animations in order for the game to allow him to enter the vehicle, and if you take a very close look there'll be some clipping issues that give this away. However this isn't too bad, and I was surprised at how well the animations worked.
One issue that was a bit tricky was the camera and the ability to hit targets at close range. To my understanding this would need quite a bit of work with changing the model, creating new camera tracks, and other work that was beyond the scope of this mod.
There was also quite a bit of work done in standardising the HUD. While not usable by default, the original Wraith uses the rocket launcher reticle. As with the FRG, converting a more suitable reticle from elsewhere in the collection was quickly decided on as this looked far better. The HUD elements in the original files also lacked a health bar for the Wraith, so this was added by taking the existing HUD for Covenant vehicles and tweaking it.
Another vehicular novelty is the rocket hog, and I'm guessing you could have a lot of fun zipping around while the gunner takes care of bombarding the enemy. What have you got to say on this?
I'd say watch out for his shooting, because his understanding of a safe distance to avoid friendly fire is different from mine! But as long as you don't get too close to where he's shooting, or an obstacle he might hit, then you're good. I'd make a pun about it being a blast, but that would be a bit of a cliché.
Are all vehicles available in all maps or what? Come to think of it, I dare say you have some limitations. Not much room for a Scorpion in Hangar for example; but at least a Ghost maybe?
My general philosophy with the mod is to give players choices, but when it came to Hangar and Swamp I did impose limits here. Hangar doesn't support any vehicles, while Swamp allows access to only the lighter ones. The remaining maps provide optional access to all vehicles, regardless of the default configuration.
I was definitely glad to've added the lighter vehicles as an option for Swamp, and it's a lot of fun driving through with the Marines blasting things. For Island I was debating whether to have a lighter vehicle or two as part of the default map loadout, but decided to keep it without vehicles as standard.
In Island I see that you've put a Banshee up on the promontory. You're making the player do a bit of mountaineering to reach that prize eh?
If I was designing the map from nothing I'd make it a bit easier to get there, and it can be a bit risky if you haven't cleared the immediate area. This did mean adding quite a few rocks, but hopefully they blend in well enough. Other goodies might be up there as well, if you fancy packing your climbing gear.
Gametypes and skulls
"It seems like the "Assassins" skull does actually work in CE, and will almost certainly be an official feature shortly I would imagine. In any case I can make use of it to turn enemies invisible so the new gametype "Phantoms" is in." - September 2022
Let me invite you to talk about the built in gametypes now. And maybe there are some in particular you'd like to dwell on? You rustled up some novelties I believe.
A lot of the gametypes were inspired by ones elsewhere in the collection, modified to fit CE. In Sniperfight for instance you have unlimited grenades, since there's no way at the moment of offering infinite ammo without also allowing infinite grenades. This isn't my ideal outcome as infinite grenades goes against this spirit of this particular mode, but it is what it is.
Rocketfight was changed slightly by using the flamethrower as a secondary weapon, which I felt was a really good chance for the player to use this new addition, and it also balances out against the rocket launcher. One close range weapon, one longer range weapon.
A couple of new options were added. Beakageddon is the Jackal version of Gruntpocalypse, and Phantoms makes every enemy invisible, which I felt was a really interesting option that hadn't been done before. But Fiesta is probably my favourite gametype for the sheer chaos it offers. It pretty much randomises everything in the game and means you never know what you're going to get next.
You've also managed to implement a number of skulls, which opens up yet more fun. Were there any difficulties there? Please expound on the topic and also give a rundown of what's on offer.
Players familiar with Firefight will be used to hearing the announcer exclaim "Tough Luck on" as it's usually the first skull to be activated. Unfortunately, there's no way of enabling this skull in CEA via console commands, and with other skulls such as Tilt not implemented in CEA, I did struggle at first in deciding what skulls should be used. In the end I was able to settle on using the Anger skull as a replacement - which increases enemy firing rate.
Originally I wanted to allow players complete control over what skulls were active on a round basis like in ODST & Reach, but the amount of code the scripts can support conspired against me, so this had to be cut in favour of hard-coded presets. To compensate I was able to add a few features to do with randomising what skulls are enabled, whether that's enabling skulls in random order, randomly toggling skulls on or off, or resetting the skulls and then turning a certain number randomly back on. They might not be to everyone's taste, but it's a unique option which can only be a good thing in my mind.
There are eight primary skulls: Anger, Black Eye, Catch, Cloud, Famine, Mythic, Thunderstorm and That's Just… Wrong. Many will be familiar to players, but Anger and That's Just… Wrong, which increases enemy awareness, are both new to Firefight.
Foe and friend
"I've got some scripting work in there that increases the chance of a Banshee flying in as the game carries on so it's quite likely you will see one each round" - August 2021
Turning to the covies, I notice that you've seen fit to introduce stealth Grunts into the proceedings. Was that just a matter of setting a flag or suchlike, or did you have to do something clever?
Stealth Grunts aren't actually an enemy variant, but are a result of using the Assassins skull, which hasn't yet been officially implemented into CEA as an option but which helpfully works with a debug command. If these were being added natively, it would be a case of just setting a flag to make them use active camo.
Also I believe there are plasma pistol Grunts who can fire overcharge shots like Jackals always have, and some Elites who can do likewise. Plus there are Jackals with needlers! Please comment on all that.
Spec Ops Grunts can use the overcharge function, which is something inspired by them doing it in Reach. As they don't use the plasma pistol in the campaign, this was an addition that felt like it fit the game well. There's also a variant of Spec Ops Elite which uses overcharge, as well as a very aggressive firing rate. Quite nasty if you ask me!
Adding Jackals with needlers was not just an addition I wanted to make, but something of a necessary one, as it would get old fast if every single Jackal used the plasma pistol, especially in a gametype like Beakageddon.
In Rockslide I think it's very nice that you can have the covies arrive by dropship rather than just materialising out of nowhere. But you had quite a bit of bother getting that dropship business sorted out didn't you?
One thing that bugs me is some issues with the original animations that Bungie created, where they do make you wonder where the pilot got his license from. Lacking the ability to change the animations, I tried to fix this as best I could by altering the heights the dropships spawn in at very slightly, so when the animation completes they're in a slightly different position than normal.
The randomisation code for dropship locations had to be written from scratch, and as one of the first bits of code created it turned out to be a bit suboptimal. Thankfully I was able to create a second version later on which used far less code, and while it is a bit inelegant it does the job.
As well as including Flood, it's good to see that you've even got Sentinels into the mix. Was that much trouble?
Sentinels took quite a bit of work to add into the game. It meant an entirely new set of combat data had to be created since they can fly and need to navigate the map in three dimensions unlike normal AI entities. The spawn locations also had to be created, and then the fairly complex code that randomises enemies had to be made even more complicated in order to properly handle this. If I'd known how much work it would involve, I might not have done it in the end! But I do think they add something and am glad to've got them in, all things considered.
As I recall, you debated whether to make Flood and Sentinels hostile to covies or not. What did you settle on in that regard, and why?
The default decision varies by gametype, though it became clear after launch that the Halo engine is getting a bit confused by some of the weird stuff I'm doing, and so having them use their default allegiance doesn't work quite as expected, at least when it comes to mixed squads.
With a game like Floodfight, any Covenant vehicles that appear are by default set to be hostile to the Flood, as I felt this added an interesting dynamic. For Fiesta, having enemies kill each other felt like it was taking fun away from the player, and meant less blasting stuff, so they default to being on the same team.
In your 'New Toys' video I was most impressed with the horde of Hunters that turned up in the bonus round, which you dutifully set about splattering with a Warthog. Can you likewise get hordes of other enemy types? Also, maybe you could discuss your bonus round philosophy generally.
In single-player, the enemies faced in the bonus round can be customised like any other squad can. In general, by default this is set to match the gametype. For instance, Firefight Classic uses Grunts, Robocalypse uses Sentinels, and Floodfight uses, well, Flood. For some variants like FRGfight I set it to use Hunters, which matches the gametype in Reach/ODST. For Sniperfight I opted for endless Gold Elites instead of Hunters as this was not only a better enemy for fighting with a sniper rifle, but was also a bit different.
For the squad option that picks a random enemy squad like in Fiesta, I made the choice that the bonus round would "lock in" the squad type when the round started instead of randomising it each time enemies were spawned, in order to make each bonus round feel unique. So one time the bonus round might consist of non-stop Carrier Forms, while the next one might entirely be Spec Ops Grunts, or even a mixture of Grunts, Elites and Jackals.
Much of your promo footage features Marines, and in some cases they're invincible. Please talk about how they figure into things. In particular I'm wondering when they turn up, what control you have in regard to invincibility, and whether they follow you around or stay put.
Whether by default they're enabled or invincible varies by gametype. For something like Firefight Classic, Marines were not originally present, and it felt important to keep it so it was just the player against the Covenant.
A few gametypes feature them in their mortal state, where their being invincible felt thematically inappropriate, or where players can realistically keep them alive. With Floodfight it undermines the threat of the Flood if you know you have invincible allies. With Gruntpocalypse and Beakageddon you should be able to keep them alive, and invincibility would risk that they'd kill too many enemies for you. With Phantoms the Marines effectively act as scouts for the player by giving away invisible enemies, but as a semi-serious game variant it also felt inappropriate to make them invincible.
For gametypes where there are a lot of explosions, they've been set to be invincible just so you don't have to worry about them getting wiped out in seconds. Robocalypse doesn't have quite as many explosions, but they did die very quickly without invincibility, so I made them invincible there as well.
As for following the player or not, the decision was made to keep them in the areas they'd been programmed to use instead of following the player. Both options have pros and cons. In this case not following the player reduces the chances of them getting in the way, which felt like the lesser of two evils.
Music and more
"Going forwards what the general plan is here is to mostly use music already in the levels themselves, which hopefully will prevent Marty from wanting to hunt me down." - August 2021
How about the musical accompaniment you've set up? What did you do there, and were there any problems?
Music is used in the initial and final waves in ODST and Reach, and I decided early on that I wanted this too. Especially for the final round where it really helps ramp up the atmosphere as you fight against the hardest opponents.
Marty and Michael's classic score speaks for itself, and I wanted to try to use the same themes that were originally chosen for the corresponding level in campaign. This is one area where I departed somewhat from the later games, which use generic tracks. Again, it was a pretty early decision to use three themes for the initial round and three for the final round, preferably taken from the campaign level to provide good variety across the different maps and help distinguish them. For the most part I think this worked well, though the music for the initial rounds was more problematic and didn't really fit for some maps.
Snowfield was the worst contender here, as the more ambient pieces from Assault on the Control Room didn't suit the location, and whenever the music played it sounded awkward. The solution was to bring two generic tracks over from ODST, which coincidentally happen to be my favourite Firefight tracks. When I tested it, this definitely felt like the right decision, and I used them to "fill in the gaps" in the other maps where needed.
The one exception where I struggled with choosing three final wave themes was Rockslide. Until fairly late on, the third track was based off "Perilous Journey" which wasn't present in the level Halo, but I was never happy with this. When I decided to port a couple of tracks over from ODST, I tried out a generic one with a lot of percussion, and was satisfied enough to keep it. Ironically it's only used on Rockslide, which makes the 'generic track' itself unique.
It seems like when you die you don't see the body. Instead the camera snaps to an aerial view for the respawning process. How come things are like that?
Since I'm having to fight against the main engine logic of "if Chief dies, go back to the last checkpoint", this is a workaround whereby Chief is set so that technically he can't die, and it's then a case of faking a true respawn as best as possible. Unfortunately this is something that would need changes to the engine itself to resolve properly.
If there were no changes to the camera then it would just show Chief sitting around from first person mode for ten seconds, so it cuts to an aerial shot until the player 'respawns'. This itself involves more trickery since it turns out that if the player is too far away from the action then the game doesn't process things correctly. A bit like the behaviour seen in campaign sometimes where characters can freeze when you cross a loading zone.
Am I right in thinking that the player can arrange to have permanent active camo? If so, that could make for quite a lot of fun I think!
This is absolutely an option, along with several other possibilities if you're playing the single-player version. Another fun option is recreating the Acrophobia skull to allow the player to fly. I may or may not have had far too much fun hovering over Grunts while invisible and constantly sticking them with plasma grenades. There's also other fun such as enabling the bottomless clip function and Boom skull, then nuking everything with an FRG.
If you do go with active camo, just watch out for enemies with the That's Just… Wrong skull. The camo won't hide you as much as you might think!
Regarding the user interface, it seems there's a problem with menu text coming out very small. What's the trouble, and do you envisage a fix?
There have been quite a few bugs with the HUD over the development process. 343i has fixed several of these issues which is great, but sadly something got broken by the most recent MCC update, causing this text issue. It's probably the issue that annoys me the most, because it's the first thing players see and makes things look a bit unpolished!
There's also an MCC bug where it shows the wrong keybinds/buttons to navigate the menu, which can be a bit confusing for players. Both issues have been reported, so fingers crossed they can be patched.
Firefight CE also offers co-op play but I believe you had to make some compromises to get it working. What's the story there?
I class co-op as experimental, simply due to the compromises needed. Two things which came out during development were firstly that the workaround to respawn players in single-player doesn't work in co-op, and secondly the scripts which drive the menu won't synchronise across co-op, which means the normal menu can't be used as it breaks the game.
To get around these issues players are set to be invincible, which is frustrating but I figured that some co-op is better than none. Players can also choose the gametype by hitting a switch to confirm the option they want, but this doesn't allow customisation. So co-op is not the full experience, but it is something.
Closing
"In terms of a trailer for all this stuff, I'll probably take some inspiration from the original 'attract mode' videos in CE, and Bungie's various trailers for H3 / ODST / Reach." - October 2022
So now you've finally got this out, how satisfied with it are you, do you think it meets your intended goals, and are there any aspects you're particularly proud of?
All in all, I'm pretty satisfied with what I was able to achieve. It's not perfect and never will be with the limits modders have to work with, but I think it meets most of the goals, and it's something that can provide a lot of fun.
The part I'm most proud of is the sheer customisation I've been able to add, especially the workarounds needed to build a menu to modify the game itself from within its own engine. Another thing I'm quite proud of is the feedback on how well it fits into the original game. Hopefully that's an opinion that's shared, and a reflection of how I tried to be extremely careful with changes to avoid altering Bungie's vision too drastically.
Do you expect to add more maps later, and perhaps additional features? If so, please elaborate!
I would like to look at some map ideas at some point, and I have no shortage of ideas there. Probably my biggest regret is not being able to include a map based on the outside plateau on The Truth and Reconciliation, as it would need too many changes from the original, which wasn't viable for launch. But I can still see the potential for a great map there, and hopefully it'll be a reality one day. If I can create a daytime variant, even better still.
If I had unlimited space in the files, there are features I'd like to've implemented, but as it currently stands I've hit multiple limits of the engine and various file formats. To that end I can only say it's over to 343i there. A few minor feature additions were added for version 1.01, but these only involved fairly small tweaks to use up any last remaining space.
To me, Firefight CE seems like a very significant addition to the Halo franchise, and I'm sure a lot of Halo fans are going to have a great time with it. I'm wondering if 343 Industries might take notice of it, and maybe even help you take things further. What are your thoughts on this?
It would be a dream if 343i felt this was worth collaborating on, to provide the final level of polish that only the professionals can offer. As an outsider you can never tell how easy something is without seeing things for yourself, but I think the vast majority of features could be properly implemented relatively easily with expert support and access to the source code, which would remove most of the rough edges. To that end, if 343i did ever want to consider the idea, I'd support that in any way I could.
Doubtless you've got through a lot of gameplay by now, in testing things and also making promo videos. Have you formed a favourite map?
I think all the maps offer something unique, but probably my favourite all-rounder is Island. It has nice scenery, and the layout suits many different play styles whether you prefer vehicles, up close and personal, or picking stuff off at range. It's also quite fast to get around, allowing you to get back in the fight quickly after respawning.
For unrelenting chaos, Hangar is probably the best as most of the enemies can be blasted from the top of the map, and due to the small area you're never too far away from something that needs killing.
So what's next? Having got all the hard work done, are you going to take a break from the whole business for a while, or are you perhaps going to enjoy a carnage filled spell of just playing the darned thing?
A mixture of both I think. It was a big push to get this done and it's taken up a lot of my free time for a while now. Being able to enjoy other games will be a bit of a change, and yes, it will be nice to be able to play this without constantly thinking of all the stuff I still need to fix or add!
Okay, time to wrap things up then. Thanks for the in-depth interview, and congratulations on the launch!
Thank you. I spent a lot of time and effort on this, so it's great to hear how many players have enjoyed it so far, and hopefully this only goes up more and more over time.