Try to make a variable that constantly counts the enemy's distance to player. Then make the enemy act differently depending on the distance. Usually in beat em ups enemies act defensive and stay away if you're far away. That way they give you the impression of being surrounded while others are trying to attack you. Also a limited amount of aggroing enemies is a must for a balanced game, at least in most scenarios. Make a variable that sets the limit and then randomly make enemies go aggro or back off while keeping the limit in check. Make it so that all enemies can aggro, but have less chance of doing so if they're far away. It gives the game a logical pattern while keeping it dynamic and unpredicatable. There can be some enemies that won't follow these rules, usually bosses or other special heavy hitters. Take for instance the ninjas in Streets of Rage almost constantly aggro you and if they aren't coming to attack you, they'd throw projectiles from distance while staying away from your attack range.
That's pretty much the logic. Making it work requires lots of testing and fine tuning. It all comes down to assloads of variables, randomly called events/functions and well positioned hitboxes. Leave the eye-candy for last. It'll just confuse the whole process of creating the technical stuff.