Zubon’s post reminded me that I’d meant to write this up a few weeks back: Why are mobs so blind and stupid?
I’m not talking about combat AI here, specifically. There are good reasons to keep combat AI fairly simple and stupid, namely that it just costs too much, both in terms of programming and QA resources and in terms of processing power, to make really good AI most of the time. That said, for non-trash mobs, better and more unpredictable AI would probably be a good idea.
No, instead, I’m talking about why are mobs so willing to watch their friends get beaten up well within sight distance, without lifting a finger to help? Especially if they can see a trail of corpses behind, leading directly toward them? It’s one of those things that just yanks players right out of the game, and yet it’s also a staple of the MMO. Sure, in most games, like WoW, an enemy will run away and grab more friends when he’s near death, but in some, like CoH, a running enemy is just an irritation: as long as the player characters don’t follow, he’ll come back eventually, ready to be beaten unconscious. As a bonus, the player characters will have healed and regained endurance in the meantime. But that doesn’t really address the main problem, which is, “Why are enemies standing within a couple dozen feet of a fight and not helping out? Or running away? Or doing anything at all?”
Part of it is, of course, because that that’s the way it’s always been. Text MUDs, especially DikuMUDs, generally had the concept of “rooms.” Even if you were in a forest, you were still in a room called “A Clearing” or “Along a Path.” Mobs in one room generally had no knowledge of mobs in another room, except in the case of a few specially programmed mobs that reacted to the actions of others; you can still see that kind of special programming in WoW with “Howler” wolves and “Screecher” raptors that call for help and alert other nearby mobs of the same base type. And, of course, sometimes mobs would run to the next room and bring back help. Sound familiar?
So, how to address this? The most obvious answer would be to simply increase aggro radii on enemies, but this by itself will simply screw up other systems in the game, namely the combat and reward systems that depend on the player being able to only take on a few enemies at time safely. In addition, you still keep one of the other problems: enemies are uniformly suicidal or at least tactically very, very stupid. “Sure, the other 200 orcs couldn’t stop them, but they won’t stand before my might!”
Given that, let’s strip a few systems down. First, address the combat system. Either make it so the norm is that PCs, who we can assume are heroic, can handle hordes of enemies at a time, or make it so that preventing discovery by additional enemies is either trivial or skill-based and in the hands of the players. Which of these we go with depends on the genre, and possibly the character type; in a superhero game, making it so that a solo player can handle 10 or 15 enemies without breaking a sweat seems appropriate enough, while in a spy game, making it so that players can stealthily kill an enemy quickly should probably be the norm. And, of course, we can also blur the lines, so that a Batman type can kill enemies quickly and quietly, or the gun bunny in a spy game is an unstoppable death machine. Regardless, one of the things that will probably need to change is that grinding enemies simply doesn’t matter in reward terms anymore, or at least matters very little compared to quest completion. We’re already seeing a shift in that direction in MMOs of the last few years; if I remember correctly, DDO went this route entirely, so that the only experience that is awarded is for quest completion. Despite DDO’s failings in other areas, I think that’s a fantastic step in the right direction; if Batman stealths his way through the enemy fortress and recovers the MacGuffin, while Superman crashes in and cracks heads to do the same, there’s no real reason to give them different levels of awards.
That’s combat and rewards addressed, at least partially. Of course, those systems will feed into the thing that we used to call the “aggro” system, which we can probably call the “discovery” system for now, for reasons discussed below. We’ll need to figure out what our parameters are for discovery, that is how, when, and how easily mobs notice the PCs. We can assume that sight and sound are a given. Perhaps some mobs will have only one of those, such as a subterranean monster, and perhaps we’ll get fancy with other senses as well, like scent or psychic. However, for now, let’s assume that a given mob has sight and sound, and that sound is a 360° sense with a relatively limited distance of 60 feet, while sight is a 120° arc in front of the character with a distance of 200 feet. Loud noises can be sensed at a further distance, bright lights or lots of motion (like a fight) can be seen further away, walls block line of sight and dampen ability to hear sounds, etc. When mobs discover a player character through their senses, they react. Perhaps some will also react to other things, such as a body, etc.
The “reaction” system is the second proposed improvement to how things stand now. Currently, mobs will either attack a player character on sight or simply ignore them, depending on whether they’re hostile or neutral. Occasionally, a neutral enemy will jump in if they’re “social” and see a similar neutral creature being attacked; the guards in the goblin towns in WoW are a good example of this. Sometimes, an enemy will run when they’re losing a fight. Sometimes they’ll stand and fight, and it’s usually easily predictable how they’ll react.
However, that very often makes no sense whatsoever. As mentioned above, why would Bob the Orc ever want to tangle with the group of heroes that have run roughshod over everything else in his cave? Sure, occasionally, he’ll want to avenge his friend Dave the Orc, but that should be the rare case. It’s not so much that the behaviors are entirely wrong, it’s just that they usually have no context. “Fight,” “Run,” and “Get Help” are all well and good, but why does every “Runner” wolf in WoW run at the same hit point level, and regardless of how many other wolves are attacking? For that matter, why is there even a “Runner” category?
Let’s take an orc under this system. There is an 80% chance that he’s a Brawler (“Fight” as his default behavior), a 15% chance he’s a Scout (“Get Help”) and a 5% chance that he’s a Coward (“Run”). However, just because they have a default behavior, they can do other things, based on context. If he’s the lone guard of an outpost entrance and sees a group of heroes coming, even if he’s a brawler he’s going to Get Help. However, if a Brawler and a Scout are teamed together, the Brawler will stay and fight while the Scout will Get Help. Similarly, while a mob may be a Coward, if he’s walking a patrol with 3 Brawlers and comes across a lone hero, particularly one that’s been injured, he’ll join in with the fight as well… at least until the Brawlers start dropping or until he gets somewhat injured himself. Also, if that same patrol of three Brawlers and the Coward comes across a group of four heroes, or a lone uninjured hero surrounded by corpses, he’s likely to revert to “Run” or at the least “Get Help.” To be fair, City of Heroes implements some of this now, and does it pretty well. However, it has no real “Get Help,” just “Run,” and enemies will always start by attacking rather than running. Even if a level fifty hero jumps into a group of level five mobs and defeats one, they will all pull their pistols out and fire at least once, then maybe run.
And of course, there are more than just these. “Guard This Area,” “Guard This Mob,” and other default behaviors can exist. Modifiers like, “The PC is exalted with one of my factions and unfriendly with another” could come into mob reactions, too. Also, it would help if there was a way to encode “I just saw a group of heroes slaughter a dozen gate guards without breaking a sweat and I am running in terror from PCs X, Y, and Z,” so that other mobs react intelligently to a mob that is executing “Run” or “Get Help.”
Eventually, people are going to start getting bored with new flavors of Diku, and the industry should be ready to move away from those roots. Along with removing the artificial Tank/DPS/Heal trinity and moving to primarily character-driven instead of primarily loot-driven character systems, improvements to mob aggro systems go a long way toward making MMOs feel more like adventures than solving a problem once and repeating the solution over and over again.