I like the way D&D 5e split stats:
- There’s proficiency that can go up to +5 and then there is the stat that follows the same rule, up to a maximum of +10.
- For proficiency it’s easy: is the bad guy less or more competent than your PCs?
- I ignore +1s as I find them pointless!
- As such you only have to care about +0, +2, +3, +4, and +5. You instinctively know what they mean even for the stat.
- I like to keep a To-Hit (TH) bonus for the NPC, so it’s easier to reference.
- As for Armor I treat it like a DC (duh?), and I use ICRPG Quickstart as a template: 10, 12, 15, 18, even though I think in D&D 5e it starts at 13. Up to you if you want to change anything depending on the D20 game that you are playing.
- Depending on the role of the enemy NPCs or the size of their group, I divide or multiply their HD by the player’s amount: they are a outnumbering gang of bandits? Divide the HD of the players by three. It’s a boss? Triple it’s HD. It’s not a quick go-to: it’s a base that you can modify according to your belief. Is that boss more dangerous than just the triple HD of your players? Yes? Quadruple it then, or more if you want.
- Speed? Either slower than the PCs so that they can escape or faster (for reverse containing if walls are not an option, like in the forest for example).
Aside from stats, give the entity a motivation: animalistic needs if the creature is maddened or bestial (breed, feed, protect, territorial, etc.) or self-aggrandizing if they are civilized (fame, honor, etc.). You can even add a ing-verb if they are civilized so Claiming Fame isn’t the same as Deserving Fame.
Quick détour back to HD: the reason I prefer HD over Hearts and attitude throw is that the amount you roll with the NPC’s HD is a good way to determine how the NPC is feeling at the moment of the encounter. A weakened Dragon won’t attack first, while if the resulting HPs is high he might just get cocky.
Roll 1d10: on a ten the NPC is active, which means he’d be willing to go in the dungeon with the PCs or work hard to accomplish his goals. Otherwise, give him a reason (and not an excuse unless he is lying) to not join the PCs in their quest.
Personality is the prism through which the character is going to attempt to fulfill his motivation through goals. Goals aren’t the same as motivation. I do not remember which game did it this way (Vampire?) but a personality trait when things go well and a personality trait when things go wrong for the NPC is a good way to go at things.
Determine the character’s means: is he rich? He is good at weapon combat? Does he have contacts? Which ones? These means can be used as angles of attack, potential weaknesses (quests to take them away from the NPC), worldbuilding tool, and negotiation tools if need be. How useful can that NPC be, or what kind of hooks could he know about thanks to these resources?
Anyway, I hope this helped! If you have any questions I am happily open to aiding! :>