Skip to main content

Long read: How TikTok's most intriguing geolocator makes a story out of a game

Where in the world is Josemonkey?

If you click on a link and make a purchase we may receive a small commission. Read our editorial policy.

Tech Interview: Halo: Reach

An exclusive, in-depth chat with Bungie on the making of Reach.

Digital FoundryMuch of the game sees you working as a part of a larger team. How does this translate to the AI? How does Noble Team actually work together as a unit from an AI perspective?
Chris Opdahl

Initially the friendly Spartan AI used the same base AI set-up as the Elites, but pretty quickly we figured out that what makes a character fun to fight also makes them seem incredibly un-thoughtful when fighting alongside the player. This led us to create a small strike team to deal with adding new tools to make the Spartans feel like futuristic Special Forces soldiers, and not like AI who cannot make up their mind and stick to it for more than two seconds. This led to a design goal that the enemies should move quickly to adapt to the player's actions, and the friendlies should move deliberately and with purpose with less regard to the player's actions.

We accomplished this by adding throttle tools for the characters. This allowed us to set the speed scale of a character based on their danger level (see an enemy, hear an enemy, getting shot by an enemy), on the distance they needed to travel, or via a Mission Designer scripting the throttle. The Covenant are very much throttle-based on their danger level. As the player puts pressure on an Elite, he will move towards his max throttle, while the Spartans base their throttle very much on the distance they want to travel. So when a player is moving through the spaces quickly the Spartans are moving quickly to keep up, but if the Spartan is fighting an Elite and is simply moving ten feet to get a better line of sight on the target, he will move more slowly.

This had an awesome element to it, in that the Spartans ended up moving pretty slowly when under fire, which made them feel bad ass and less concerned about taking fire, since their armor would protect them. When the Spartans' shields would go down, they would enter into a different behaviour (covering) which did not have the same throttle clamping, so they would more quickly move to cover. It was a nice emergent character moment that made them feel like they were super-soldiers and had been under fire many times.

Max Dyckhoff

The Noble Team AI is actually technically the same AI as the enemy AI, just with different data input and designer control to make them behave differently. They share most of the same behaviours, with only a few unique ones for their special circumstances.

As far as how we make AI work together, a lot of it is emergent. There are a lot of reasons to avoid having AI characters create actual contracts between themselves, not least because in a real-time dynamic game like Reach, contracts will be broken all the time, and then we have to handle that. Instead we do it reactively; a Spartan is looking for somewhere to move to, and he has a little evaluator that tells him to prefer being near a friend. There is no contract there requiring his friend to stay nearby, but most of the time they will end up close to each other.

Additionally, they will share perception information with one another, and vocalise that they are doing so. When you hear a Spartan yell out "he's over there," and then another Spartan wheels around and starts shooting the same guy, you impart a lot of intelligence on what is actually a pretty simple emergent system.

The Spartans in Halo: Reach act as a team. Bungie cunningly re-used its existing enemy AI with modifications to bring Noble Team to life.
Digital FoundryHow does the AI change/adapt to cope with more than one human player in the co-op mode?
Max Dyckhoff

As Chris said earlier, this is all done by tweaking the data parameters for characters. From an engineering point of view it is actually completely transparent; we just have a system that reads in what data parameters should be used for our behaviours, perception, etc., and the system just reads it from a different location if we are currently playing co-op. The skull system actually works the same way; the "Tough Luck" skull just applies some scalers to some of the parameters (grenade dive chance, etc), and the behaviours read that in and suddenly get super lucky.

Digital FoundryFinally, can you go into depth on your process on polishing the game? There's a perception that you spend months on refining your games before they eventually go gold. Is that a myth or is it something you consider essential and build into your process?
Chris Opdahl

There are two pretty key elements that go into the polishing phase of the game. One, we start focus-testing very early (over six months before we submit for final testing), and two, we cut features and elements viciously and early. If we add a new element late in the development cycle, the designers likely won't have enough time to fully react to it and make it fit nicely into the game.

Regarding focus testing, we do roughly monthly focus tests more than six months before we submit. During the early tests we are checking to see how often the player is getting lost, and do they understand the goals and direction of the mission. How long are they spending in spaces and how long does it take to get through the entire mission? Then, as the game progresses, we start to add more representative encounters that can help to determine difficulty and challenge.

Those kinds of choices will lead to encounters being rethought or changed to make them more or less challenging. This is also when we start to react to how the players are playing. Are they sitting on this one sniper spot and killing everyone? Well then, we should have the AI have a plan to react to that behavior, or block off that sniper spot from being so dominant. Are they finding the power weapons? If not, maybe we should increase the lighting near the weapons, or move them to a better spot.

Then in the last couple of months we are able to really test the pacing and balance of the missions. One of the things we saw in Reach was that people were routinely dying from Plasma Pistol shots. The goal for Plasma Pistols is that they are "spammy" but should not be the most dangerous weapon in the game (since so many enemies use them, and those enemies are low-level). From that feedback we ended up slowing down the Plasma Pistol shots (when AI shoot them, not when the player shoots them) about 15 per cent.

This ended up causing far fewer deaths from them, since players were dying from them while running away, and since they shot slower projectiles, the player was more likely to reach cover before being killed. It did not actually make the encounters easier (we saw similar numbers of deaths) - they simply died from the weapons we expected them to die from.

I don't think it is a myth to say we spend months and months polishing our games, but the impression as to what polishing entails is probably a myth. Polishing does not imply that the game is done and able to go into the box, and we are only agonising about changing this squad from three Grunts and an Elite to four Grunts and an Elite. We definitely make those kinds of decisions, but while that is happening artists are making major changes to the portals of a level to get the game to meet performance expectations, and network engineers are squashing out-of-sync bugs from the Assassination system, and the cinematics team is getting their final cuts. Big changes are going in up until the last month or so, and while that happens, we are spending a ton of time polishing all of the details.

Read this next