In D&D 5e, spellcasters often have to choose between spells which affect a target on a successful melee attack and spells which affect a target on a failed saving throw. The fire bolt cantrip (1d10 to 4d10 damage depending on character level), for example, requires an attack roll, while the poison spray cantrip (1d12 to 4d12) requires a Constitution saving throw by the target. Obviously, this difference could also apply to class features that require a saving throw to avoid an effect.
Assume two hypothetical spells which are the same level, cause the same damage of the same type, and affect a single target (and can thus be most directly compared with a single attack roll). Assume no resistances or immunities for the target, and assume the character is facing a creature of a CR matching their level (as they often would be as part of a party of 4-6). Also, assume that players are experienced, but are not allowed to consult the Monster Manual or other DM resources.
Possible considerations:
- Many experienced players will know the AC of common monsters, but even when they don't, it's easy to figure out after a few attack rolls.
- Most players won't often have knowledge of full monster ability scores, which determine saving throws.
- Many DMs roll in secret. Even if they roll adversary saving throws in the open, the fact that there are 6 potential saving throws (and only 3 common ones) will make it hard in any given combat for a player to determine a creature's saving throw bonus.
- Monsters have guidelines for ACs that are typical for a CR ("Monster Statistics by Challenge Rating", DMG p. 274).
- Many monsters do not have any saving throw proficiencies. The DMG recommends that saving throw proficiencies primarily be used to counteract saving throw penalties from low ability scores.
Given this, and other considerations that you explain in your answer, from a player's point of view will a character succeed more consistently with an attack roll or a saving throw, or are the results of attack rolls more predictable than saving throws?