In the campaign I'm running, I have a wizard PC who saves his spells mostly for RP and utility purposes. He enjoys spells like Legend Lore, Misty Step, Find Familiar etc. So, he falls back on cantrips a lot after he burns through his few spell slots with combat spells.
While I'm fine with this, I feel like he's getting the short end of the stick when he's reduced to a Ray of Frost that does 1d8 (they're all level 3 right now, fairly new campaign) damage and slows someone each turn. This is even more important because it's a "numbers over power" campaign where the enemy often arrives in armies of dozens, where slowing one NPC has no real impact. I'm having a similar problem in another campaign with a warlock who, after using his invocations, has nothing to do but spam Eldritch Blast all day to deal damage to anyone.
My question is thus: What is the proper way to calculate cantrip/spell damage, and how can they boost it to be more in line with the other players?
From what I understand spells work like this: if it's not a saving throw or an AOE, or if it states to use one, you have to make a ranged attack check, which is 1d20 + prof + modifier.
Then damage is calculated as spell damage +...nothing? This hardly seems fair when all physical classes get to throw in str, dex, and con to all sorts of modifiers when they fight. Am I missing something here? Maybe it's more balanced than it seems and we're missing the obvious.