Doctor Who: The God Complex

Spoiler Warning. You know the drill.

Jekyll is a very dark series. It possesses Moffat’s characteristic witty one-liners, and his characteristic brilliant building of dramatic tension. It even has a few moments that directly parallel some of the storytelling techniques Moffat has used in Doctor Who – in particular, the scene where Jekyll and Hyde talk to each other via video camera has echoes of the Doctor’s conversation with Sally Sparrow in Blink.

But it’s also very clearly not his best work – there are moments where the pacing lags significantly, and the story feels disjointed at times, especially in the early episodes. The latter portions of the series have their own problems, with enormous plot holes opening up beneath the narrative in a way that really gives it problems. For instance, Mrs. Utterson’s motivations are never really clear, especially in light of Jackman’s mother’s assertion that ‘Hyde is love’. And Tom’s children being able to ‘swap’ is never really explored in a meaningful way; I’m not normally an advocate for Chekhovian minimalism, but that just feels sloppy. However, by that point the pacing has picked up enough to gloss over a lot of the plot holes, and with characteristic Moffat lines (‘Trust me, I’m a psychopath’ was especially brilliant) to distract us, the story manages to just barely hold itself together.

The ending, though, and by that I mean the final frame before the show cuts to black, was utterly terrifying. It was a clever subversion of what we expect in narrative; after we thought we were safe in the denouement, we’re given a sudden jolt of adrenaline right as we cut to black. It takes away the feeling of satisfaction and leaves the audience with a slightly disappointed feeling. And it seems to do this very intentionally; I’m reminded of the similar subversive techniques I talked about in The Girl Who Waited. In fact,

Oh dear, I’ve reviewed the wrong series again, haven’t I? Terribly sorry about that.

The God Complex has a very interesting relationship with fear.

I didn’t expect Jekyll to be scary. So I urged my wife to watch it with me. And when it turned scary, I had to apologize to her, because she really dislikes scary television, and will be jumpy (and nightmare-prone) for days after a scary scene. It’s why she doesn’t watch Doctor Who. And she asked me why anyone would want to watch things that are meant to scare them.

And the answer to that question parallels some of the elements in this story. Basically: we watch scary things because it lets us master them. Television and film let us take our fears, reduce them to two dimensions – to a medium where we know they cannot touch us – and then face them. So what we’re left with (those of us who like scary stories, anyway) is the adrenaline rush without the real terror, and a sense of elation and power. We can practice being brave without any real danger. And when we’re done, we can leave the scary stuff behind, safe in the Land of Fiction. And we can laugh at it, and joke about it, and reduce it thereby. (Of course, it’s never really gone. The Dark is always scary, and always real, and stories are just a lie we tell ourselves to feel better)

In The God Complex, we have a creature that takes the thing we’re most afraid of, and confronts us with it. But unlike most stories that start out with that premise, this creature doesn’t feed on our fear, it feeds on our faith, on the things we fall back on to make ourselves feel brave. It takes the very reason we watch scary stories and perverts it, and devours us. This is what makes the jagged transitions between the linear narrative and scenes of the victims laughing and screaming so effective.

This link to television is echoed in the repeated use of black-and-white camera feeds throughout the story. This feels very much like the Second Doctor, with his penchant for staring out of cameras and right at the viewer. The feeling is especially strong in the scene where the Doctor is talking to Rita.

On the subject of past Doctors, this is very much another Seventh Doctor story. And it’s easy to see it coming, but it’s still played very well. Specifically, the climax of this story bears an uncanny, unmissable resemblance to the climax of The Curse of Fenric. Except, as a friend pointed out to me, it is crucial to note that in Fenric, the Doctor didn’t believe the things he said to Ace. But he very clearly does believe every word he tells Amy. It is one of the most emotionally powerful scenes in Moffat’s Doctor Who to date. (Well, obviously “I stole your childhood and now I’ve led you by the hand to your death” isn’t true in the present tense (since his goal was to destroy Amy’s faith in him), but it does reflect the fear that leads him to stop travelling with Amy and Rory.)

So, it is a shame that it is marred by an obvious flaw. And that flaw is the phrase “Amy Williams”. I have no idea how that line of dialogue got out of the gate. I mean, it is clear what Whithouse is trying to say here: that it is time, basically, for Amy to grow up and stop having adventures with the Madman in a Box. It is meant to contrast with Amelia Pond, the little girl who wasted her childhood waiting for the Doctor.

But that’s not how it comes across, for a couple of reasons. First, the changing of surnames for women is culturally loaded. What we get instead is a paternal figure performing the ancient ritual of ‘giving away’ his daughter. It reeks of a transfer of possession, and objectifies Amy in a very direct way.

On a more significant, personal level, it is a reversal of an established story device that seems to have been unceremoniously dropped at some point in series 6. Amy’s role as a fairly dominant force in her relationship with Rory (in a way that very nearly has D/s overtones) is well established in series 5, and there are even references to Rory taking Amy’s name (so, Rory Pond, not Amy Williams). It is, in fact, the Doctor who establishes Rory as Rory Pond in the first place:

The Doctor: Amelia, from now on, I shall be leaving the… kissing duties to the brand new… Mr. Pond!
Rory: No! I’m not Mr. Pond. That’s not how it works.
The Doctor: Yeah it is.
Rory: … Yeah, it is.

This is further referenced in the Christmas Special, with the Doctor’s missive ‘Come Along Ponds’. But, at some point, Rory started being Rory Williams again. I suspect this might be related to Amy becoming pregnant/captured/a mother, in which case it is doubly troubling, because it echoes a cultural narrative that tells us that motherhood is the defining line where women have to ‘grow up and settle down’, which is equated in this narrative to ‘stop being assertive’.

So, here the Doctor seems to invert an observation he himself made about Amy. I think the intent may have been to demonstrate that he is trying to undo (some of) the changes he made in her life, but it comes across as a statement that she should be less assertive. And why not? That’s what we expect of women who have grown up, after all.

In short, they really missed the mark they were trying to hit with that line, and subverted an established aspect of Amy’s role as a strong female character.

And while we’re talking about criticisms, at first I felt that the character development from The Girl Who Waited was completely dropped. It felt like everything from that episode was suddenly water under the bridge for the three companions. There are a couple of points where this is not true: certainly the Doctor’s anguish about not wanting to kill his companions was influenced by the death of old Amy. And, and a friend pointed out to me, Rory’s use of the past tense when talking about travelling with the Doctor makes it clear that he is done with the Doctor and is just waiting for Amy to agree. But Amy, whose ‘Where is she?’ was the last thing we heard in the previous episode, seems to be relatively unaffected by those events. It’s an unfortunate tonal mismatch with the previous episode, given how well this episode works otherwise.

And the episode really does work. The visual storytelling here is fantastic, playing with techniques that aren’t seen much (if at all) in Doctor Who. We have the psychological scenes that break from the narrative to cut-up clips of text and disjointed images of the victims. There’s the use of cameras and camera feeds to structure the narrative and emphasize the nature of the danger. Throughout the episode we get a distinct downplaying of the monsters in the rooms and even the Minotaur; instead, the fear is purely psychological, with the lingering shots focusing on the victims as they are driven mad. Whithouse really knows how to write a Doctor Who script, and Moffat’s production team is doing unparalleled work here.

Praise Them.

Comments (3)

EA Origin, or: a Case Study in bad consumer experience

I don’t play The Sims. The premise holds a certain amount of appeal for me, and the franchise’s quirky sense of humour and artistic style agree with my aesthetic sense, but something about the gameplay – the ebb and flow of action and the effort/reward cycle the game creates – doesn’t quite gel into an experience that I enjoy.

But my wife, she loves The Sims. She has sunk at least as many hours into The Sims 3 as I have in Starcraft 2 and Civ 5 combined. She owns every major expansion that’s been released, as well as The Sims Medieval and its expansion.

So when her Sims 3 update failed halfway through, leaving the game in an unlaunchable state, she was understandably distressed. The game plus all of its expansions requires a lot of effort to reinstall; we’d be looking at several hours of installing, with user prompts spaced just far enough apart to make doing anything else impractical.

So, we researched the issue and discovered that the EA Download Manager needed to be updated before The Sims 3 could be updated. Now, EA doesn’t make it terribly clear that the Download Manager is a separate application; it is usually launched from The Sims launcher, and is skinned to look like any other menu in The Sims when this is done. So, we found and updated the EA Download Manager.

And it turned into EA Origin.

Again, nothing told us this was going to happen, it just popped up an EA Origin installer, without telling us what Origin was, why we needed it, or why it started installing it when we were trying to update EA Download Manager.

Some further googling revealed that EA Origin is the new replacement for the Download Manager, and that it (gods help us) is “our new digital playground”. Apparently it is EA’s attempt at Yet Another Online Distribution System. With social features! Look, EA, I hate to break it to you, but Valve already one that battle conclusively. We need another Games For Windows Live about as much as we need arsenic.

The fact that nothing told us, at any point during this process, what EA Origin was or why it was being installed is a huge oversight. The user shouldn’t have to use Google to figure out what the product you’re giving them is. This is a terribly sloppy user experience.

But it’s still not insurmountable. So, rolling our eyes, we proceed to install it, and then we go back and launch The Sims 3.

It launches EA Origin instead.

Why has this happened? Perhaps Origin serves as the new launcher? Okay, that’s fine – another crappy application sitting in the system tray, but we can at least live with this. Let’s just launch The Sims 3 through Origin.

What’s worse, EA Origin wants us to create a profile before it will let us do anything. This is obnoxious – yesterday, The Sims 3 would just launch and let us be happy. Plus, we already have a login on The Sims website, which is where you go to purchase downloadable content for the game. So this is Yet Another Login to Remember, and that’s annoying. With absolutely no warning, EA has added a ton of requirements that prevent us from playing a game that has worked fine on its own. Still, whatever. Let’s make this profile, get this over with.

Now we can just launch The Sims 3 from here, right?

Click. Click. Nothing happens.

Did we do something wrong? Is our profile not acceptable? Is EA just not that into us any more? We close origin, launch it again, try The Sims again. Still nothing. After a few more minutes of troubleshooting, we give it the old Windows solution – we reboot the machine.

When we get back to Windows and launch The Sims again, it launches perfectly, without seeming to care about EA Origin. It’s like nothing ever happened, and everything works just fine. The old Download Manager interface is even still there, and allows us to update the system. Apparently it just wanted Origin for authentication, or something?

But even though this story has a happy ending, there are still troubling implications here. EA did a very poor job of informing the user about what was happening here, leaving us to guess and google and hope that things would end up working. This was a very stress-inducing experience, which is not what you want when you sit down to play a game.

Also, the fact that they retroactively tied a single-player game into an online distribution platform seems both unnecessary and potentially problematic. When we bought the game, we did not do so with the understanding that an Internet connection was necessary for authentication or activation, for instance. We didn’t agree to have the game tied in to an account that may prevent us from updating if it is ever suspended or deleted for some reason (and these things happen; no system is free of errors). While we don’t have any reason to suspect that the game would become *unplayable* in the absence of Origin, this is still troubling.

In a post like this, I would, at this point, customarily make a plea to the company in question to be better, to stop disappointing its users, to be more transparent and try to foster trust. But I’m not going to bother. Because EA has proven themselves time and again to be unwilling to hear those pleas. Instead, I’m going to close with a question.

EA, what happened to you?

Comments (1)

Doctor Who: The Girl Who Waited

As always, Spoiler Warning.

I didn’t have high hopes for this episode. From the previews, I got the impression that the story was going to go something like this: Amy gets trapped in an accelerated time stream. The Boys™ repeatedly try (and fail) to save her, while she repeatedly grows older, until finally they use techno-magic to undo the ageing and fly off into the Time Vortex toward their next adventure. In the middle, we would get some action sequences and some Rory-and-Amy-love-each-other-so-much-and-isn’t-that-just-so-fucking-sweet sequences.

And I felt justified in this impression. After all, Tom MacRae’s previous effort for Doctor Who was The Rise of the Age of Steel Cybermen, a disappointing romp to a parallel universe that re-introduced the Cybermen to New Who. This didn’t bode well for a story in which the central premise appeared to be ‘Amy needs to be rescued’.

But, look… Mr. MacRae, I’m sorry I doubted you. I’m sorry I judged you on Rise of the Cybermen. Because you most certainly can write a good episode of Doctor Who.

This episode is good. On a lot of levels. The dialogue is unrelentingly dark, tense, urgent; the only comedy we get is in the first act. After that it is a downright brutal story. Because MacRae took a story that looked like (and could have been) “Amy needs to be rescued” and he turned it into “Amy doesn’t get rescued”. The result is what feels, to me, like an attempt at a Feminist critique of the Damsel in Distress story. And it does a pretty good job.

So, Amy doesn’t get rescued. Instead, she spends 36 years stuck in a Tower, not being rescued. And this Tower has an endless supply of faceless robots that want to kill her. So she does the only thing that anyone who could survive for 36 years alone in a Tower of Death could do: she gets tough. She may still be trapped, but she saves herself.

And the Amy we get to see here gives us a lot to admire. She can fight, she can hack (I’m using that term very charitably here. After all, computers are bound to be a bit wibbly-wobbly in Doctor Who), build a sonic probe, and she seems to be a genuinely strong female character. The fact that she is filled with bitterness and hatred towards Rory and the Doctor comes across as a realistic consequence of spending three decades in isolation. The venom with which Karen Gillan utters the phrase ‘Raggedy Man’ really sells Amy’s hatred of the doctor, and her later conversation with him really illustrates her character:

And there he is, the voice of God. Survive, ’cause no one’s gonna come for you. You taught me that… Don’t you lecture me, Blue Box man flying through time and space on a whimsy. All I’ve got, all I’ve had for thirty-six years, is cold, hard reality.

Then we have Rory’s reactions. The narrative makes it clear that he is torn between the young and old Amys. The line “Leave her and take you?” is voiced with outright contempt, but shortly after that, he appears more sympathetic, and by the end of the episode is heartbroken at the prospect of leaving her behind.

But, crucially, he does leave her behind. And this brings us to the Feminist overtones that this episode takes on. A core message that you can extrapolate from this story is this: If you trust men, they will lie to you and betray you. Especially if there’s a younger, prettier option nearby. They may feel bad about doing it, they may have so many justifications they’ve sold themselves, but in the end, they betray you. The men here don’t just fail to save Amy, they actively refuse. And why? Why does Rory choose young Amy? Because an Amy with decades of resentment and anger is less compatible with him. Because it isn’t his Amy. The implication is clear: a woman’s personhood is worth less than a woman’s utility to her man.

Another thing to consider is why it is Rory’s choice in the first place. The Doctor emphasizes that Rory has the choice. He could choose his young, perky, conventionally pretty wife, or his old, disillusioned, angry, bitter wife. And the Amys have no agency in the decision. This is Rory’s choice, because it’s Rory’s wife we’re talking about. Despite all the talk of Amy Pond as a fierce, independent, and wilful character, here she is conveniently scripted out so that the men in her life can decide which version of her gets to be saved.

The thing is, the story manages to pull all of this off. Yes, this has strongly sexist underpinnings in a way that makes all the other Feminist complaints about Moffat’s Who seem to pale in comparison. But MacRae doesn’t shy away from them. Rory knows he’s being a selfish ass. Darvill delivers a superb performance here, and Amy’s final line in the episode (and the way we cut away from it abruptly) underlines it. We are not supposed to feel like Rory and the Doctor are the good guys here. This is a bold statement, and it is complex and morally ambiguous storytelling in a way we haven’t really seen in Doctor Who since Sylvester McCoy.

And speaking of Sylvester McCoy, well. This whole episode has a very strong Seventh Doctor underpinning, the same way The Rebel Flesh / The Almost People was a modern Second Doctor story. Matt Smith is playing a much darker, harder Doctor here. I was reminded of this line in the New Adventures novel Conundrum:

“But that’s the whole point, though, isn’t it?” said Ace. “To the Doctor, it did mean nothing. Just another of his games, another upset in the universe to be dealt with and then chucked.”

That quote summarizes the Seventh Doctor better than any description I could possibly muster. Notably, that isn’t the totality of the Doctor, but it is an accurate description of his practical relation to, and effect on, other people.

And here, Eleven acts in much the same way. Rory’s accusatory “You’re turning me into you” validates this reading; in the same novel, Ace explains that the reason she stays with the Doctor is that she’s gotten a taste for the same manipulative games the Doctor plays.

In this story, there is notably an entire scene that happens off-screen: when old Amy has the glasses, she has a conversation with the Doctor (in which she cries) that we are not privy to. I suspect this is the tie-in to the ongoing story arc for this episode: the Doctor tells old Amy something, and I suspect it is about the events prior to the tuxedo scene in Let’s Kill Hitler. Whatever it is, it makes her cry, and I have a suspicion that it is the thing that convinces her to accept death at the end of the episode.

Because that’s the one strange beat to this episode; old Amy eventually accepting her betrayal seems outright unlikely to me. So either that’s a weak character beat, or she has learned something about young Amy’s (potential) future that makes her change her mind. I’m hoping for the latter, because it will make this story feel that much stronger once the ongoing arc plays out. And there are no other ongoing arc references in this story, which was good after the heavy-handed, tacked-on reference at the end of the previous episode.

So, in the final analysis, I think this story is good on every level. The things I haven’t talked about – pacing, dialogue, camerawork – have only been omitted because they all functioned well for the story. There’s nothing there to criticize. There’s actually quite a bit to praise, especially regarding the cinematography and visual aesthetics in this episode, but this review is already feeling a bit hefty, so I’ll leave off here. See you next week!

Comments (4)

More thoughts on the Escapist

I’ve talked about the Escapist before. Specifically, when I mentioned I would no longer be visiting their website. My reasons then were essentially practical – they had simply made viewing content more annoying than it was worth.

Recent events, however, are making me re-evaluate that post. In that post, I didn’t really analyze why the Escapist had such awful ads. But now I think it’s worth doing. The most obvious explanation, which was more or less implicit in my earlier angry rant, is that the annoying, screen-filling, content-swamping ads didn’t show up because of incompetent programming or oversight, but rather through a complete disregard for the consumer.

The Escapist (well, Themis Media) is a company. Companies exist to make money. Basic economics. Themis media makes money by selling advertisements; the more advertisements they can get to viewers, the more their advertisements will be worth to advertisers, the more advertisements they can sell, and the more money they make. Again, nothing ground-breaking here, just basic mathematics.

There are two basic ways to get these ads to the eyes of more viewers (and thus up their potential value, increasing profits): show more or larger ads per page, or attract more viewers (to create more page views). As a company that wants to Maximize Profits™, ideally they want to do a whole lot of both of these things.

The problem is that these two goals are counter to each other. The more (or more obvious) ads you display, the more people will start to say ‘too many ads, see you later’. Like I did in my previous post on the subject. The trick, and the thing that most websites eventually figure out, is that there is an equilibrium – a quantity and size of advertisements that will not produce a significant hit on the number of viewers you attract.

Now, the way to actually attract more viewers is to have content that people want to view. And the Escapist has been damn good at this. They have a great deal of very good content, much of which is very popular. They have attracted a lot of grade A talent to work for them. And that may be the problem – they’ve got such good content, their equilibrium point has tipped so far that they can pull off obnoxious full-screen ads without driving away a significant number of users.

However, at some point, the volume of ads you display becomes anti-consumer. There’s a point where you are failing your customers, where suggesting that what you are asking is a ‘reasonable price to pay’ for the content is farcical. Many modern magazines have fallen prey to this: I flipped through a fashion magazine recently, for instance, and counted 12 pages of ads before reaching the table of contents. That’s patently absurd, and what it shows is that the company that produces the product cares more about money than they do about the consumer’s experience.

But all of that was an overly long prelude to what I really want to talk about: Themis is now being accused of being anti-creator as well. Extra Credits, one of the Escapist’s video features, has left the Escapist, with some very troubling accusations about Themis’ payment practices. Basically, the Extra Credits crew says they haven’t been paid for a long time, and that Themis is claiming that Extra Credits owes *them* money from a fund raiser that they ran to keep the show alive (and to finance surgery for their artist).

Now, in fairness, Themis has some counter-claims, which are enumerated at the second link above. However, given Themis’ anti-consumer ad practices, I don’t have much difficulty believing that they might be willing to cheat their creative people as well. Of course, this doesn’t constitute proof of wrongdoing on their part, but it is certainly useful to observe that they already have a pattern of preferring money to delivering a good experience.

Of course, the upshot of all this, for us consumers, is that Extra Credits is no longer encumbered by the horrible pit of a website that is The Escapist. So I watched the most recent episode. Based on this one episode, it seems like a pretty good show: smart and engaging, with enough humour scattered throughout to keep it from feeling dry. They point out a lot of things that may be obvious to (some) people in the industry, but that many individual gamers are unlikely to have ever had reason to consider.

I’ll probably watch it regularly now that I don’t have to risk a stress headache just to watch it.

Leave a Comment

Doctor Who: Night Terrors

As usual with these posts, Spoiler Warning.

Oh, Mark Gatiss, you’ve done it again. You got my hopes up, and then dashed them against the rocky shore of poor plotting.

Let’s start with a recap of Gatiss’ contributions to (televised) Doctor Who: The Unquiet Dead, The Idiot’s Lantern, Victory of the Daleks, and now Night Terrors. So, out of his previous contributions we have one very, very good (and fairly creepy) episode, one that is, for my money, an absolute dud, and one that is a fairly clever idea with a weak execution. Although, to be fair, a Dalek asking “WOULD YOU CARE FOR SOME TEA?” might be one of the greatest single moments in Doctor Who history, and if Victory of the Daleks was conceived around that image, then I forgive it for everything else.

Looking at his track record, I get the impression that Gatiss is at his best when he tries to write creepy stories. The problem is that, with Night Terrors, he is trying to write a creepy story. But try as it might, this story absolutely fails to be creepy. The wooden dolls just aren’t compellingly scary, and the dollhouse doesn’t have the atmosphere of ‘creepy haunted house’ that it needs to make them so. The only time the dolls are ever creepy is the first time we see one – that is, when it is inanimate and standing alone in a closet. The monster is less scary when we can look it in the face, and the longer we hear creepy noises and get suggestions of scary things, the more suspense and tension is built. Here, though, Gatiss fails to build suspense for the monster, so its reveal feels about as frightening as the Slitheen in Aliens of London. Even the build-up to the Silurian reveal in The Hungry Earth was creepier than this episode.

With scary out the window, let’s look at the rest of the episode. This is the first episode since The Doctor’s Wife that isn’t heavily invested in the story arc (even if we didn’t know how tied to the story The Rebel Flesh / The Almost People was, in retrospect we have to count them as fundamentally ‘part of the ongoing arc’ episodes), so I had high hopes for a nice, self-contained, Doctor-to-the-rescue story.

And the opening let me keep hoping. Gatiss writes the Doctor brilliantly. The sequence in which the Doctor and company wander about the tenement has some fantastic dialogue. And every scene with the Doctor interacting with George and Alex is brilliant as well.

But these scenes are interspersed with the dollhouse. And the way the dollhouse is used destroys the pacing and tension of the episode. At the end of the episode, it felt like not very much had happened, and what had happened was inconsequential. The big runaround gets resolved, essentially, by actors coming on stage at the last minute. It’s trying to be a clever twist, but it ends up being an anticlimax.

And the story arc tie-in at the end felt a bit weak, too. I mean, we get some creepy child-like singing that is, presumably, supposed to evoke the monsters that were just defeated. But even if we set aside the fact that they are, y’know, defeated, they have absolutely no apparent reason to know or care about the Doctor’s death. They’re figments of an alien child’s imagination. It felt like that was added just for the sake of having some reminder of the overall story arc. Whether that was added by Moffat or Gatiss, it is a weak bit of storytelling.

One thing it does do is tell us that the storyline surrounding the Doctor’s death will probably be dealt with in series 6, and not carried over to series 7. At least, assuming Moffat is following the contemporary format of series-spanning story arcs; dropping repeated hints about the same plot element almost always means that element will be dealt with in the series finale. Unless, of course, the series finale ends on a cliffhanger. But Doctor Who is uniquely ill-suited to the Dallas-style inter-series cliffhanger, because the Christmas Specials interrupt the dramatic tension period.

There is one other thing I do want to praise about the episode, though: George has a dollhouse, and no one thinks this is odd, or makes disparaging remarks about it. That struck me as a nice nod to gender-neutral parenting.

Next week, we have The Girl Who Waited, which I will admit now I’m not looking forward to, given that the plot appears to be ‘Amy is captured and’. After A Good Man Goes To War, I had really hoped we would be able to stop putting the girl in the fridge quite so often. But it looks like the writers still can’t seem to work that out of their system, so here we go again…

Leave a Comment

Doctor Who: Let’s Kill Hitler

We interrupt our month-long, unannounced, unplanned hiatus to bring you: another post on Doctor Who. That’s right! Because Doctor Who can motivate me to write when nothing else can. So, here we go!

Oh, and Spoiler Warning!. I’ll be discussing the details of Let’s Kill Hitler in this post, as well as speculating on the next plot reveals / bits of continuity that have only been hinted at / etc. So, if you haven’t seen Let’s Kill Hitler and you hate spoilers, or if you prefer to speculate without letting other people’s ideas influence you, then don’t read this post. Otherwise, read on! It’s sure to be fun…

Review

I’ll lead with the most obvious point: this episode was good. Really good. But that’s just what I’ve come to expect from Moffat, so let’s talk about what makes this episode really shine: Moffat repeatedly uses juxtaposition and playing with the audience’s expectations in order to heighten the emotional impact of the story.

There is some really impressive cinematography here. My favourite is that the recap is actively used to set the tone. We start the episode with a pretty intense recap, and then drop into the first shot: a dramatic, colourful, and completely still row of wheat. It flips from reminding you how exciting the show can be to giving you an image that, while visually striking, is also very sedate. It’s effective – it gives the viewer an adrenaline rush, then asks them to reconcile that with wheat. It makes the wheat somehow exciting, all on its own. It takes the image from striking and cranks it up to breathtaking. But we can’t get away from that for long, so we switch to high-speed crop circle off-roading, so the excitement stays in place.

Another trick Moffat uses is turning the episode into a completely different story halfway through. They build this framework: a fun-loving early River incarnation wants to take the TARDIS on a past-wrecking joy ride. Even if you spot that Mels is River, it looks like the rest of the episode is going to involve the Doctor dealing with Mels, and the robot filled with tiny people, and trying not to change the past too much. Instead, the show turns into River Song (the one we know and love) actively trying to kill the Doctor. And succeeding. What starts out feeling like a fun-filled romp of an episode becomes very heavy, and dramatic, and suspenseful. It’s brilliant, and the emotions are, again, heightened by using the audience’s expectations against them.

One more interesting technique: Mels’ introduction. Here we have a new character that Amy and Rory have known all their lives, tossed into the story mid-stream. This is a very interesting sudden interjection, and it feels jarring. As a bit of backstory, it is perfectly reasonable; after all, there are plenty of good friends in my past that don’t really come up in conversation, and I imagine this would be more true if my conversations tended to revolve around temporal paradoxes and saving the world from Daleks. But still, from the viewer’s perspective this seems to come out of nowhere, and I suspect that’s intentional; it has the effect of unbalancing the viewer, giving you a vague sense that something is just slightly out of place, which pays off when Mels is revealed to be Melody.

Reveals / Plot Analysis

So, let’s talk about the reveals, and what they could mean in terms of the ongoing story. First, the Timehead (i.e., the little girl in the spacesuit) is River Song. That’s pretty clearly established at this point: Mels stated that her previous regeneration had been in an alleyway in New York, and had involved becoming a toddler. This lets us establish a loose chronology of events for the life of River Song, which I’ll elaborate on in a bit.

Another thing is the sudden introduction of Mels – as I mentioned above, this seems to be a narrative technique to off-balance us as viewers. However, it could also (simultaneously) be a hint that someone is Meddling with Time*.

On the subject of The Eventual Untimely Death of Rory Williams, this episode gives us another misdirection, “I’m looking for a good man”. I still think that Rory is doomed, however, and my newest bit of evidence is from outside the show itself: the title of the series finale has been announced, and it is “The Wedding of River Song”. Recall that in Flesh and Stone, River said that she killed “A good man, the best man I’ve ever known”. If Rory ends up being best man at River’s wedding (after all, Rory isn’t just her father, he’s also a dear friend she’s known for years. They grew up together!), well, wouldn’t that be interesting?**

Also, we have some very interesting unanswered questions at this point, both new and old. A few that occur to me, and some possible thoughts on them:

  • The most obvious one: What is the question (that will cause silence to fall)? The first thing that popped into my head here was The Question, i.e. “Will you Marry Me?” (or, alternately, “Do you take this man…”). Just like the above theory, it’s a little far-fetched, perhaps. But it would fit interestingly with the wedding theme we’ve had throughout Moffat’s run. I mean, he used “Something old, Something new” as a crucial plot element, so I think it’s a fair possibility here.
  • What is the relationship between the Silence (that is, the creepy faceless aliens) and Kovarian’s alliance? They seem to be working toward the same goal, and it’s easy to assume the Silence (the organization as opposed to the species, unless they are more tightly coupled than we know, a la the Headless Monks) are manipulating Kovarian, but does she know that? Is she working with them intentionally?
  • Why did the Silence kidnap FleshAmy in Day of the Moon? I would have plenty of good theories if it had been the real Amy, but they presumably knew that the Amy they kidnapped was flesh, so why do it? What did they stand to gain from that?
  • Who was in the spacesuit on the beach? It seems less and less sensible that it should be River. Everyone believes the Doctor dies on that beach. It’s even a fixed point in time according to the tiny men inside the time-travelling robot. However, Mels clearly thinks she still needs to kill the Doctor – surely she would remember doing it on the beach, and assume his death was inevitable, right? So why does she try to kill him in Let’s Kill Hitler? Is that an adult River, her kill-the-Doctor programming becoming impossible to resist? Or is it someone else entirely?
  • How long does it take Alex Kingston to get her hair looking that fantastic? I’m cursed with the unmanageable nightmare that is curly hair, and I really wish I could make it look half that good.

Timeline of a Timehead

There’s decent evidence that River only regenerates twice, i.e. has three incarnations. The evidence is as follows: We can surmise that the little girl in the spacesuit is Melody (the first body of River Song), because, well, she seems really childish. She is clearly very scared and confused; she doesn’t seem to be any older than she actually appears here. I’m taking this as evidence that this is her first incarnation. We know that incarnation turns into Mels, because of the line “last time I did this, I ended up a toddler in the middle of New York”. And, well, in Let’s Kill Hitler she regenerates into the River we know and love, and we know that is her last incarnation, because we’ve seen her die.

So, with that evidence in hand, here’s an outline of the Timehead’s life in chronological order. There may easily be gaps where all sorts of interesting and story-relevant things happen in between many of these points, and some of the ordering and events are admittedly speculative:

  1. Melody Pond is born on Demon’s Run.
  2. Madame Kovarian secrets Melody away to an unknown location.
  3. Melody comes to live in Graystark Hall Orphanage, which is infested with Silence.
  4. Melody is put into a spacesuit in which she may or may not kill the Doctor. She definitely has the encounter in the warehouse though.
  5. Melody sneaks away from the orphanage, going to New York (somehow) at this point.
  6. Melody regenerates into Mels, possibly as the result of a bullet wound inflicted by Amy.
  7. Mels comes to live near Amy and Rory, grows up with them, gets into lots trouble, and is obsessed with the Doctor.
  8. Mels meets the Doctor, and the events of Let’s Kill Hitler occur. She regenerates into River, and gives the Doctor the rest of her life essence.
  9. River becomes a doctor of archaeology.
  10. River and the Doctor get married.
  11. River Song kills her father, Rory Williams.
  12. River is imprisoned at the Stormcage Containment Facility.
  13. At the end of the battle of Demon’s Run, River shows up and reveals her identity to the Doctor, Rory, and Amy.
  14. The Impossible Astronaut / Day of the Moon.
  15. The Pandorica Opens / The Big Bang.
  16. The Time of Angels / Flesh and Stone.
  17. The Doctor takes River to the Singing Towers of of Darillium, gives her the sonic screwdriver.
  18. River Song dies on the library planet.

If anyone sees any obvious, provable errors, please let me know, and I’ll edit the post!

* note that I am not claiming The Monk is involved in this story arc. It simply amused me to link to that story when using that phrase.

** This theory is somewhat tongue-in-cheek; as evidence goes, I realize it’s pretty weak. But that quote came back to me when I read the title of the final episode, and I couldn’t help but speculate.

Comments (2)

Project TreeWars: How Anna got her Title Screen back

In my last post, I re-implemented all of my rendering code to take advantage of Shaders. After doing this, nothing rendered. Despite the fact that I was following a tutorial, more or less. I have been modifying it to fit my project, which has a lot of code around the rendering code already and is in C++ instead of C, and also modifying it to do something that will actually be useful for me down the line.

But, at any rate, I’ve checked every function call I make against the ones used in the tutorial. They all match. Everything is exactly the sa…

Oh. Wait.

One of the things you create when using shaders is an index buffer (also called an element buffer); a list of what order the vertices of your polygon should be drawn in. From the tutorial:

static const GLushort g_element_buffer_data[] = { 0, 1, 2, 3 };

And the equivalent line from my code:

GLfloat Renderer::rect_elements[] = {0, 1, 2, 3};

I got so used to things being GLfloat type that I made my index buffer floats, even though that doesn’t make any sense (you can’t have vertex number 0.5, after all). Not only does it not make sense, OpenGL requires that the element buffer be composed of integers. Even better, if your element buffer is of the wrong type, OpenGL fails silently: no error message, no crash. The rendering simply doesn’t happen.

So, a couple hours of debugging, down to one simple line of code. I really wish GLSL had a way to report meaningful errors back to the program using it. At any rate, after I fix the line:

I’m back to where I was several days ago. But this time, I’m using shaders, which are both less deprecated and more flexible; I’ve set up a framework that will allow me to do more interesting things later on.

Now, on to the next challenge: rendering text. In SDL this was fairly easy; the SDL_ttf library made it pretty simple to render text to the screen. In OpenGL, however, rendering text is a bit trickier. There are a few libraries out there that do it (FTGL seemingly the best option), but they all use the fixed-pipeline functions. I’d even be willing to settle for that, and worry about ripping the code out later and putting in something more shader-friendly, except switching back and forth between Shaders and the fixed pipeline seems to be a bit tricky.

So, my options are:

  1. Figure out how to switch ‘out’ of the Shading pipeline properly and render text with FTGL, or
  2. Use freetype2 directly and implement my own font loading, render the text to a Framebuffer Object, then blit that to the backbuffer (the buffer that represents the next visual frame).

The first option might be easier in the short term, but the latter sounds more robust, all things considered. The problem is that stopping to get font rendering working without any deprecated functions could take quite a while (I’m not even sure on a good estimate for the time). So, I hack FTGL into working and move on.

Now, I’m ready to get things back to the way they looked before I decided GLSL was something that needed to happen. I just need to figure out the best way to draw a circle with GLSL…

Comments (3)

Puzzle Log: Dante Shepherd’s twitter puzzle

Puzzling – that is, solving puzzles recreationally – is a hobby of mine. I enjoy it immensely, although I enjoy some puzzles much more than others. I enjoy the sorts of puzzles that involve both intuitive leaps and a combination of generalized and specialized knowledge. The sorts of puzzles that happen at the MIT Mystery Hunt are probably the best examples of puzzles I really enjoy (and, indeed, I had a lot of fun at my first Puzzle Hunt this year).

So, in the tradition of Solving Really Hard Puzzles, I’ve decided to post logs of some of my puzzling efforts here. These may only be of interest to a very few people; feel free to ignore them if this is not up your alley.

Today’s puzzle is one that Dante Shepherd posted on twitter in this tweet. Puzzles that are simply an encoded string of characters always intrigue me, so I dived right in. It took me about half an hour to solve, and it was a lot of fun. I created a log of the process by simply periodically noting the time and writing down my thoughts, especially when I got somewhere new, such as the aha moment at 15:00. In the future, I may look for (or create) some software that will make logging a bit easier.

Also, here is the original puzzle, for the link-averse:

L 45, R 270 L 225, R 270 L 225, R 180, L 90, R 270 L 225, R 270 L 90, R 225 L 90, R 270 L 225, R 225 L 135.

Spoiler Warning: if you want to solve this puzzle yourself, don’t read my log. It contains spoilers for the intuitive leaps as well as the solution.

14:45
Okay, puzzle is gridded. What do we have here? These are obviously rotations; L and R for ‘left’ and ‘right’, and the numbers are all < 360.

14:50
Oh, they’re all multiples of 45 degrees. So, they’re all nice, even angles, and they are paired off.

15:00
Aha! It’s Semaphore. For the two that are missing part of the pair, I’m assuming the angle is 0. Let me just look up a semaphore chart…

15:01
Oh crap. Is 0 at the top or bottom? Is L the sender’s left or the receiver’s left? Now I have to work out the coordinate system Dante used. At least we know that the low numbers map to the L side, and the high numbers map to the R side.

15:10
Tried 3 coordinate systems – 0 at top with L == left arm, 0 at top with L == viewer’s left, and 0 == right, coordinates going counter-clockwise (trig coordinates). All that’s left for reasonable systems is 0 on the bottom.

15:13
And solved. The solution is GOODFORYOU. It was the last coordinate system I tried, of course – moved 0 to the bottom, but got L and R backwards the first try.

Leave a Comment

Project TreeWars: When is an OpenGL not an OpenGL?

So, I was playing around with the ‘sparks’ feature on Google+. Since I’ve been working with OpenGL lately, I made a spark for it. On that spark, I came across this thread, which gave me this advice:

A general rule of thumb is that if a tutorial contains calls to glBegin, glEnd and/or any of the glTexEnv functions then it’s old and you should avoid it.

Now, I wouldn’t generally trust a single person on the Internet with nothing to recommend them, but I’m seeing this advice repeated in several places now that I know to look.

So, all the tutorials I’ve been working with are for very, very old versions of the OpenGL spec, and the functions I’m calling are pretty deprecated; I’ve been learning obsolete tools. To that end, I recommend anyone following this series not use my last post as a jumping-off point for working with OpenGL, or at least know what you’re getting into. Those functions and methods still work, but they’ve been deprecated and eventually graphics cards will probably stop shipping with support for them.

Instead, I found some more modern tutorials and documentation. Luckily, I’m not terribly invested in the way I’m doing things yet; I have maybe 100 lines of OpenGL-related code in my project, and the vast majority of it (that is, all the stuff that isn’t needed for initialization and gamestate changes) is factored into a single file. It should be pretty straightforward to replace it with something better, once I’ve got a handle on the “new way” of doing things.

This exposes a deeper issue, too. There are several different versions of OpenGL: best denoted by their major version numbers (1-4). The most current iterations of each are OpenGL 1.5, 2.1, 3.3, and 4.0. There seem to be tutorials available for all of them. Now, there’s a tradeoff to using one version of OpenGL over the other; newer versions will have less support from other libraries (Linux doesn’t even seem to have OpenGL 3 headers yet). On the other hand, older versions will eventually be deprecated and phased out. Newer versions can also do things older versions couldn’t, although right now I’d be happy just learning the basics.

So, after looking around on the web for a while, I settled on learning OpenGL 2.1 (and the corresponding GLSL 1.2, which we’ll talk about in a moment), while avoiding all of the functions in OpenGL 2 that are deprecated in OpenGL 3. This is the approach that Joe takes in this tutorial series, so what I’m learning will line up well with at least one tutorial on the web. It is also nice because this version is well supported in Linux, while OpenGL 3 support (especially in SDL) is still under development.

Now, there is a huge change between OpenGL 1 and 2. A change so massive that the difference between 1 and 2 dwarfs the differences between 2 and later versions. This change is the move from having a “fixed-function graphics pipeline” to using GLSL, the OpenGL Shader Language. So, what does this mean? Well, in OpenGL 1.5, you tell the graphics card what you want to draw, and some parameters about how you want to draw it, but the details of that process – the functions on the graphics card that handles doing the actual drawing – are hard-coded and unchangeable. With shaders, you get to program those functions yourself, and then your application can send them to the graphics card, compile them, and use them. GLSL is the language the shaders are written in – it looks a lot like C, but it has neat built-in functions for matrix and vector math, and a ton of built-in variables that I haven’t quite worked out yet.

So, I rewrote my rendering engine to use shaders. I followed the tutorial closely, modifying it to fit into my object-oriented C++ code and to fit all the other code I had already painstakingly written. I refactored large sections of my program. This took several hours, during which I couldn’t even compile the program all at once, because so many changes were being made. When I finally got it to compile and run without immediately crashing, this is what I had produced:

I appear to be doing it wrong, as they say around these parts. I have simplified my program so that all it should be doing is displaying a single texture on a simple rectangle. I have no idea what’s wrong here. Is my coordinate system somehow incompatible with my shaders? I don’t think so – I reworked the coordinates to match the tutorial I’ve been using. Are my shaders for drawing a texture simply wrong? Maybe, but there’s not a great way that I can find to get debugging info out of the shaders. Is SDL 1.2 not compatible with GLSL? That’s a decent possibility; testing it will take some time, though.

This is the biggest setback I’ve encountered so far, though, so that’s a pretty good sign. Hopefully, by my next post, we’ll have something better than a black screen to work with.

Leave a Comment

Project TreeWars: the road to OpenGL

Over on Shamus Young’s blog, he recently said this when talking about a programming project of his:

One of the things I like about this project is that it is uncluttered by goofy, awkwardly-designed libraries.

Shamus is working on a procedurally-generated 3D world using OpenGL. Now, I know what he means. He is trying to avoid relying on things like graphics and physics engines, or 3D model importers, or any of a number of other tools that often have asinine and byzantine APIs. I am, in fact, trying to do the same thing in my project (in my case, it is because I am using this project to learn graphics programming).

However, I have to object. libgl is a goofy, awkwardly-designed library. Of course, the fact that it that is has to be, in order to do what it does. However, code like this:

glBegin(GL_QUADS);
glColor3f(r1, g1, b1);
glVertex2i(x1, y1);
glColor3f(r_mid, g_mid, b_mid);
glVertex2i(x2, x1);
glColor3f(r2, g2, b2);
glVertex2i(x2, y2);
glColor3f(r_mid, g_mid, b_mid);
glVertex2i(x1, y2);
glEnd();

is pretty goofy. Anyone with experience writing GUI code using a Windowing toolkit would be appalled to learn that this is how you draw a rectangle. A more reasonable API would let you get a ‘rectangle’ object, then define things like its x/y position, its width and height, colour, etc. Then, you might make a call like:

window->add(rectangle);
window->update(); // to draw the window

But in OpenGL, we have to tell OpenGL that we want to start drawing a polygon, then tell it the colour and position of each vertex on the polygon, and then tell it when we’re done, all with different function calls. And gods help you if you get them out of order:

What happened here? I told OpenGL to draw a rectangle, and I gave it the top-left vertex first, then the top-right, then the bottom-left, then the bottom-right. This is a pretty obvious way to think about listing the points on a rectangle, right?

Except that OpenGL is designed to actually create the polygon’s bounding box based on the order you list the vertices, like so:

So, OpenGL did exactly what I told it to do; we just weren’t speaking exactly the same language. OpenGL requires that I list the vertices in clockwise (or counter-clockwise) order around the edge of the polygon.

OpenGL is an iceberg, though, and this is just the tip. There are Display Lists, Vertex Buffer Objects, shaders, 3D objects, normal vectors, projection matrices – it is a very complex beast, and all of that complexity is exposed directly to the user. So why does Shamus knock on all those other libraries, but give OpenGL a pass?

The answer is that OpenGL *has* to be this complicated. The reason? OpenGL lives on the graphics card. This is something that it is easy to miss the ramifications of, but they’re huge – the OpenGL function calls are talking directly to analogous function calls hard-coded in a chip on a piece of hardware. When you call glVertex2i(), you put data about a vertex directly into your video card’s memory. OpenGL is fast; it’s what lets us have advanced graphical environments that change and that we can interact with, rendering in realtime. So, subsequently, OpenGL’s end-user libraries are complicated; they have to be to let you take full advantage of what OpenGL is designed to do.

That doesn’t make it any less goofy, though.

Comments (1)

« Newer Posts · Older Posts »
Follow

Get every new post delivered to your Inbox.

Join 136 other followers