Characters should be real. Real people have faults and hurts and joy and goals and a host of other things. People are multi-dimensional. Characters in a story should be well rounded, and readers should be able to relate to them. Why is Spiderman more popular than Superman today? Because we can relate to Spiderman. We understand that being a hero is a curse for him. We understand that he must deny some of the things that he wants just so he can be this hero. Who can relate to Superman? Nothing can stop him, except kryptonite, which is some rock from outer space. Superman has no other fear. He has no faults. He is perfect and is therefore unrealistic, and sadly unrelatable in the post modern world.
Characters definitely have heroics, but it is born out of the situations they find themselves in, not necessarily because of who they are. Often, the best heroes are heroic despite who they are. We can relate to that! Jeff in A Dirge for the Malice is one of my unlikeliest heroes. In fact, one could argue that he isn’t a hero at all. But he’s our hero, the one we’re following, the one whose misadventures must be told. And he is our hero, despite all of the bad choices he makes along the way.
Everything depends on the purpose of your story. If your hero needs to discover the ark of the covenant and beat the Nazis while he’s at it, then more power to you. The story calls for it. But if your story is a real life tale, then your stories have to be real. Stories don’t have to be fantastical to be great, but they should be real.