After picking myself up after being levelled by a nasty cold, I’ve gotten a bunch done. This fortnight has a bit for everyone: coding, backstory and writing.
I was surprised at how devastating the cold was. I was hoping for the sniffles for a few days, so I could have cups of tea, play some of my Steam backlog and get some coding in. Nope, 16 hours a day of sleeping, only to wake up to cough up a lung, eat medicine and have a cuppa, before collapsing again. On the last day of my doctor’s certificate I finally got down to working on The Day After. I completed the core engine work I’ve mentioned recently. If I haven’t explained it clearly, here’s the dealio.
I divide the game into two parts: the engine and the game. The engine talks with libraries and does all the boring stuff like graphics, input and shuffling data around. The game has all the game-specific stuff – mechanics and the world model. The engine is broken up into components, each responsible for a different bit. The GraphicsManager manages the graphics, for example. This entails things like preparing the screen, drawing the screen, talking to OpenGL and DirectX, and stuff like that. The GUIManager deals with input and basic output. Clicking on a button sends the appropriate signals around the game and makes things light up.
Because of the way things work, these components have dependencies. The GUIManager needs to set itself up relative to the GraphicsManager, because it’ll be bossing the GraphicsManager around a lot. Throughout the engine there’s all these dependencies, both in setup and who is in control of certain things. The GraphicsManager, for example, mostly controls the game loop (what happens at every tick) because it needs to refresh the screen, which means drawing animations, making things highlight and so on.
I had a bunch of this set up, but it was all very squishy. If I wanted the game to run just in text mode (like for a dedicated server), it couldn’t. In the end, I ripped out some of the guts of the engine and replaced them with better ones. It’s simpler, more versatile and more powerful. Partway through my editing I decided the best way to model dependencies was via a tree. You’d make this structure and maths would tell you what to start in what order. The idea of that was fine, but I was using boost::graph, which is a fine but very, very, very frustrating library. I bashed my stuffy head against a wall trying to figure out why simple examples weren’t compiling.
Turns out it was because of compiler issues deep in the library, so I updated boost. Luckily that was trouble-free. Eventually I got things compiling, but boost::graph was still being a jerk. So I just did a justified hack – I didn’t need all the flexibility of a general graph. I already knew what depended on what, so I could just make the canonical lineup and turn off components if I didn’t need them. Simplicity, always simplicity.
So that all works now and came out nicer than I thought. We creep ever closer to me having an actual GUI.
On the side I tried out Unity3D in earnest. Guys, I might have been wrong about it. It’s pretty neat to throw stuff together. C# isn’t too different from C++. The promise of writing a bit of code and having it cross-compile to PC, Linux, Mac, iOS and Android is tempting, but the truth is a little further from the truth (you need to do a bunch of work and pay a bunch of money). But I got some simple code working. The GUI coding didn’t excite me – it was mostly for fixed, adhoc interfaces and the documentation left a little to be desired. Nevertheless I’m keeping an eye on Unity3D and might use it to bang out some simple games or apps. If I’m sick of wrestling with C++ I’ll keep trying to implement various things in Unity3d. If I overtake my C++ development, then I guess I’ll be doing it in Unity
The Truth is a game mechanic in The Day After that interests me greatly. So the one-line description of The Day After is that it is about a city going psychopathic for some unknown reason, and you have to escape it. Clearly the question is: “Why did everyone freak out?”
Every game The Truth is chosen from a bunch of reasons. They are all tied together with main threads, or accentuate the theme differently. The mechanism for people going psychopathic is always the same, but the cause of that mechanism is up for grabs.
I managed to make it out to hot chocolates with my good doctor friend and her also-doctor friend. I’ve tasked them both with homework to explore a plausible mechanism for the psychopathy. Currently at the base of it is a malfunction in your Fight-or-Flight judgments. Chemical imbalance basically jacks you up with noradrenaline, and then hits you with mild hallucinogens or deliriants, tipping the balance to Fight. People believe in their worst nightmares and try to fight their way out of it. Or maybe they freak out and flee everything. Especially since some parts of the population are out actually to get them.
This pseudo-scientific construction has a bunch of issues. Firstly the hypothalamus actually controls Fight, Flight, Freeze or… erm “frolick“. Moreover you choose to fight or take flight, and it’s hard to have the decision forced upon you chemically. Long-term adrenaline highs can put people into comas. I have an adrenaline-junkie friend who after jumping from a plane was unable to communicate because of his danger-high. I’ve thought about whether the game could have an accelerated circadian-style rhythm: the population explodes into fight and flight responses (i.e. utter chaos), but after a while everyone affected just crashes for a micro-coma, eventually bursting to life again and repeating the cycle. It lends itself to an interesting gameplay variable – it’s quiet now, so do you take riskier moves, hoping the population doesn’t come back online at the wrong time?
In short, I’ve got my best doctors working on this problem instead of their med school homework, which is cool.
ConnectionsOne of the important reasons for The Truth isn’t so much for backstory or exposition dumps, but to tie the main characters together. The Spy knows a bunch of corroborating intelligence about The Truth. She’s the best equipped to find out what’s gone on, but she’s also the most duty-bound to keep it a secret. On the other side of the coin is The Hacker. He desperately wants to know and tell everyone, regardless of the effects. Both are morally right and wrong. If, say, the disaster is due to a biological agent attack by a foreign power, the world needs to know, but also know how it was done and thus potentially put even more people in danger. What about if it’s aliens? Or terrorists? Or junk food? Both The Spy and The Hacker wrestle with this moral dilemma and in having to work together, will necessarily clash. Will they be able to convince the rest of the team to work with them and against the other? I also love that their clash is Cold War espionage versus the recent cryptoanarchism, old versus new, organization versus disorganization.
On a personal level The Scientist is inevitably written into The Truth. I refuse to use the old trope of a scientist working on a weapon of mass destruction and only having a crisis of conscience near the end. The Scientist is an intelligent gal and not blind to the world. I think giving her take on this some texture and shape makes for a more interesting story. If I can make her into a likeable character with interesting ethical challenges, that’d be great. Writing nuanced, admirable characters is both more interesting and more enriching for everyone. Way better than a pretty face and boobs that drops science buzzwords due to contractual obligation.I’ve been listening to interviews by the screenwriter legend Robert McKee. He’s very old school and honest, which is neat. He makes a division between prose, theatre and movies based on what they can do. Novels are great at inner struggle – a protagonist working through an idea in their head. Theatre is great at interpersonal connections. Movies excel at struggles of people versus others or their environment (which often leads to spectacle, the great strength and downfall of movies).
I don’t think McKee is well-versed enough to say anything about computer games, so I’ve been thinking about that, especially in respects to The Day After. Games are great at spectacle and protagonist-versus-environment, but can do it in an interactive way. They are somewhat able to tackle interpersonal connections, both in the real-world sense (multiplayer) and in-game (see Bioware games and Portal 2). They do especially poorly with what novels excel at, which is probably why exposition-heavy games and overly pretentious art games often fall flat.
The Day After honestly doesn’t have much to say about big ideas. As I mentioned previously, my Psychopaths and other story elements allow me to consider the Internet age as a theme. But the point of The Day After is the interpersonal relationships and stories. The conflicts, the camaraderie, and the anger, loss and sadness of a world gone askew. I spend a lot of time bouncing my characters off one another, seeing what I can do with them. I hope that the game itself can support this sort of art otherwise I might be better off writing a screenplay or novel.
I guess the only way I can find out is by continuing full steam ahead!
The Short and Sweet
Recently completed tasks:
- Reworked the Manager interface in the engine, leading to a cleaner setup.
- Nuked my unit tests because too much has changed.
- Talked to doctors about the biological mechanism for the disaster
- Learnt how to use Unity3d.
I’m working on:
- The GUI. Nothing but the GUI.
By the way, if you have any questions about the game, or want me to talk about a particular part of it some more, let me know.