So my players have been tasked with helping an all ages boarding school for sorcerers who are being targeted by an assassin’s guild, last session they investigate a lead which took them to the sewers, and discovered a series of caverns connected. Upon investigation they fought a giant spider, and defeated it pretty quick. Now they’ve gone further and found a prisoner who was being tortured by the guild.
The Assassin’s Guild use a bastardized dark version of magic used to make simic hybrids, but it turns the subject into an obedient slave, while granting them more unique animalistic features. The prisoner was once a subject but somehow broke free of the mind control, and has four spider legs/talons sticking from his back permanently. Originally I set the up ten or so hybrid assassins with 16 AC, 23 HP, armed with venomous daggers, acid spirit attack, stronger unarmed strikes. They are being led by a thin, almost sickly looking dwarf, whose displayed the ability to uses lightning magic at least.
I’m currently unsure if this will be enough of a challenge, since the fight is meant to be a tough battle, but my players are currently only 4th level. If anyone has suggestions on any changes I should make to the enemies they will face would be greatly appreciated.
You can also use the Encounter Builder tool on this site to match your party level and number of member in the group against monsters with a CR value to see how difficult an encounter should be. It's not perfect but, it's very helpful.
Something I do, that works particularly well for 5e, is dynamically balance hit points to manage encounters. If it feels like the party is getting hit really hard, it turns out that the enemies might be a bit squishier than expected. It doesn't work so well in the other direction, though, so my advice is pick monsters with beefy HP and cut them down if it feels bad. There are two other things I primarily look at for each encounter:
1. Creature's damage per turn vs party's durability. If monsters are going to hit every time, you have to make sure they're not doing terrible damage. If I see a monster that has a chance of hitting the party 75% of the time and dealing devastating damage, I nerf one or the other (or both). I balance encounters around three to five combat turns, because longer tends to drag on too much in my opinion. I'll look at the party's HP pool to make sure that the average damage is around, say, 70% of their total (I've had some remarkable rolls DM'ing and I don't want to make sure that they can get killed by RNG too easily, so aiming every encounter at "the party will die if they take average damage over this time and don't deal with the enemies sooner" is bad, especially if party members start to go down). Then I'll usually adjust the monster HP so that they should only last about two to four turns if my players do their normal damage output, so it's in the player's favor. I don't fight my players. Unless it's a story encounter, they're going to win most encounters unless the dice absolutely screw them. Remember that action economy is significant- forty goblins are a much larger threat than five orcs, even though each hit from the orcs may be harder.
2. Variety of creatures. I almost never do encounters with just one type of enemy (unless there's literally only one monster, in which case it's a boss fight in my opinion and that's a bit different). Even if it's a nominal change, I always have two or more types of enemies. That way, if the combat encounter goes too far in one direction or the other, I have a set of enemies that can have modified stats that aren't revealed. If the first enemy to act crits the paladin and knocks him unconscious in a single surprise attack (which happened last session I ran thanks to a random crit) the rest will be trash mobs with pretty meh stats. It gives you a lot more flexibility because you can make the second set of monsters weaker or stronger so that combat is engaging. I would never change things significantly, but maybe the first group of bandits is using short swords, and when they go an entire turn with no damage, the second group to act is using long swords. It's only an average of one point higher per roll, but it can make the encounter feel more engaging. Cookie cutters make sense for certain types of enemies- constructs, for example- but even just a slightly different bonus not only helps make things more engaging but also gives you an out for when the brown stuff hits the fan.
Now that I've mentioned how I keep combat from being a trainwreck, here's how I create a creature for my group.
1. Check the D&D Beyond for a stat block I like. Does it seem reasonable? 5e has some fairly significant issues with CRs being a bit screwy in supplements. I look at my first paradigm, adjust the creature's attack and damage (say, dropping a bonus damage die or increase/decrease a to hit modifier), check the AC and HP, make sure that the resistances and immunities are not going to cause problems, and check DCs for balance. I try to make as few changes as necessary, then note any changes that I'm making for when the party hits them.
2. If there's no creature like I want, improvise. Perhaps there's a similar creature- say an icy variant of a creature that I want to use as a water variant. Make some appropriate changes for fluff. Maybe I just need some inspiration; I'll find a creature in the DMG or Monster Manual that's an appropriate CR for the number I want to use and borrow its general values for to hit, damage, HP, and AC and fluff it out how I want (with changes if there's any issues with additional features). This way I don't have to balance from scratch. I'll also check the DMG and Monster Manual if I'm using a creature from, say, Xanathar's that I think might be unbalanced just to make sure that it's balanced against the CR I want to use.
3. Diversify to make things interesting. If I have a bandit statblock, I might give each of them different weapon types. Same to hit and modifier, but different damage dice. Step one or two of the bandits up, step one or two of them down, and then split them into two or three initiative groups (I don't roll for individual enemies because it eats a lot of time rolling and makes initiative a huge pain in the behind). I'll also balance HP and AC based on what "archetype" the bandit plays. Heavier weapons might correspond to lower HP (which , although this is usually the inverse for players, helps balance encounters). If I have a spell caster, I'll give them slightly diverse spell arrays (though, balancing spells is very difficult- I have most of my hostile spellcasters focus on cantrips for that reason, using only one or two leveled spells per encounter).
4. Adjust on the fly. If things go south, make things a little easier. If fights are too easy, summon reinforcements or buff up the last enemies to act. I don't buff enemies once they've acted because players remember if a creature goes from +5 to hit to +6 - I've never had someone complain that I rolled a +4 for a creature after it rolled +5 to hit the turn before, though. It's worth noting that you can also have enemies switch weapons, adapt, or change something- switch from two handed to sword and board, for example- to justify a change in attributes mid fight, though I would use this sparingly so it doesn't feel bait and switch. If every enemy suddenly pulls out +3 greatswords, it feels a bit contrived, but if the guy with a longbow pulls out a dagger, it could just be he didn't have more arrows or wanted to back up his ally in close quarters.
It helps to let your creatures make mistakes or have objectives other than killing the players. Remember that enemies have fog of war- although as the DM, you see the entire battlefield, enemies will not necessarily have that same perspective and can make mistakes. Perhaps an enemy who has a party member on death's door flees because the bandits have bad morale. Perhaps an enemy group that wins the upper hand is using non-lethal damage to try to capture the party members (though, it is worth noting that in 5e non-lethal damage, rules as written, is restricted to melee attacks). There are many options to deal with an encounter that comes into the field unbalanced, and that's almost as important as actually stating monsters properly. The dice will almost never fall how you expect. Your players may be on a hot streak, or they might all miss a goblin for two full turns because they're getting nothing above a three. Flexibility is super important, and almost every great combat encounter has some amount of flexibility baked in. For cinematic, major plot point boss fights, you definitely need to get the stats super firm and balanced, but the rest of the time you can (and should, in my opinion) adapt to make the game engaging. If you're seeing a lot of death saving throws from your party, and it's not because of spectacular bad luck, maybe dial things back a tad. If your party is sweeping the floor turn one, maybe beefier monsters are called for (though, notably, not necessarily more dangerous monsters).
You certainly don't have to borrow much from my system, or you can throw it all out, but I think the flexibility point is important. It's something I wish I knew when I started DM'ing. It's a huge benefit to know that you don't have to get encounters perfect before the dice are thrown. Now, certainly, you want to keep it reasonable. Players have expectations, and you should try to meet those. Tarrasques with the stats of wolves won't make your players feel epic. Sometimes you need to conform to "normal" enemy strength levels, to some amount- boss type enemies should be boss types and trash types should be trash types- but you can certainly afford some amount of behind the scenes adjustment, even while the dice roll.
Never, ever tell the party how much HP a creature has as a number. You can let them know how hurt monsters look, but not the numbers. It's meta, it's disruptive when people keep asking about it, and it takes away your easiest way to dynamically balance encounters. Sometimes things go wrong, and adjusting HP up or down can be one way to address that. You're making sure the story is compelling by making encounters the right length and difficulty for your group. Let your players land their awesome hits and win their close victories won at the end of their rope. Remember that this is not fudging- you're not changing dice, you're not lying about results, and you're definitely not trying to fix the outcome. Sometimes players take bad hits and might even die. Sometimes you're going to have your monsters just die incredibly quickly because of the party's dice being very cooperative. But HP balancing (and be careful with other adjustments) is important for the length of encounters. Length is not difficulty. You don't want encounters to be too long because it's tedious. You don't want encounters to be too short because then the threats feel "fake". Of course, the wizard rolling max damage on fireball might speed up an encounter or vice-versa, but it's fine as an awesome moment or embarrassing flop.
Lastly, non-HP incapacitation is an option. Perhaps you can talk an enemy down. Maybe an environmental object can instantly (or quickly) defeat an enemy. Giving players options will make things feel better. As long as the party has options in combat, they usually don't mind running into things beyond their league. It adds tension. Give the option to retreat from or circumvent encounters and they'll pick the fights they want.
This got a bit long, so I hope at least some of this helps. My gut instinct is that the AC for your encounter is a bit high. Your players will miss a lot, which is frustrating. Dial the AC down a bit and adjust the HP if it seems like it's going too fast. Be careful with additional poison/acid damage on weapon attacks, because they can kill players fast. However, I don't know your group, so it's a bit of a guess.
The rules for assigning CR are a pretty iffy match against actual monsters in the MM, and the encounter balancing rules are in turn a rather crude tool. The most reliable, if time consuming, option is to game it out -- just use your PCs character sheets (you should have them...) and play both sides; if you can't win the fight while controlling the PCs, unless the PCs are much better at tactics than you are, they probably can't win either. Of course, bear in mine that players are missing information you have and will make mistakes, either because they're lacking information, or just because they make mistakes (me to players last session: "congratulations of spreading damage evenly between the two regenerating targets...") so it will generally be harder for them than it is for you.
So my players have been tasked with helping an all ages boarding school for sorcerers who are being targeted by an assassin’s guild, last session they investigate a lead which took them to the sewers, and discovered a series of caverns connected. Upon investigation they fought a giant spider, and defeated it pretty quick. Now they’ve gone further and found a prisoner who was being tortured by the guild.
The Assassin’s Guild use a bastardized dark version of magic used to make simic hybrids, but it turns the subject into an obedient slave, while granting them more unique animalistic features. The prisoner was once a subject but somehow broke free of the mind control, and has four spider legs/talons sticking from his back permanently. Originally I set the up ten or so hybrid assassins with 16 AC, 23 HP, armed with venomous daggers, acid spirit attack, stronger unarmed strikes. They are being led by a thin, almost sickly looking dwarf, whose displayed the ability to uses lightning magic at least.
I’m currently unsure if this will be enough of a challenge, since the fight is meant to be a tough battle, but my players are currently only 4th level. If anyone has suggestions on any changes I should make to the enemies they will face would be greatly appreciated.
This might be useful to you, it is a section of the DMG that explains how to alter monsters and assign a Challenge Rating.
https://www.dndbeyond.com/sources/dmg/dungeon-masters-workshop#CreatingaMonster
You can also use the Encounter Builder tool on this site to match your party level and number of member in the group against monsters with a CR value to see how difficult an encounter should be. It's not perfect but, it's very helpful.
Something I do, that works particularly well for 5e, is dynamically balance hit points to manage encounters. If it feels like the party is getting hit really hard, it turns out that the enemies might be a bit squishier than expected. It doesn't work so well in the other direction, though, so my advice is pick monsters with beefy HP and cut them down if it feels bad. There are two other things I primarily look at for each encounter:
1. Creature's damage per turn vs party's durability. If monsters are going to hit every time, you have to make sure they're not doing terrible damage. If I see a monster that has a chance of hitting the party 75% of the time and dealing devastating damage, I nerf one or the other (or both). I balance encounters around three to five combat turns, because longer tends to drag on too much in my opinion. I'll look at the party's HP pool to make sure that the average damage is around, say, 70% of their total (I've had some remarkable rolls DM'ing and I don't want to make sure that they can get killed by RNG too easily, so aiming every encounter at "the party will die if they take average damage over this time and don't deal with the enemies sooner" is bad, especially if party members start to go down). Then I'll usually adjust the monster HP so that they should only last about two to four turns if my players do their normal damage output, so it's in the player's favor. I don't fight my players. Unless it's a story encounter, they're going to win most encounters unless the dice absolutely screw them. Remember that action economy is significant- forty goblins are a much larger threat than five orcs, even though each hit from the orcs may be harder.
2. Variety of creatures. I almost never do encounters with just one type of enemy (unless there's literally only one monster, in which case it's a boss fight in my opinion and that's a bit different). Even if it's a nominal change, I always have two or more types of enemies. That way, if the combat encounter goes too far in one direction or the other, I have a set of enemies that can have modified stats that aren't revealed. If the first enemy to act crits the paladin and knocks him unconscious in a single surprise attack (which happened last session I ran thanks to a random crit) the rest will be trash mobs with pretty meh stats. It gives you a lot more flexibility because you can make the second set of monsters weaker or stronger so that combat is engaging. I would never change things significantly, but maybe the first group of bandits is using short swords, and when they go an entire turn with no damage, the second group to act is using long swords. It's only an average of one point higher per roll, but it can make the encounter feel more engaging. Cookie cutters make sense for certain types of enemies- constructs, for example- but even just a slightly different bonus not only helps make things more engaging but also gives you an out for when the brown stuff hits the fan.
Now that I've mentioned how I keep combat from being a trainwreck, here's how I create a creature for my group.
1. Check the D&D Beyond for a stat block I like. Does it seem reasonable? 5e has some fairly significant issues with CRs being a bit screwy in supplements. I look at my first paradigm, adjust the creature's attack and damage (say, dropping a bonus damage die or increase/decrease a to hit modifier), check the AC and HP, make sure that the resistances and immunities are not going to cause problems, and check DCs for balance. I try to make as few changes as necessary, then note any changes that I'm making for when the party hits them.
2. If there's no creature like I want, improvise. Perhaps there's a similar creature- say an icy variant of a creature that I want to use as a water variant. Make some appropriate changes for fluff. Maybe I just need some inspiration; I'll find a creature in the DMG or Monster Manual that's an appropriate CR for the number I want to use and borrow its general values for to hit, damage, HP, and AC and fluff it out how I want (with changes if there's any issues with additional features). This way I don't have to balance from scratch. I'll also check the DMG and Monster Manual if I'm using a creature from, say, Xanathar's that I think might be unbalanced just to make sure that it's balanced against the CR I want to use.
3. Diversify to make things interesting. If I have a bandit statblock, I might give each of them different weapon types. Same to hit and modifier, but different damage dice. Step one or two of the bandits up, step one or two of them down, and then split them into two or three initiative groups (I don't roll for individual enemies because it eats a lot of time rolling and makes initiative a huge pain in the behind). I'll also balance HP and AC based on what "archetype" the bandit plays. Heavier weapons might correspond to lower HP (which , although this is usually the inverse for players, helps balance encounters). If I have a spell caster, I'll give them slightly diverse spell arrays (though, balancing spells is very difficult- I have most of my hostile spellcasters focus on cantrips for that reason, using only one or two leveled spells per encounter).
4. Adjust on the fly. If things go south, make things a little easier. If fights are too easy, summon reinforcements or buff up the last enemies to act. I don't buff enemies once they've acted because players remember if a creature goes from +5 to hit to +6 - I've never had someone complain that I rolled a +4 for a creature after it rolled +5 to hit the turn before, though. It's worth noting that you can also have enemies switch weapons, adapt, or change something- switch from two handed to sword and board, for example- to justify a change in attributes mid fight, though I would use this sparingly so it doesn't feel bait and switch. If every enemy suddenly pulls out +3 greatswords, it feels a bit contrived, but if the guy with a longbow pulls out a dagger, it could just be he didn't have more arrows or wanted to back up his ally in close quarters.
It helps to let your creatures make mistakes or have objectives other than killing the players. Remember that enemies have fog of war- although as the DM, you see the entire battlefield, enemies will not necessarily have that same perspective and can make mistakes. Perhaps an enemy who has a party member on death's door flees because the bandits have bad morale. Perhaps an enemy group that wins the upper hand is using non-lethal damage to try to capture the party members (though, it is worth noting that in 5e non-lethal damage, rules as written, is restricted to melee attacks). There are many options to deal with an encounter that comes into the field unbalanced, and that's almost as important as actually stating monsters properly. The dice will almost never fall how you expect. Your players may be on a hot streak, or they might all miss a goblin for two full turns because they're getting nothing above a three. Flexibility is super important, and almost every great combat encounter has some amount of flexibility baked in. For cinematic, major plot point boss fights, you definitely need to get the stats super firm and balanced, but the rest of the time you can (and should, in my opinion) adapt to make the game engaging. If you're seeing a lot of death saving throws from your party, and it's not because of spectacular bad luck, maybe dial things back a tad. If your party is sweeping the floor turn one, maybe beefier monsters are called for (though, notably, not necessarily more dangerous monsters).
You certainly don't have to borrow much from my system, or you can throw it all out, but I think the flexibility point is important. It's something I wish I knew when I started DM'ing. It's a huge benefit to know that you don't have to get encounters perfect before the dice are thrown. Now, certainly, you want to keep it reasonable. Players have expectations, and you should try to meet those. Tarrasques with the stats of wolves won't make your players feel epic. Sometimes you need to conform to "normal" enemy strength levels, to some amount- boss type enemies should be boss types and trash types should be trash types- but you can certainly afford some amount of behind the scenes adjustment, even while the dice roll.
Never, ever tell the party how much HP a creature has as a number. You can let them know how hurt monsters look, but not the numbers. It's meta, it's disruptive when people keep asking about it, and it takes away your easiest way to dynamically balance encounters. Sometimes things go wrong, and adjusting HP up or down can be one way to address that. You're making sure the story is compelling by making encounters the right length and difficulty for your group. Let your players land their awesome hits and win their close victories won at the end of their rope. Remember that this is not fudging- you're not changing dice, you're not lying about results, and you're definitely not trying to fix the outcome. Sometimes players take bad hits and might even die. Sometimes you're going to have your monsters just die incredibly quickly because of the party's dice being very cooperative. But HP balancing (and be careful with other adjustments) is important for the length of encounters. Length is not difficulty. You don't want encounters to be too long because it's tedious. You don't want encounters to be too short because then the threats feel "fake". Of course, the wizard rolling max damage on fireball might speed up an encounter or vice-versa, but it's fine as an awesome moment or embarrassing flop.
Lastly, non-HP incapacitation is an option. Perhaps you can talk an enemy down. Maybe an environmental object can instantly (or quickly) defeat an enemy. Giving players options will make things feel better. As long as the party has options in combat, they usually don't mind running into things beyond their league. It adds tension. Give the option to retreat from or circumvent encounters and they'll pick the fights they want.
This got a bit long, so I hope at least some of this helps. My gut instinct is that the AC for your encounter is a bit high. Your players will miss a lot, which is frustrating. Dial the AC down a bit and adjust the HP if it seems like it's going too fast. Be careful with additional poison/acid damage on weapon attacks, because they can kill players fast. However, I don't know your group, so it's a bit of a guess.
The rules for assigning CR are a pretty iffy match against actual monsters in the MM, and the encounter balancing rules are in turn a rather crude tool. The most reliable, if time consuming, option is to game it out -- just use your PCs character sheets (you should have them...) and play both sides; if you can't win the fight while controlling the PCs, unless the PCs are much better at tactics than you are, they probably can't win either. Of course, bear in mine that players are missing information you have and will make mistakes, either because they're lacking information, or just because they make mistakes (me to players last session: "congratulations of spreading damage evenly between the two regenerating targets...") so it will generally be harder for them than it is for you.