A password will be e-mailed to you.

Zack Snyder’s directorial efforts are often visually spectacular but emotionally empty affairs, deriving their thematic oomph from spectacle, violence, and Nietzschean macho posturing. It’s an almost singularly ill-suited approach to a Superman movie. Snyder doesn’t really get Superman’s basic attraction: he’s a boy scout in the best sense, a naturally decent fellow who lifts up the least among us.

Snyder’s first Superman outing, Man of Steel, was huge but hollow as a result. Snyder’s new sort-of-sequel, Batman v Superman: Dawn of Justice, doesn’t serve the character (once again played by Henry Cavill) much better. Superman spends most of the movie either worrying about Lois Lane (Amy Adams), or glumly moping that he’s suspected of killing some people in an incident in Africa when he didn’t. A U.S. Senator (Holly Hunter) demands that Superman come before a hearing, so Congress can figure out what to do with an unstoppable figure who answers to no one and intervenes where he chooses.

As reporter Clark Kent, Superman himself gets upset over another vigilante in Gotham City – which apparently sits right across the bay from Metropolis – who also answers to no one and intervenes where he chooses. That, of course, is Batman (Ben Affleck) – a.k.a. billionaire Bruce Wayne. He in turn concludes that Superman’s godlike powers are too much of a risk to tolerate, over the objections of his faithful butler Alfred (Jeremy Irons).

Throwing this supposedly darker and more gritty character into the mix doesn’t help Snyder, either. Batman may be about abiding amidst fear rather than banishing it, but he’s about doing so with honor and moral principle. Yet Snyder plays fast and loose with Batman’s time-honored refusal to use firearms, and he completely jettisons Batman’s refusal to kill. There’s a Batmobile chase that clearly offs loads of bad guys; at least one fight scene where it’s hard to see how anyone survived; and then there’s Batman penchant for branding his captures before leaving them for the cops. In his defense, Snyder is deliberately presenting a Batman who’s lost his moral compass, burnt out and cynical from years of Sisyphean struggle and some unspoken but hinted-at personal tragedies. Still, the whole business is a bit off-putting.

The other problem with Batman v Superman is the plot, which admittedly probably isn’t Snyder’s fault. His job is to lay the groundwork for an extended cinematic universe of DC Comics superheroes to rival Marvel’s Avengers franchise. Wonder Woman (Gal Gadot) shows up, and does have her own choices and agenda. But she’s mainly there to establish her presence so we can get on to the Wonder Woman standalone movie. The script by Chris Terrio and David S. Goyer comes with all the superhero franchise vices: too many characters, and weird tangents that don’t go anywhere because they’re setting up future films.

The story simply has no time to breath. It presents Superman and Batman’s mistrust of each other and desire to shut each other down, but doesn’t actually emotionally invest us in this impasse. It’s packed too full, and running too fast and stumbling over itself to get to everything. Not surprisingly, everyone is being manipulated by Lex Luthor (Jesse Eisenberg), and the villain’s scheme does deliver a few genuinely nasty surprises. But it feels like the filmmakers started with the massive 45-minute final smackdown, then reverse engineered the rest of the plot from that.

And yet, Batman v Superman isn’t a disaster. The plot may not be terribly well-orchestrated, but it moves. At two and a half hours, it feels shorter. And once that climactic battle royale gets underway, the character motivations snap into focus. Cavill may not have much to do as Superman, but what he does have to do he does well enough. Gadot certainly seems to be having fun as Wonder Woman. The best performance is actually by Affleck, who manages Batman’s grim world-weariness in just the right way so Snyder’s brutalist take on the character doesn’t undo our sympathy. Eisenberg is the only person who seems a little out off place; his performance as Luthor isn’t bad, but it rockets weirdly from fan-boy-ish giddiness to philosophic psychopathy, as if Snyder wanted Luthor to come off as an evil Silicon Valley tech bro.

But bless his heart, Snyder is trying. Batman’s hostility to Superman is grounded in a compelling early sequence where we see Man of Steel’s Metropolis-smashing finale from Bruce Wayne’s ground-level perspective. It’s a pretty obvious reaction by Snyder to criticism of the wanton destruction and implied civilian deaths in Man of Steel. He never delivers an actual moral reckoning for Superman’s actions in that first film. But it’s genuinely hilarious how many asides there are in Batman v Superman assuring the audience that the bombed-out industrial wastelands the characters do battle in are devoid of civilians. Snyder may sound like a Martian when he’s asked about morality in his films, but at some level he seems to get that he needs to do better.

In fact, the best moment in Man of Steel comes when one of the Kryptonian villains threatens Martha Kent (Diane Lane), and Superman literally knocks the interloper across a few miles of corn field, shouting “Don’t you hurt my mother!” It plays so well because it seems so unforced on Snyder’s part. Amidst all the steroidal fury, of course a boy’s love for his mother is the one form of human warmth and tenderness the director just gets.

The key moment of moral revelation in Batman v Superman – which cuts through the murk and grit of the hero-on-hero fratricide – is once again all about dear old mom. And God help me, Snyder basically pulls it off. It’s far from a perfect movie and it’s got a lot of problems. But in the one moment when he really had to sell it, Zack Snyder of all people made me choke up a little.