The Day After Dev Report #10 – The Cart

The last while I’ve been pretty focussed. Horse cart wheel “Singularly focussed” is a little overstating it, but I’ve been spending a lot of time in the engine, fixing things and really concentrating on the GUI. I got it into a pretty good state. But I found myself preparing a horse and cart, spending my spare hours greasing the cart wheels and checking all the spokes. When I turned around to get it going, I found I had no horse!

Coding

When you’re dealing with a really big project, you can’t keep it in your head all at once. You find yourself relying on documentation from yourself in the past, or believing that you wrote a thing, except you just thought you did or thought real hard about doing it that one time.

My current work has been tracing a line from program launch up to this bit in my GUI code. So everything that happens from when you click the executable until the end of the first splashscreen. Turns out I didn’t have anything in main()! I quickly wrote that stuff in. It’s code that’s close to the metal so you have to worry about if you’re Windows, Unix or OSX. Luckily that’s all sorted.

The program was compiling just fine but died at launch for no reason. I’ll spare you the boring details, but my personal dev journal read: “Negotiated DLL Hell.” I was very close to replacing my build environment and other drastic measures to fix this problem. I found that instead of compiling for debug, I needed to be compiling for multi-threaded debug which was a quick fix. I imagine many eyes are glazing over now, so let’s bring it back to real world things.

All my funky code acrobatics for the last month or so seem to work! Various subsystems connect and work together. I didn’t get to test (and thus show off) the GUI, but I went from a horseless cart, to a cart with a dead horse, and now to a cart with a horse that looks okay and optimistically only lacking a few carrots.

I keep promising myself that after the basic GUI is in, I get to work solely on gameplay code. This will be fun, but it isn’t the whole truth. I’ll still need to do engine work to get gameplay things onto the screen, but I’ll have a foundation.

Soon. 🙂

Writing

I’ve been dreaming about the game lately. I’ll either brainstorm scenes, or I find myself pitching the game to some guy in a suit. Not sure what that means, but at least The Day After is sticky in my mind, even with all the allure of Spelunky, Saints Row 4 and GTA V.

I listened to a fascinating Radiolab show entitled Blame. Not to spoil the fantastic stories, but it explores blame, and the neural mechanisms around it. There’s a neuroscientist, David Eagleman, on there who is a dyed-in-the-wool materialist, which is a fine position for a neuroscientist to have. It was interesting to hear the science come up against moral and legal dilemmas, and his interpretations of it all. The Scientist has this conflict, so I took several notes for her story and things to think about.

To be honest, I found Eagleman a bit dogmatic (and I have issues with the science) so I won’t be transporting his opinions into The Scientist, but he’s a good gateway into the crucial points. The Doctor is a rabid Radiolab fan, so maybe he might take up Eagleman’s torch. And of course, with the entirety of Metropolis going psychotic, the characters will deal with the moral dilemmas of blame and self-defence. Is it okay to stove in the head of a person who has been biologically hacked to attack you? If they are no longer functioning members of society, what is your interactions with them? One interpretation of society is that if someone turns their back on it, they void all rights to that society. Others talk about humanity regardless of culture and law. Some people just like guns.



With worries about gender imbalance in politics, I’ve been thinking about The Cop and how she has come to be. How does she think about being a good cop but hamstrung by her colleagues because of her gender or race? How do you deal with that? This is really interesting with The Cop, because I’m placing her well after that sort of discrimination has enveloped her life. Defending and proving her right to be a policewoman has drained her self-worth. I hate the stereotype of the cop in a disaster who reluctantly leads a ragtag bunch of people and becomes super-cop-amazing-person in the path to a happily ever after. I want to deal with her having made the decision to give it all up (the policework and maybe even her life?) but finding she is genetically wired to be a good, strong person. Stealing some of the subtle sexism from the newspapers has been dirty, but valuable work.

Syria and the Washington Navy Yard shootings would also be useful to examine for material, but they are both too sad for me to engage with. Writing finds inspiration (good and bad) in the unlikeliest places. Doesn’t mean it’s always fun.

Lastly, I’ve been thinking about the meta-gameplay loop. That is, why play the game more than once? Part of my answer to that is procedurally generated stories from the AI Director. Another idea I’m exploring is a lot more simplistic and has to do with item drops. You play games and get rewarded with gear, which might bring new opportunities or stories to a game. I’m not particularly interested in inventory management, so it might ape Team Fortress 2’s approach more than anything – you have a few slots to put gear in, which makes minimal cosmetic changes but preserves the general character. I want there to be really fair and generous item drop systems, encouraging good gameplay. The story focus of the game might neatly sidestep all the idling that Team Fortress 2 has.

The Short and Sweet

Recently completed tasks:

  • Many bug fixes in the core engine and build process.
  • Plugging very many things into each other.
  • Got a proper debugging solution set up.

I’m currently working on:

  • Tracing the program launch to GUI code and making sure it all works how I expect.
  • Unit tests to help all this testing!

I’m not:

  • Changing build systems, compilers, libraries, IDE, directory structure or any of that! PROMISE!