You're completely right, and it all boils down to learning how to see your characters as people rather than, well, just "characters", i.e puppets you're using to tell your story. You have to learn how to empathise with every single one of them, no matter how terrible or outlandish their actions are, and you have to understand what led to them making the decisions which led to those actions in the first place. Even if you don't really want to. If you refuse to truly put yourself in the shoes of your villain, then you'll end up with a villain who just does bad things because they're Bad. And likewise with your hero. We never get any real justification as to why Eragon is fighting the Empire, beyond petty revenge. He has no grasp of the bigger picture, and that never becomes an acknowledged issue. He doesn't even know what he wants to replace the Empire with or how his cause will improve the lives of the people he claims to be fighting for. He just fights the Empire because that's his pre-assigned "hero" role, and there's no more depth to it than that.
no subject