The initial idea for Son of a Witch was to build a game that could be easily described as Castle Crashers meets The Binding of Isaac. I wanted to have endlessly replayable beat'em up experience with much deeper mechanics and ranged combat. But how do you combine two pretty different play styles?
In beat'em up games you have to line up with the enemy vertically to hit them. In a bullet hell shooter like Enter the Gungeon you can shoot in all directions. These two simply wouldn't work well if you just mashed them together, so I introduced some modifications. The main one was restricting ranged combat to the horizontal direction. You can shoot to the left or to the right. This goes for arrows, thrown weapons and orbs (magic projectiles similar to tears in Isaac). With some upgrades you can get spread shots, or mirror the projectiles on the other side, but the basic targeting is to the left or right.
Having to line up to attack with both melee and ranged attacks made the combat easy to read and perform even when there are different types of heroes and enemies fighting. The standard vertical evading of melee hits now works for ranged projectiles coming your way as well.
Beat'em up games usually have horizontally long, linear levels. There's almost no exploration, you just head to the right. I wanted to give the players that great sense of exploration you get from roguelike games: the map is randomly generated and non-linear. Sometimes it branches, sometimes it loops back. You are guaranteed to find a treasure room on every floor. There are 2-3 shops and often special rooms with NPC quests or mini-game challenges. Even if you find the boss and exit to the next level early, it's worth exploring the rest of the level to find better gear and level up your heroes.
During playtesting I found that most players like exploration. The only problem could appear in 4-player co-op games when sometimes the players would spend too much time arguing which way to go. This is especially visible for situations when many new players join the game and just want to move ahead without discovering all the subtle mechanics the game offers. For such players, I added a Party Mode which features a linear level layout, but still gives you random weapons, shops and NPC quests.
Initially the ranged characters had a huge starting advantage: they could hit an enemy without them striking back. If we just took your standard beat'em up monsters and threw them in a game where all the heroes are ranged, it would be really hard to provide a good challenge to the players. Either the enemies would have to be very fast to close the distance or they would have to have a lot of health to survive until they can threaten the player. Because of this, the enemies in Son of the Witch were designed differently: many of the enemies have range attacks and melee-only monsters serve as live protective moving shields. They usually walk in front of ranged characters and try to engage in hand-to-hand combat with the players while the ranged units are attacking them from the distance.
Having more ranged enemies results in having to do more dodging in Son of a Witch than your regular beat'em up game. There are often some projectiles coming your way and you have to evade them. Since the projectiles are only flying horizontally, there's less dodging that your regular bullet hell requires. So, this mix is somewhere in the middle and you don't need inhuman dodging skills that some of the bullet hell shooters require.
With all this said, you might still feel like the melee heroes are at a disadvantage. To balance things out, I added more mechanics that give melee fighters an edge in some different areas: While magic ranged attacks only deal damage to the enemies, the melee attacks also stun them for a second, interrupting their attacks or magic spells. If you use a weapon with the quick attack (all swords and some axes) you can stun-lock most of the enemies and just keep attacking until they die (or some other enemy hits you). Beside this, melee weapons have special rage attacks that can knock down enemies and stun many of the bosses.
One of my design goals was making sure that melee and range heroes synergize when playing together in co-op games. Having different combat mechanics actually works really good. The knights can stun enemies and keep the ranged attackers busy while the mages shoot them from the distance while buffing and healing their allies.
Beside magic projectiles, there's a wide range of magic spells. There are many different magic staves and every staff has a different spell effect: poison enemies, set them on fire, freeze them, slow them down or speed up your party, shoot lightning, create magic turrets that shoot at the enemies on their own, create obstacles on the screen, teleport yourself into safe spots, etc. Son of a Witch allows you to have multiple weapons at the same time, so you can combine different spells during the same fight.
The magic is very powerful, so at first it seemed like the mage heroes would once again be much more powerful. To balance that out, I allowed for melee fighters and archers to also use the magic items, but with less efficiency. For example, the Snake Staff will buff a weapon with poison, but the damage the poison has a base value that does scales with the heroes Magic skill. So, a Knight hitting someone with poisoned sword would inflict 3 poison damage per tick, while a mage doing the same would do 5 poison damage per tick. Another example would be the Earthquake staff that knocks down all the enemies and breaks the rocks with usable items weapon upgrades. When a Knight uses the staff, it would knock down everyone and break 2 rocks on the screen. When a mage uses it, it would break 5 rocks on the screen. Some other weapons work completely the same. For example the Teleport staff just teleports the hero regardless of the level of Magic skill they have.
When you mix two different play styles, you need to make sure that the player gets upgrades and powerups they can use. If I'm playing a mage hero, I don't need a triple-damage upgrade for an axe type of weapon. This can be a big problem for procedurally generated games. If you leave everything to the random number generator, your game won't be enjoyable.
In Son of a Witch, I solved this problem by rating every item and weapon in melee/magic/ranged category and then multiplying the drop rates with the skill levels of heroes in each of the categories. For example, let's say we have an item with a drop chance of 10% and it's an item only used by Melee characters. Let's say it's a single player game, and the player selects a Mage hero, who has 30% Melee skill. At the start of the game, we reduce to drop rate to 30% of the original, making it on 3% chance now.
You might wonder why don't we disable it completely? It's because it's really rare that a weapon or item is completely useless. Even if you are a mage, having a sword available could be useful to do some quests (for example, when the princess is attacked by goblins, the stun-lock ability of the swords is really useful) or complete some NPC quests easier. Beside that, the game gives you many upgrades during a run, so you might sometimes decide to switch hero class or become multi-class at some point and having at least some of the weapons available helps.