Critics entering an advance screening of “Batman v Superman: Dawn of Justice” were asked to sign a confidentiality agreement promising not to reveal “plot or character” developments before the film’s release. At least two spoilers, however, are worth revealing up front.

The first concerns Ben Affleck, whose casting as Batman raised a caps-lock outcry back in 2013. Surprise — he’s pretty good. With silvery temples and haunted eyes, Affleck brings a welcome touch of vulnerability to a traditionally ice-cold character. His altered Batman voice is a low rumble that feels almost warm compared to Christian Bale’s threatening hiss in the “Dark Knight” films.

The second spoiler is that, in most other respects, “Batman v Superman: Dawn of Justice” is not a good movie.

Its problems are built into its title, which promises a big battle between two DC Comics good-guys, but teams them back up for a future franchise, “Justice League.” To manage this hate-love flip-flop, screenwriters Chris Terrio and David S. Goyer invent some very flimsy and mercurial motivations for our two heroes.

Initially, they view each other as dangerous vigilantes (pot, meet kettle), though it’s Batman who’s angriest. He blames Superman (Henry Cavill) for a city-wrecking fight against General Zod (see 2013’s “Man of Steel”) that leveled Bruce Wayne’s financial headquarters and killed countless people.

But didn’t that battle take place in Superman’s Metropolis? Did Wayne commute there from Gotham? Director Zack Snyder does his best to allow two versions of New York City to co-exist, but the question nags. When Batman finally visits Lex Luthor (Jesse Eisenberg, distractingly twitchy), he’s cheerfully told, “You ought to hop over the harbor more often.” So there’s a ferry?

advertisement | advertise on newsday

These and other logical quibbles – people constantly know things they shouldn’t, or don’t know things they should – prevent the film from making sense even on its own terms. What’s more, the title-card bout turns out to be mere padding before another, unrelated climax. No spoilers, but it involves a mysterious woman (Gal Gadot) whose first name is presumably Wonder. (Speaking of women, Amy Adams returns as Lois Lane in distressed-damsel mode.)

Overlong, underdeveloped and almost entirely humorless, “Batman v Superman: Dawn of Justice” may please die-hard fans by pitting two DC icons against each other. Everyone else may want to wait for the next Marvel movie.