Last week I read an abolutely amazing article on retro computing. The author took a trip through the world of emulation, making stops at significant signposts in computing history such as the Amiga, LISP machines, and the NeXT computer. In doing so, he also found a way back to his childhood. I was deeply moved by this article and it inspired me to do a little emulating of my own.
But first, a little backstory. My father introduced me to computers for the first time, teaching me the basics of BASIC when I was just six years old, sitting on his knee in front of a terminal connected to the VGH mainframe. But it was my uncle, Allan Symonds, who provided a portal to personal computers. He had a mysterious all-in-one machine called a Heathkit H-89, and I fell in love with the big grey beast. I remember, with perfect clarity, one morning in December of 1979. We had celebrated Christmas at Uncle Allan’s house, and I had spent most of my time on the computer. My father tried to tell me we had to go. I pleaded for more time-- when else would I ever get to use this computer again?
"You can use it again when you get home," I my father said. "That’s not Uncle Allan’s computer. That’s your computer."
My jaw dropped. My seven year-old brain couldn’t even comprehend it.
But it was true.
I had that Heathkit between the ages of seven and seventeen, and I absolutely loved it. It was an oddball sort of computer, running an operating system called CP/M by this tiny company known as Digital Research. There weren’t that many games for it: my uncle gave me copies of Space Invaders, Missile Command, Space Pirates, and a Pac-Man-like game called Munchkin. Those were almost all the games that existed for that machine. I wanted more, but I figured I would have to write them myself. This was hard. I tried to learn assembly language, the only language fast enough to write games for such a slow machine, but I didn’t have the patience. I tried to learn C and Pascal, but compiling a simple "Hello, World" took about twenty disk swaps in the single floppy drive. There was only one language that I felt I could work with, and it was one that I already knew. It was from a tiny company as well, an outfit known back then as Micro-Soft.
Micro-Soft’s BASIC, or MBASIC for short, was an interpreted language that only took up about 25 kilobytes out of a 95 kb floppy. That left plenty of room for a game, but there were drawbacks. Being interpreted meant it was slow. Extremely slow. Fortunately, the manual had all sorts of helpful hints for increasing speed, such as typing DEFINT A-Z to force all variables to be integers. Who had time for floating point?
I figured out other optimization strategies over time. The Heathkit was a monochrome machine, and it had no bitmapped graphics. Instead, you could use a special escape code, CHR$(27);"F", to go into "graphics mode". In this mode, lower-case letters were displayed as a series of shapes: "y" was a diagonal line, "p" was a small rectangle, and so forth. You could use "reverse video" to flip the shapes’ pixels between light and dark. Other escape codes let you position the cursor anywhere on the 80 column by 25 line display. It wasn’t much, but it was enough to make crude games, and that’s all I ever wanted.
I asked Uncle Allan for help with writing my games in BASIC, and he taught me all about the Main Loop, the basic structure of all game programming that is still around today. Thanks to him, I was able to move on from just drawing pictures and start writing actual games.
I started many games in those years, but I finished relatively few. One of the ones I did finish was a Star Trek game where you commanded the USS Enterprise through a galaxy full of angry Klingons. It was insanely difficult. You had to time your commands perfectly to raise and lower shields, maneuver at impulse and jump to warp speed. Klingons would swarm you and could hit you from any direction, whereas you could only shoot forward. Even with your shields up, if you got hit you would lose energy, and if you ran out of energy you would die. If you tried to quickly warp out without knowing what was ahead of you, you would probably run into a star.
I remember beating it with great difficulty back then and feeling quite proud of myself. I can’t beat it today without modifying the code to make it a little less insane.
One of the last games I ever wrote on the Heathkit was based on the TV show Max Headroom, a series that I was completely in love with back then and still am today. I only ever completed the first stage: a daring helicopter run to Network 23. I wanted this game to have the best graphics I’d ever seen on a Heathkit. I wanted three-way parallax scrolling, so the buildings in the foreground would scroll more quickly. I wanted the helicopter to be superimposed on these scrolling buildings, and gunfire on top of that.
This was completely impossible and insane to even think about doing in interpreted BASIC on a 2 MHz 8-bit computer that was driving a 9600 baud terminal as its display. To the best of my knowledge, nobody ever did graphics like this on a Heathkit, not even using assembly language.
But I found a way. I used the terminal’s "delete" functions to scroll as fast as the display was able. I stored the buildings and the helicopter in string arrays, and defined them at the beginning of the program so they would be faster for the interpreter to recall. I only repainted bits of the helicopter that were broken by the scrolling boundaries. I cheated a bit and paused the action when the gun fired, then repainted the building bits.
It was a bit slow, but it was a fully functional game. You would want to stay at a high altitude to avoid the guns, but nearly-invisible barriers forced you to fly lower. Your best bet was to wait for the gun to fire, then fly up and right as quickly as possible. The gun would move in an arc, so you could anticipate where it would fire next.
Not long after I wrote this game, my Heathkit died. The company itself went out of business, so repairs were impossible. I moved on to PCs, running an operating system called DOS that to me looked strangely familiar. All my old games were stored on decaying floppy disks, and I thought I would never get to see them run again. Decades passed, but I hung on to those floppies out of nostalgia if nothing else.
A couple of years ago, I found a H-89 emulator written by Mark Garlanger. I emailed him and he told me he had some success recovering images from floppy disks, so if I would like to mail him mine he would try to save what he could. I didn’t hold out much hope. I remembered my Heathkit would have problems reading disks after a few years, and it had been decades. But I mailed them out anyway.
Mark was able to recover almost 95 percent of my data.
My grandfather died in 2001, and I saw my uncle at the funeral. My father died a year later, and I didn’t see Uncle Allan there, or any time since. I have been unable to get in touch with him. The Internet and even close family members have come up with nothing. He might still be alive, but with each passing year I start to doubt it more and more. All these important people in my life are disappearing one by one, and there is nothing I can do about it.
But thanks to Mark, those years of my life, the results of all the things my father and my uncle taught me, are preserved forever with perfect fidelity. It is as if no time has passed at all. My awkward teenaged self is calling out to me, wanting to show me this cool game he just made. I wish I could call him back and tell him that everything is going to be all right, that he’ll find his way eventually, that he’ll find the love of his life and he’ll get to write novels and work for game companies and have a good life.
But maybe, somehow, he knows.
I was watching some of the PAX Australia panel footage on Twitch this weekend and caught a great stream with the BioWare team. These guys have made some of my favorite games, such as Neverwinter Nights and the Mass Effect trilogy. But as I was watching the panel I noticed something: these guys were definitely guys. Every single panel member was a white male in his mid-to-late thirties. I thought back to a panel at VCON that I had attended about Diversity in Sci Fi and Fantasy. The discussion was about how much richer life could be if we heard from a variety of different voices. Was there any diversity to be found in video games?
As if the BioWare team had heard my thoughts, one member replied to a question about his favourite gaming storytelling with a list of indie games, including "Analogue: A Hate Story". The title immediately intrigued me, and when I found out it was about a deep-space exploration mission to uncover log files from a dead, centuries-old generation sleeper ship, I was already hooked. I couldn’t get on Steam fast enough to plunk down my $10.
The gameplay in Analogue: A Hate Story switches between a Unix-like command-line interface, a log-file retrieval system that pulls out old email messages, and click-based interaction with a sentient artificial intelligence, represented by a young woman drawn in an anime style. The AI appears to be helpful, but she won’t show you all the emails at once. Instead, you have to sort through the ones that do appear and "present" them to the AI. She will then fill you in on the background details of the people inovlved and in most cases will open up additional emails by the same author.
I won’t give away the ending, but I will say that it presented a society gone horribly wrong in a completely different way than I’ve ever seen in a video game. The standard plot for these "dead ship survival horror" games is that either an AI or a mad scientist (or both) decided to play God and unleashed a technological or genetic horror that destroyed the society. Nothing like that happened here, but what did happen was more personal and far more shocking.
Having completed the game in a marathon setting on Sunday, I found myself craving more. I found the author’s website and it took me to one of her earlier games: Digital: A Love Story. This had a hook that got me instantly. The game is played in a simulation of a 1988-era computer (a mash-up of a Commodore 64 and an Amiga called the "Amie") and the player interacts through dialling up a modem (complete with historically accurate connection sounds!) and connecting to various BBS (Bulletin Board Systems) to uncover a story involving a woman named Emilia. The use of historical events, like the Arpanet worm, grounds the story in reality at the same time as it ventures off into the fantastical. The use of message board posts and private messages adds an immediacy to the game-- sometimes a character will reply to you as soon as you navigate to another part of the BBS! I can’t say much about the ending other than the fact that I actually cried, and it has been a long time since a video game has moved me that much.
The author of these games, Christine Love, is a young woman who is a gamer and who identifies as queer. Her writing is informed by her background, but her voice is so powerful that she is able to create brilliant works of art that have profound emotional impact for anyone who plays them. She is a shining example of how diversity in creative voices enriches us all.
Analogue: A Hate Story is available for $10 on Steam for Windows, OSX and Linux.
Digital: A Love Story is a free download and is available for Windows, OSX, and Linux.
If you’re in the area tomorrow, why not stop by at VCON, the Vancouver Science Fiction, Fantasy, and Gaming convention?
VCON is an incredibly fun little convention that is celebrating its 39th yearly event. It’s held at the Sheraton Guildford Hotel in Surrey on Friday, Saturday, and Sunday (October 3-5).
I’m going to be on two panels on Saturday: The Future of Gaming (at 12:00) and Secrets of the Game Masters (at 2:00). This is the first time I’ve ever been on any convention panels, and I’m really excited! It’s going to be very cool.
Hope to see you there!
Over twelve years ago I had a dream. I had all these ideas bubbling up inside of me from a lifetime of reading and watching science fiction, and I wanted to make them come alive in some form. I dreamed of writing an epic trilogy that would follow the adventures of heroic space pilots fighting an evil alien enemy.
Today, at long last, that dream has been fulfilled.
Beyond the Expanse is the final installment of the Masters trilogy. It is now available on Lulu.
While the novels are, at their heart, fun and escapist sci-fi entertainment, there are deeper themes than simply the good guys winning over the bad guys. The characters struggle against their own fears and weaknesses, and they take time to think about the ramifications of their actions. The enemy aliens (while definitely evil!) have problems of their own, and some of them rail helplessly against what their once-proud society has become.
Ultimately, the trilogy is about the triumph of hope over fear. It is about how very different people can overcome their mutual mistrust and learn to work together for the betterment of everyone. And it is about how even the smallest people can make a real difference in the universe, simply from the choices that they make.
I hope you enjoy the book.
Gone Home got a lot of positive press when it was released last August, but many people bristled at the idea of paying $20 for what was ultimately a very short, if innovative, gaming experience. Yesterday I picked it up on a Steam Sale for $2.99 and enjoyed every minute of it. While I finished the game in a single evening, I found myself still thinking about it the next day, and I suspect I will continue to mull it over for some time to come. There is depth in this game, and artistry. The developers clearly had something to say, and they communicated their message in a new and unique way.
The game begins in June 1995. You are a female protagonist, Kaitlin Greenbriar, returning home after a year-long trip to Europe. When you get home, there is a note on the door from your younger sister, Sam, saying that she was sorry she couldn’t meet you. Your parents are nowhere to be seen. The combination of an empty house, flickering lights, and a howling storm outside creates a spooky atmosphere. As you move through the house you are tempted to turn on every possible light and leave them on. There are no other people to interact with in Gone Home, but a story is told through voice-overs from your sister Sam that trigger when you examine certain objects. Whether these are simply letters that Sam wrote or tapes she recorded isn’t entirely clear, but they serve as the backbone of the story. In addition to these voice-overs, there are tons of little clues strewn throughout the house: letters, invoices, detention slips, and so forth. Many objects can be picked up, examined, and even moved around the house, but only a few have significant meaning. I found myself picking up pens from drawers and leaving them on top of tables, just for fun.
As you proceed through the house you end up unlocking new sections and learning more about your sister and your parents. Your father once wrote a couple of science-fiction books involving time travel and the assassination of JFK, but fell out of favor with his publisher and ended up doing contract work writing reviews for a consumer electronics magazine. As an aspiring novelist who pays the bills as a technical writer, this resonated with me. Sam is also an aspiring writer, as you discover when you find ever-evolving stories from various point in her childhood. You also learn about Sam’s growing and complex relationship with her friend Lonnie, which becomes the driving point of the narrative.
The puzzles in Gone Home are fairly easy to solve. This isn’t like the adventure games of old where you had to find the blob of guacamole and attach it to the rubber chicken with the pulley in it, just so you could get past the annoying clown. Instead, the game rewards slow, thoughtful exploration. There are tons of objects to find in each room that give more background information about your parents and even the original owner of the spooky home. It turns out that the family had just moved into the house (packing boxes are visible everywhere) while your character was on vacation, so it makes perfect narrative sense that your character would be exploring the house for the first time. This brilliant move puts you and your character on the same footing, making the experience even more immersive.
The choice of 1995 as the time frame for the game was a deliberate one by the designers, as that was the last year before information technology became ubiquitous in family life. This also makes the game a great nostalgia trip for finding all the trappings of mid-90’s life that have since vanished: tape cassettes and recorders, VHS tapes and VCRs, Super Nintendo, and answering machines.
I loved every moment of Gone Home. Although the flash sale is over, it’s still only $4.99 from the Steam Store, and it runs on Windows, Mac OSX, and Linux, so there’s no excuse for you not to play it!
I love science fiction in all of its forms: books, movies and TV, and video games. I grew up reading Asimov and Clarke, loved 2001 and Star Trek, and spent far too much time playing Space Invaders and Asteroids. In the decades since, each form of media has influenced the others: first awkwardly (like the CD-ROM "interactive movies" of the 1990s and the painful video game movies like Super Mario Bros) and then later more cleverly and subtly.
Edge of Tomorrow feels like a movie that is so well-executed, with all three mediums blended together so seamlessly, that it may be the perfect science fiction film for our age.
The movie stars Tom Cruise as Major William Cage, a "media relations" officer who wants desperately to avoid actual combat. Unfortunately for him, the world’s military is preparing for an invasion of France in order to push back alien "Mimics" who have overrun Europe. The surly General Brigham (Brendan Gleeson) doesn’t much like Cage’s type of officer, and railroads him so that he ends up at Heathrow airport, assigned to a squad that is getting ready to land on the beach with the first attack wave.
Although the attack was meant to be a surprise, the Mimics are ready for them and the soldiers come under heavy fire. Cage, who has has no combat training, is unable to even take the safety off of his powered battle suit. He and the rest of the misfits who make up "J Squad" are overwhelmed by Mimics and quickly killed. Cage manages to take an unusually large blue Mimic with him by exploding a mine, and dies with the alien’s blood on his face.
He wakes up at Heathrow airport again, seemingly transported a day back in the past, although he remembers everything that has happened. He is unable to avoid his fate, however, and ends up shipping out again and getting killed again, albeit in a slightly different way. At this point the movie starts turning into a much grittier version of Groundhog Day, with Cruise taking on Bill Murray’s task of trying to figure out a way to escape his predicament. In one of his loops he runs into Sergeant Rita Vrataski (Emily Blunt), a military heroine who had led her troops to humanity’s only significant victory against the Mimics in Verdun. Before they both get killed, she tells him to seek her out when he wakes up.
The rest of the movie involves the two soldiers trying to work together to figure out why Cage is time-looping and how they can use that information to fight the Mimics. Because of the military and science-fiction theme, the repeating day mechanic starts feeling less like Groundhog Day and more like the feeling of playing a difficult video game where you have to respawn at the beginning of the level. Director Doug Liman said in an interview that the parallel was intentional, explaining that the movie is just the latest in a series of video game-inspired films he has directed, starting with The Bourne Identity.
Edge of Tomorrow is based on the Japanese young-adult novella All You Need Is Kill. The film keeps most of the character and plot elements, although it transfers the setting from Japan to England and France. It’s a solid science fiction flick with everything you might want: aliens, time-travel, and futuristic soldiers walking around in advanced battle armor. Despite the fantastical elements (such as time travel) it remains science fiction because it attempts to explain these effects through scientific principles and not supernatural intervention. The writing is crisp and the actors (particulary Emily Blunt) are believable and human.
I saw the movie yesterday with my wife, father-in-law, and brother-in-law. It was the perfect Father’s Day activity and everyone enjoyed it. Definitely worth seeing.
That side panel on the left of my blog continues to taunt me. Beyond the Expanse! 100% Complete! Now in Editing!
It’s been in editing for months. I think I’ve edited about five pages so far.
My excuse is that I’m tired from my job. Working at DemonWare has been a thrilling roller-coaster ride so far. I’ve never had the pleasure of working alongside so many smart people. There’s an endless amount of interesting technical things to learn, and an endless amount of things to write. This is a company that has grown explosively over the last few years and they desperately need someone to tame the mess of information that they’ve created.
So desperate that they’ve renewed my contract for another six months.
I’m thrilled, naturally, but a part of me wonders if that damn sidebar on the left hand side of my blog is going to have to sit idle even longer.
Up until now I’ve felt that all I could do was come home from work, eat dinner, maybe watch a bit of TV, and then collapse into bed. It’s an easy excuse. This is a demanding job at a company that demands top performers and gives them top salaries and benefits to match. With these demands, surely I need to conserve my mental energy to be able to give my best work, right?
And yet I wonder.
Every day I come home and I don’t work on my personal projects, I feel like I lose something of myself. And if I keep losing myself, won’t that just lead to a diminished soul, and thus a diminished work performance?
So I’m trying something new. Every day, for as long as I can keep it up, I’m going to do something creative for myself. It could be writing, it could be editing, it could be anything. Today is the first day, and I’m writing this blog post. It’s not much. But it’s something.
There are a lot of excuses for not working on your dreams. But not very many good ones.
I’ll see you tomorrow.
More coffee is always better, right?
It’s a new year, and Jeremy and Terry have a lot to catch up on! Jeremy has a new job, which is very exciting, and even includes free food! Then the disussion turns towards Jeremy’s new NaNoWriMo novel, "The Last Bonjwa". While consuming vast quantities of coffee, Jeremy and Terry discuss everything from fixing plot holes to improving the cover.
Links from the show:
<li>Onomatopoeia at The Free dictionary</li>
<li>My new company, Demonware!</li>
<li>Renderosity - for commercial 3D models</li>
<li>New laser printed material, lighter than water, strong as steel</li>
<li>Bonus: Automation at XKCD</li>
Knotty_Geeks_Episode_34.mp3" width="290" height="24" />
I’ve watched hundreds of hours of professional Starcraft matches. I have my favorite players and teams who I cheered for when they won and cried when they lost. I’ve immersed myself in the unique and wonderful world of professional gaming, of this tiny (but growing) subculture called eSports.
Today, I’m releasing my love letter to the game and the scene itself. It’s a full-length novel titled The Last Bonjwa.
The Last Bonjwa follows the adventures of John "Heart" Wolanski, a professional Starcraft player living in Korea. It’s a few years in the future in an alternate timeline, so the names of players and teams are different, but fans of the scene will recognize many similarities to our own universe.
John is nearing the twilight of his career, and the popularity of the game itself is waning, but he refuses to go down without a fight. But when he receives a threatening email, he is suddenly thrown into a world he knows nothing about, as he must fight shadowy forces who are out to kill him, all while trying to qualify for the biggest tournament of his life.
The Last Bonjwa is a fast-paced action adventure, but it’s also a peek into the fascinating world of eSports seen through the eyes of a player. It is a sequel to my short story "The Stalker", in which John encountered an artificial intelligence inside the game itself.
The Last Bonjwa is now available on Smashwords in a variety of eBook formats for all viewers, all DRM-free, for $2.99. No knowledge of the game is required to enjoy the story, but familiarity with it will make the tale seem even richer.
Today was my first day at Demonware, a really amazingly cool software company based in Vancouver and Dublin. Demonware writes software that handles matchmaking, leaderboards, and other online services for video game companies, primarily Activision/Blizzard.
My job is a technical writer. It’s a contract position, but hopefully (crosses fingers) it will lead to a full-time gig.
What’s really neat about the company is all the cool tools they use. They will grab any tool if it’s the right one for the job. Just look at the list:
It’s also a really nice place to work. Lots of interesting and smart people work here. There are lot of them to meet. :) There is a ton of interesting work to do from a technical writing perspective-- tons of complex and powerful systems that could use more documentation. Anyway, I had a great first day on the job.
I'm a writer and occasional programmer. I write science fiction stories and novels.
I also write technology articles for Ars Technica.
I'm the creator of newLISP on Rockets, a web development framework and blog application.