Character Development
Writing Morally Complex Characters Without Making Them Unlikeable
Your protagonist needs to do questionable things. The trick is making readers understand why, even when they wish the character had chosen differently.
You want your protagonist to operate in moral grey areas. To lie, manipulate, betray, maybe kill someone who didn't entirely deserve it. You want a character with rough edges and real darkness. But every time you write them doing something genuinely wrong, your beta readers come back with the same note: "I stopped caring about them."
The problem is rarely the dark action itself. Readers accept murder, deception, cruelty, and worse from fictional characters. They rooted for Walter White as he poisoned a child. They rooted for Joel in The Last of Us as he massacred an entire hospital of people trying to save humanity. They rooted for Jaime Lannister even though his first appearance involved pushing a ten-year-old out a window.
These characters didn't lose their audience by doing terrible things. They kept their audience by doing terrible things for reasons the audience understood. That distinction is the entire craft of moral complexity.
Morally Complex Versus Morally Repugnant
A morally complex character faces genuine dilemmas where every available option costs something. They choose the option that aligns with what they value most, knowing full well they're causing harm. The reader sees the logic, feels the weight of the tradeoff, and stays invested even when they disagree with the choice.
A morally repugnant character does terrible things because the author wanted a "dark" protagonist. No dilemma. No cost. No internal logic. Just cruelty with a brooding aesthetic layered on top. The reader checks out because there's nothing to wrestle with.
The line between these two is thinner than most writers realize, and it has almost nothing to do with the severity of the action. Joel kills dozens of people, including doctors, to save one girl. That's objectively monstrous. But the audience tracks his reasoning through every bullet because the game spent fourteen hours building his relationship with Ellie, showing what losing a daughter did to him the first time, letting the player feel the weight of a world that takes everything and gives nothing back. By the time Joel pulls the trigger on that surgeon, the audience doesn't agree with him. They understand him. And understanding is more durable than agreement.
The Empathy Budget
Think of reader sympathy as a bank account. Every scene where your character shows vulnerability, suffers unjustly, acts with compassion, or reveals a genuine human longing makes a deposit. Every scene where they do something morally ugly makes a withdrawal. The account needs to stay in the black. Drop below zero, and the reader disconnects.
This accounting happens subconsciously. Readers don't sit there tallying deposits and withdrawals. They feel it. "I like this person" slowly shifts to "I'm not sure about this person" and eventually to "I don't care what happens to them." Once the last shift happens, your story is dead.
Breaking Bad is a masterclass in spending the empathy budget. The pilot makes enormous deposits. Walter White has terminal cancer. He's a genius trapped in a humiliating job. His brother-in-law condescends to him. His wife doesn't see him. He can't afford his own medical treatment in the richest country on earth. By the time he cooks his first batch of methamphetamine, the audience's account is overflowing. They'd forgive him almost anything.
And Vince Gilligan knew exactly how to spend that surplus. Season one Walter does bad things for sympathetic reasons. Season two Walter does worse things for increasingly selfish reasons, but the earlier deposits still cushion the fall. By season three, the audience starts feeling uneasy. By season four, many viewers are rooting against him. By season five, the account is empty and the audience watches with horror instead of sympathy.
Gilligan didn't stumble into this trajectory. He calibrated it. Every act of cruelty was preceded by enough humanity to keep the audience from leaving, until the story required them to see Walter clearly. The empathy budget isn't about keeping your character likeable forever. It's about controlling when the audience turns on them, if they turn at all.
The Character Must Believe They're Justified
Nobody wakes up thinking "I'm the villain of this story." People who do terrible things construct elaborate justifications for why those things were necessary, proportional, or even righteous. Your morally complex character needs the same internal logic.
Joel doesn't think he's a monster. He thinks he's a father who already lost one daughter and won't lose another, regardless of what the math says about the greater good. Cersei Lannister doesn't think she's a tyrant. She thinks she's the only person willing to do what's necessary to protect her children in a world that wants them dead. Walter White doesn't think he's a drug lord. He thinks he's a man finally claiming the respect and agency the world denied him for fifty years.
The justification doesn't need to be correct. It needs to be internally consistent. The reader needs to see the chain of logic from the character's wound, through their worldview, to the action. If the chain holds, the reader follows. If it breaks, the character feels arbitrary.
This is where the wound-lie-armor chain matters most. A morally complex character's worst decisions usually trace back to their deepest injury. Joel's brutality traces to losing Sarah. Cersei's ruthlessness traces to a lifetime of being told her only value was as a wife and mother. Walter's megalomania traces to the gutting injustice of being cheated out of his life's work by Elliott and Gretchen Schwartz. The wound doesn't excuse the behavior. It explains it. And explanation is what the reader needs to stay in the story.
Save the Cat (Done Right)
Blake Snyder coined the phrase "save the cat" to describe the moment where a character does something small and kind, proving to the audience that this person is worth following. The concept is sound. The execution is where most writers go wrong.
A bad save-the-cat moment is a pasted-on scene where the assassin pets a dog or the corrupt politician gives money to a homeless person. It feels manipulative because it is manipulative. The kindness has no connection to the character's psychology. It exists only to buy sympathy.
A good save-the-cat moment reveals something true about what the character values, even (especially) when their behavior in other scenes suggests they value nothing. Jaime Lannister pushes Bran out a window in his first scene. For two seasons, the audience despises him. Then he jumps into a bear pit to save Brienne of Tarth, a woman who represents everything he once was and lost: honor, courage, keeping your word. That scene works because it doesn't contradict who Jaime is. It reveals a buried part of him that his years of cynicism almost killed.
The principle: save-the-cat moments work when they expose the longing beneath the armor. They fail when they're bolted onto a character who has no longing to expose.
Where to Place These Moments
Front-load them. The first time the audience meets your morally complex character, they need a reason to invest. You get roughly three scenes to establish that this person, despite their flaws, has something inside worth rooting for. After that, the reader has either bonded or checked out.
Then space them through the narrative at strategic intervals, especially before major moral transgressions. If your character is about to do something that will drain the empathy budget, make a deposit first. Not immediately before (that's too obvious) but within the same act. Give the reader a recent memory of the character's humanity before you test their tolerance.
The Cost of Every Choice
Moral complexity requires consequences. A character who does terrible things and suffers no fallout isn't morally grey. They're a power fantasy.
When Joel saves Ellie, he loses the trust of every surviving Firefly. He loses Tess's memory, since Tess died believing in the cure Joel just destroyed. He loses, eventually, Ellie herself, when she learns what he did. The sequel builds its entire story on the consequences of Joel's choice. His violence wasn't free. It cost him everything he did it to protect.
When Walter White chooses pride over family, he loses his family. When Cersei chooses power over love, her children die. When Macbeth chooses ambition over loyalty, he loses his sanity, his wife, and his kingdom. Moral complexity without consequences is wish fulfillment. Readers sense the difference immediately.
Consequences also do something structurally useful: they create new dilemmas. Joel saved Ellie, and now he has to lie to her about it. That lie becomes its own moral problem, generating tension for the rest of the story. Consequences breed consequences. One hard choice creates the conditions for the next hard choice, and the character descends deeper into the grey with each step.
Three Spectrums of Moral Complexity
Not all moral complexity works the same way. Three distinct spectrums produce different reader experiences, and understanding which one you're working with helps you calibrate tone and consequence.
The Ends-Justify-Means Spectrum
The character pursues a goal the reader supports through methods the reader finds troubling. Joel. Batman. Dexter Morgan. The audience agrees with the destination but flinches at the route. This spectrum is the easiest to write because the character's goal generates automatic sympathy. The tension comes from asking: how far is too far?
The Competing-Values Spectrum
The character holds two values that conflict, and every decision betrays one of them. A soldier who values both duty and compassion. A mother who values both honesty and protecting her child. The audience understands both sides and watches the character torn between them. This spectrum creates the deepest internal conflict because the character genuinely cannot win. Every choice is a partial betrayal of something they believe in. For more on this, see how character values create conflict.
The Gradual-Corruption Spectrum
The character starts sympathetic and, through a series of individually justifiable steps, becomes someone they would have condemned at the start. Walter White. Macbeth. Anakin Skywalker. The audience follows because each step makes sense in context, even as the cumulative trajectory becomes horrifying. This spectrum is the hardest to write well because the character must remain internally consistent while changing fundamentally.
Map Your Character's Moral Landscape
The 5 Moral Spectrums framework helps you build morally complex characters by mapping where they fall on each spectrum: from self-sacrifice to self-interest, from mercy to justice, and more. Calibrate exactly how far your character will go and why.
Get the 5 Moral SpectrumsFree resource. One of 75+ storytelling frameworks on Loreteller.
Or build a character right now — Character Forge (free to try)
When the Audience Turns (and How to Prevent It)
There are specific actions that drain the empathy budget faster than others. Knowing them helps you calibrate how much deposit you need before a withdrawal.
Cruelty toward the vulnerable. Audiences tolerate violence against equal opponents far more than violence against people who can't fight back. A character who kills an armed adversary loses less sympathy than a character who harms a child, an animal, or someone begging for mercy. If your story requires cruelty toward the vulnerable, the justification needs to be airtight and the consequences severe.
Betrayal of someone who trusts them. Reader sympathy erodes sharply when a character breaks faith with an ally. The closer the relationship, the bigger the withdrawal. Walter White letting Jane die is the moment many viewers' accounts went negative, because Jesse trusted Walt completely and Jane's death was a cold calculation.
Self-awareness without change. A character who knows they're doing wrong and does it anyway with no visible struggle reads as sociopathic. The audience needs to see the cost registering. They need to see the character suppress their conscience, rationalize, lose sleep, drink too much, snap at people they love. Internal damage proves the character still has a moral compass, even when they're ignoring it.
Enjoyment of cruelty. The moment a character enjoys causing pain rather than viewing it as a necessary cost, the audience recategorizes them from "complicated person" to "villain." Walter White's "I am the one who knocks" speech is the hinge point. He's no longer enduring the violence of the drug trade. He's savoring the power it gives him. Most of the audience's remaining sympathy died in that scene.
Building Your Morally Complex Character
Start with the wound. What happened to this person that bent their moral compass? A character who does dark things for no psychological reason is a plot device, not a person.
Then define what they value so intensely that they'll break other moral rules to protect it. Joel values Ellie's life above the fate of humanity. Walter values his own significance above his family's safety. Cersei values her children above the realm. The value needs to be genuine and recognizable. Something the reader can feel in their own chest.
Then put that value under pressure. Create situations where protecting the thing they love requires hurting someone else, breaking their own code, or crossing a line they swore they'd never cross. Let them cross it. Let them see what it costs. Let them cross the next one.
Track the empathy budget as you draft. After every morally dark scene, ask: does the reader still have a reason to follow this person? If you're not sure, write a scene that reminds the reader what's worth protecting in this character. Not a pasted-on kindness. A real moment of vulnerability, longing, or connection that reveals who this person is underneath the armor.
The goal is not to write a character the reader agrees with. The goal is to write a character the reader understands so thoroughly that when the terrible choice comes, they feel the weight of it instead of checking out. That's the difference between moral complexity and edgy window dressing. One trusts the reader to sit with discomfort. The other mistakes shock for depth.
For more on connecting dark behavior to psychological roots, read The Psychology Behind Character Wounds. If you're building an antagonist who needs this same treatment, How to Write a Villain Worth Fearing covers the mechanics of sympathetic villainy. And for building flaws that actually cost your character something, the character flaws guide breaks down functional versus cosmetic flaws.