Thursday, August 2, 2012

Ill-Advised Video Game: How & Why

Following up on the Ill Advised Video Game post, I wanted to describe some of the technical details and address some of the issues that came up on Hack a Day.

There are two technical details I didn't describe in the earlier post: the Arduino-based interface to the game controls, and the game software itself.

Arduino-based Controller

The control panel has a total of 12 buttons. To avoid clobbering the rx/tx lines, which can affect communication between the Arduino and the host machine, I ended up using one of the analog pins in addition to all of the available digital input pins. Each button is connected via a standard pull-down circuit as described here.

The Arduino sketch itself is available here. It's straight-forward except for a detail or two. It basically grabs the status of each of the buttons and packs it into an int-sized bit-field -- that is, two bytes where each bit corresponds to one of the buttons, with a few bits left over.

However, since we're sending these integers to the host computer via a slow serial link, the two bytes will generally arrive at different times. As a quick-and-dirty way of differentiating one byte from the other, I've fixed a particular bit high in one byte and low in the other.

Though it would've been possible to code the Arduino into behaving exactly like a USB game controller using unojoy, it was enough for my purposes to stick with straight-up serial communication.

Game Software

I've posted the game software up on github. The initial version I've committed is poorly documented (it's only just been completed) but I'll address that soon. I'd be happy to answer any questions about this. It's inefficient (every frame is upscaled from 320x200, since my graphics chipset seems unwilling to drop that low) but it's a fairly accurate reproduction of the kind of DOS game programming I used to do back in high school with the famously coder-friendly 0x13 video mode. (I'm still very proud of forcing some member of the officiary to sign a very official framed certificate with the name "Turdhawk" on it back in 1998, though the game itself has sadly been lost.)


Why I Made This

Some people at Hack a Day were pretty upset about this project. I have friends whose opinions I greatly respect and who weren't fond of it either. Many people have an emotional response to my use of the Challenger disaster, probably based in their own memories of the event, and I suspect that emotional response makes it hard to see alternate interpretations of the project.

I won't lie: I do think this is a funny project and part of that comes from the dark humour. At the same time, I don't feel that this is enormously disrespectful to the victims. I wanted to invoke the Challenger disaster as a shared event from a specific time and place, not as a personal experience. That's possible for old disasters like the Titanic -- I doubt many would have been angry if I had chosen that -- but not for fresh ones. I would never have chosen the Columbia disaster, for example. Everyone draws the line somewhere and clearly some disagree with where I've drawn mine.

Would I feel uncomfortable showing this to a family member of one of the victims? Probably. Do I think it would cause them pain? No, I think they're strong people who have had a lot of years to make peace with it.

This project has a lot more to say about the 1980s and video games than it says about the Challenger.

I remember the 1980s for its optimism around technology. Home computers were like NASA invading our houses and it was great. Technology was marvelous, it was the solution to all of our problems, and if used with good intentions it could never be a source of tragedy. As a child I conflated science fiction, real-world space exploration, and video games at will, thanks in no small part to the popular science culture of the time. This game is a tangible illustration of the way our attitudes have changed. It vividly re-draws the distinction between NASA, where good people sometimes die, and Star Trek, where it's just the anonymous guy in the red shirt again.

As for video games -- this one involves 7 deaths. That's pretty low by video game standards. Yes, they are specific ones with names and faces; I chose not to include either. Personally I think there are far better candidates to get worked up about -- the Call of Duty series comes to mind, with its paper-thin fictionalization combined with its earnest joy in murder. I don't play video games -- I'd rather create something -- and have the luxury of leaving my opinion about the morality of violent gaming mostly unformed -- however this game hardly rates on that scale.

Finally, as for art, this isn't particularly ground-breaking in its use of controversial content. (I do hope it's part of a continuing push to get some kinds of hacking recognized as artistically expressive). Sniffy the Rat was way more controversial and morally questionable, and that was back in 1989.

I consider the furious responses to be disproportionate to the admittedly iffy elements of the project and I'm content to ignore them. A few of the critical comments on Hack a Day were thoughtful and I appreciate those. I hope this explanation clarifies my decision to continue with the project.

I hope to present this game at the Vancouver Eastside Culture Crawl (and possibly elsewhere) without any indication that it's not actually a genuine vintage video game. I want players to wonder to themselves about the Challenger moniker right up until the moment of explosion. Then I'd like them to have a good think about their reaction, whatever that is. Hopefully people who aren't used to hardware hacking will have their minds blown wide open as to the creative and deceptive potential of a fairly modest homebrew video game. I've enjoyed building this and would consider that to be a successful outcome.

No comments:

Post a Comment