It’s safe to say that all the successful mainstream MMO’s have very simple AI. At best, they have good heuristics about when to use certain abilities. This is a far cry from FPSes, some of which have very convincing AI.
But why do MMO’s have such bad AI? Well, many Korean MMO’s just don’t have the server CPU cycles to support it. A common architecture there is to use a single CPU for every aspect of the server, which relegates NPC interaction to the more minimalist variety.
But the architectures common over here do not have this limitation. We could go hog-wild with the AI if we wanted to. In fact, back when AC2 was in beta, we did just that — I remember a version of AC2 where Drudges, the goblin-like low-level monsters of the world, had been given elaborate AI help-finding routines.
In this version of the game, which thankfully never made it to the live world, Drudges could decide if they were overmatched, and if so, could run and get help. If they got back and decided that they were still overmatched, one of the monsters would run and get more help, and so on until they were sure they could win. And they did win. It wasn’t any fun. But it was pretty easy to code!
Okay, so sure, that was stupid, and was quickly toned down. And then it was toned down again, and again, and again. In the end, the poor Drudge could only stand perfectly still and scream for help, which was useless unless there was a monster within thirty meters. And what do you know, the AI ended up just like all the other MMOs.
AI is relatively easy to code, once you’ve got path-planning in place. But figuring out what will be fun … that’s the hard part. Players in a traditional-model MMO like to know their odds before they begin. MMO players expect to win 90% or more of the fights they undertake, and they can only do that when things are extremely predictable. Monsters who can get help are much less predictable than monsters who stand around waiting to get chopped up.
AI can be extra annoying in games that center around groups of players working together. Here, MMOs tend to use an elaborate “aggro system.” Players have abilities which make the monster more or less likely to attack them personally (rather than somebody else nearby). These abilities can only work when the monster is very predictable.
“Ah, but what about raids?” you might be thinking. Raid encounters need great AI, right? No! Please do not give your raids good AI. Raids are scripted encounters. One of the most appealing parts of raids (for the hardcore raiding audience) is learning how the scripted encounters work and overcoming them. Although the scripting needs to be more complex and interesting, the actual encounter needs to be more predictable than regular encounters, not less.
So assuming you’re making a traditional-model MMO, where players typically kill small numbers of monsters over long (~30 second) periods of time, you can’t diverge from the mold too much without breaking the model. But that doesn’t mean your monsters have to be big stationary lumps of sinew. Here’s a few ideas on designing AI without breaking player expectations (or being really annoying to players):
- Want your monsters to feel more lifelike? Give them an “angry but not yet attacking” state. If players get within 20 meters of a monster, the monster attacks. But if players stay out at 40 meters, the monster can still appear to react to players: calling out taunts, loading its gun, diving for cover, etc.
- It’s okay for some weak monsters to run and get help from bigger monsters — as long as it’s predictable that they’ll do so, so players can plan accordingly. You may want to telegraph that they’re going to run, too (such as with a special HUD icon).
- Monsters’ combat maneuvers are allowed to be unpredictable. For instance, it’s okay for monsters to have a super power that they use at random intervals. This is one area where MMO players seem to accept a large degree of randomness.
- Your aggro system can work however you want it to, as long as it can be understood and predicted by players.
- If you add random behaviors, make them in the player’s favor. In AC2, if a Drudge killed a player, the Drudge had a 25% chance of doing a little victory dance over the fallen player’s corpse. This was very memorable, and it was okay because it didn’t hurt the player any. (It actually benefitted any other nearby players, because they could get in a few free stabs while the Drudge danced.)
Flavor over substance: that’s the (slightly disappointing) secret to good AI in a traditional MMO. Make players feel like they’re battling intelligent foes, but make the foes actually very predictable.