Do you think the beat em up genre could do with a level of shaking up in the AI department? I find that the enemies mostly repeat the same moveset, and don’t act all the dynamic most of the time. Although the same could probably be argued about the enemies in a lot of martial arts films.
Here’s one big change: Record when the player deals damage, and perform attacks with inverse proportionality to where damage is taken. Keep updating this as the battle goes on. So if the player is only trying to deal damage during one particular cycle, or punish one particular attack, start using that attack less, forcing them to get damage elsewhere. This can help force continuous aggression from the player and improvisation instead of really safe play.
Beyond that, better AI is really a matter of thinking up specific behavioral characteristics. Making observably good AI is hard. Halo enemies dodge only after they’re initially shot, or if you throw a grenade or fire a slow moving shot. They can’t dodge pre-emptively or on reaction to your shots, so their dodging behavior is predictable instead of random.
Okay, so what’s good AI look like for a game like this? Maybe it would look something like Smash Bros doubles players?
Maybe AI could set up scenarios for other enemies, like knock you over into a more powerful attack that is harder to dodge? Or drag you into another enemy’s AOE? A lot of AI already coordinate to flank you in most action games, but what if they coordinated to protect the ranged damage dealers? What if levels were built more linearly and fighting was somewhat optional, and AI worked to block your path forwards?
Better AI means something different in a single player game than it does in a multiplayer one, because the AI isn’t trying to be smarter or use its moves at better times in better positions like a human player. It’s more like an element of level design, it’s a stepping stone for the player to demonstrate skill in a challenging environment. To this end, again, building good AI is about building specific new actions it can perform that serve a functional purpose. Think about how to threaten the player, but also given them opportunities to manipulate the AI, using those same behaviors.
The most important role of multiple enemies is interrupting the player’s actions against the AI. AI need to coordinate to prevent any individual enemy from getting dominated. Because alone in most games, enemies get wrecked pretty easy, but enemies that act asynchronously are less easily locked down. To that end, maybe some AI should take the role of opportunist, waiting for the player to get caught up in something else before striking (faults in DMC4 do this to an extent).
Other thing to think about is movement patterns and formations. A lot of enemies just run up to you and attack you. How could they coordinate better? How could they move more differently? How could they block off your path of escape? How can they arrange themselves relative to each other to be more effective? Perhaps studying fighting game footsies would help here. Maybe some AI can specifically try to whiff punish, staying out of range? Another point of consideration could be movement patterns of enemies in 2d games even, like Bloopers, which have an interesting movement pattern. Perhaps 2d enemy movement patterns could be transcribed somewhat to polar coordinates around the player character for an interesting effect?
An important thing is that the player should never be overwhelmed. It’s a common doubles strategy in Smash to set lone opponents up in bad situations, then use the fact that you have 2 people to cover all your opponent’s possible options, killing them or racking up a ton of damage. In a single-player game, you want to give the player options. So instead of being checkmated, they should be sent from bad situations into more bad situations as they screw up, so they always have a way out, but the AI also is working together to threaten the player.
It should ideally never just be the AI always standing in the right place to cover whatever move the player does. Instead have the AI stand in the right place and already be doing something to fuck the player up, but give the player a moment before they actually get impacted by that. You could compare this to a combo versus a reset in a traditional fighting game.
Don’t just go for sheer AI dominated combos, lead the player into reset situations instead when they fuck up, so they get the chance to escape or fuck up again. This is especially true as the player gets lower in life. So to reiterate, push them into attacks that are about to go off, instead of ones in the middle of going off usually.
Maybe another behavior could be AI pulling their team mates out of combos? Or to take a lesson from Starcraft micro, low health units go to the back, high health units go in front. Oh, maybe other lessons from Starcraft micro could be applicable here too? Lemme think.
Here’s a Brood War one, maybe enemies could just strafe and amble in varying patterns at varying speeds, so they’re kind of tricky to hit, or group into one place? (inspired by that one trick to evade scourge by moving in a tricky pattern)
Attacking while moving? (from the vulture and air unit tricks to attack while moving) Modern motion blending makes this easier. Retreating while attacking?
Moving ranged attackers away from the player? And trying to get them to flank from multiple vantage points that are themselves far from each other?
Enemies at low health that you have a pattern of attacking deliberately staying just outside your range to taunt you into attacking them while their friends gank you? (inspired by similar tactic for units ordered to focus fire specific units, pulling them into concave formations)
Maybe units could align in walls to protect longer range units? Maybe they could rush, then back off, rush then back off? There’s a lot of directions to go here if you think it over, and not all of them have to be logical to real-world tactics.