You don't need this blog to tell you that Overwatch has thoughtful character design. But maybe you can learn new approaches to ability design with me. :)
I first realized I was lacking some kind of design sense when I realized I held two thoughts in my mind simultaneously: A) Reinhardt's abilities make no mechanical sense together, and B) Reinhardt feels fun and cohesive anyway. It was an obvious sign that my design skills were amateurish in comparison to the folk at Blizzard, and so began my quest to figure out why things worked.
I've concluded there are a few ways you can design ability sets, and when you design with this in mind, you can make unique and cool character designs.
In a broad sense, you can design kits like so...
Synergistic: the abilities interact and "combo" with each other to create a particular effect. Upside is the cool feeling when it all comes together. Downside is there's little choice involved -- just press every button.
Some abilities act as a dampening effect for the downside of another ability.
Some abilities are fine by themselves but can combo with each other for a third overall effect.
Complimentary: there's a "correct" ability to use in every given situation. Upside is variety in different contexts. Downside is there's little choice involved -- just press whatever button makes the most sense.
Notice that the downside is the same when implemented incorrectly in that it reduces player choice. I think the solution to bringing player choice back is simply introducing tension by making the decision a lot harder.
So what's up with Reinhardt?
The main reason he's fun is because there's tension between his abilities, especially with his shield and charge/hammer: if you're dedicated to shielding, charging in / going melee would leave your allies vulnerable. If you've charged in, your shield won't protect your allies nearly as much due to positioning. Obviously there are good opportunities to charge (and melee), but it's not always easy to know when.
On paper, it seems ridiculous to put a charge and shield on the same hero. But it works on Reinhardt for two reasons.
1. In opportunities when he can't do one, the other is likely to be a decent idea. Assuming you're in the right team comp, he'll never feel useless.
2. There's always an internal minigame when playing Reinhardt: Rush in, or keep shielding? Both can yield great results when done properly, but it'll always be a judgement call. There's so much nuance in this choice that you'll always be playing this internal game, no matter how good you are.
The conclusion is that there's (in my opinion) two broad approaches to kit design.
If you make abilities synergize with each other, I recommend making them useful alone so that players must decide if using both ability costs at once is worth it. Alternatively, you can simply make the synergy difficult to pull off so players will be eternally mastering the combo.
If you make abilities complimentary with each other, I recommend maximizing the number of situations where players have trouble deciding between approaches. Both abilities should seem like good options, but both should yield vastly different outcomes for the kit to be fun. (This is obvious on paper, but really make sure that the players feels like their choice made a meaningful impact on the outcome.)
Nice!