How would one architect inheritance in a game with pawns and characters that have to share some supertype?

If you want the dragon to be controllable by an AIController or a player maybe even, and it should be able to walk around and be animated, I’d shorthand definitely go for inheriting from a character.

If your BaseCharacter has too much “character-like” behaviour for a dragon, you might just want to put another base class in between, have your dragon inherit it, have another BaseCharacter inherit it, and then make subclasses from that for humanoid (NPC, player).

You’ll have to find your own preference for this. I’d definitely recommend the character as it already has basic movement set up in the movement component, and it’s just easier to get started. See the documentation on characters to get a better feeling on it.

EDIT: If you inherit from a pawn only, in the long run, you’ll most likely have to reimplement many things that the character has already implemented (starting with basic things like changing max movement speed also in diagonal movement, of course this is an easy to solve example, but it might sum up to a lot). IMO things that work similarly for the both of them should be put in a BaseCharacter and have everything else inherit from it. If there are exceptions, the performance hit or overhead will be small.