In country Victoria a six year old Lance E. McDonald sits in front of a computer. He types the following words onto his Amstrad:
10: INPUT “What is your name”; name$
20: PRINT “Hello “; name$
He types “RUN”.
His small jaw gapes in amazement. His life will never be the same again.
20 years later Lance E. McDonald types something different into a computer; into a digital thesaurus. First word: “Hostile”. Response: a stream of synonyms, among them the word “black”.
Second word “Takeover”.
‘Conquest’, ‘acquisition’, ‘invasion’. None of them are quite right. Annexation? Too clumsy. How about we shorten it. Annex… that’s good. That’ll do.
“Black Annex”.
Lance E. McDonald likes the sound of that.
5.30pm. The Customer Service department of an Australian ISP. Lance McDonald shuts down his computer. He leaves the office and walks home. He looks after his children. At 8pm his kids go to sleep.
From that point, until the early hours of the morning, Lance is Man Fight Dragon. And he is working on his brand new video game Black Annex.
You may have heard of Black Annex. It’s not like other video games. Black Annex fits the definition but it’s also a literal challenge; a testament to the stubborn lengths one man will go to in the name of nostalgia. With all the software available to independent developers, Lance E McDonald could make life easy for himself.
But no, Lance wants to make Black Annex completely from scratch. In QBASIC.
Black Annex is a game about subterfuge. It’s a game about corporate espionage and sabotage. But it’s also the story of one man building a video game like the ones he used to play, using the tools he once used when he was six years old and his jaw gaped in wide-eyed amazement.
“Well, I guess it’s that whole nostalgia thing. When I refer to “toys” I used to play with as a kid, I literally mean that BASIC was one of my favorite toys from my childhood.”
Lance E. McDonald has a room littered with relics; a house drenched in a once-hidden dimension of video game history that barely existed. He has a floppy drive atop a Super Nintendo that plays bootleg games. He has three different 3DOs. He has six different PlayStation 2s, including one of the old-as-hell external HDDs. He has every version of the PlayStation ever made including the ultra rare Net Yaroze that lets you create homebrew games.
“It’s literally just shelves and shelves of bizarre stuff like this,” he says.
He once built a telephone exchange emulator from a Linksys PAP2 for his Dreamcast, just so he could play games online using an ADSL connection connected to the Dial-up Modem in the Dreamcast.
“I just get an idea in my head like, ‘I’m gonna buy every modem that was ever released for home consoles and try them out’ and I just go on a binge like that.”
On a cold Sunday morning in 1992 a six year old Lance and his stepfather saw a sign next to an object lying on the ground and the sign said ‘computer’. Next to the sign lay an Amstrad CPC-464 and a sack of cassette tapes. The family had spent the last few years getting accustomed to video games, playing the Atari 2600 (“I really liked Lazer Gates and Demon Attack,” says Lance. “The rest of my family liked River Raid”). The rusty machine gathering dust on the market place floor had an air of intrigue to it. His stepfather bought the Amstrad and Lance brought it home.
“It was dumb, though,” remembers Lance. “No matter what you typed in, it would just say ‘Syntax error’.”
Syntax error.
Days later a friend of his brother came round. He dusted off one of the tapes, he typed “LOAD”. The machine emitted a high pitched screech and then stopped.
“RUN”.
And then, magic.
Buried deep in the library inside the primary school where Lance E. McDonald learned to read and write was a series of books called “UNDERSTANDING THE MICRO” and the librarian looked confused when a young boy tried to check it out. This was just the beginning.
“My step-brothers’ cousin had magazines with pages and pages of code you could try out,” says Lance. “I spent hours and hours entering other peoples’ code and writing my own.”
Years later Lance’s brother had a Super Nintendo. One of the games he used to play religiously was Killer Instinct. Killer Instinct was cool, but Lance wanted to make his own games. He stole the instructions, and made a text adventure in BASIC featuring the characters he read about it in the biography pages of the manual.
Lance E. McDonald had fallen in love with BASIC. Later his family upgraded to a 486. Cutting edge. It had a CD-ROM, a sound card, the works. But when another friend of his brother introduced him to QuickBASIC 4.5, a form of QBASIC that allowed him to write in BASIC and then compile his work into an exe. file, his eyes widened with the heightened excitement of endless possibility. Lance would go on to learn dozens of other, more powerful languages — and his job requires programming in PHP and Javascript — but when he gets home and everyone is dead asleep he returns to the his first love, the language he learned as a child, “HOW TO UNDERSTAND YOUR MICRO” weighing down his school bag, magazines scattered across his bedroom floor. A Killer Instinct instruction manual open at the biography pages.
“I still like to play with the toys I had when I was a kid,” explains Lance. “So I still use BASIC when I have a choice.”
What is Black Annex? Black Annex is a game much like the games you used to play, built in the way games used to be built, by a man who used to play these games as a young boy. Black Annex is an excuse; to do something insane in a modern age where modern tools are easily attainable and stupidly accessible. Black Annex is a self-inflicted wound; a borderline insane challenge; a labour of love.
“I guess it’s that whole nostalgia thing,” says Lance.
Black Annex is an isometric game in the vein of Syndicate, built entirely in QBASIC. So in that sense it’s a game about replicating those same feelings, that same experience, in the most authentic way possible. But for Lance E. McDonald those feelings run deeper; there’s an extra layer to his nostalgia.
“It’s obvious that Black Annex is meant to refer back to games that people played a long time ago, but the entire development process, for me, has had that same appeal. Not just playing, but building Black Annex is a nostalgic experience for me.”
It’s one thing to build a game that looks and plays like the games you once played; another to build that game with the tools and language you once cherished. Black Annex plays into the nostalgia we all share for a certain type of game, but the guts of it are soaked in the efforts of one man grasping backwards towards a very personal and unique history.
“I hope the entire heart and soul of the game being built on my own personal nostalgic feelings will always be there in spirit,” says Lance. “It’s one thing to make a “retro” game, but to emulate the entire way you used to play around with building games when you were a kid really gives the whole product a different feeling deep down inside.
“Or maybe I’m just imagining the whole thing.”
Black Annex began life as a design document called “Corporate Firefight Game”.
Then it was a tech demo. A man walking around an office environment decked out with desks and chairs; faceless drones in the periphery. It was designed as an exercise. What was possible with BASIC, how far could Lance push it?
Pretty far.
Before long animation tech existed, the main character could destroy the furniture as a distraction to the drones; a ‘vision cone’ system was developed to add a layer of drama to the proceedings. At one point Lance asked himself a question: if I were to dedicate a serious amount of time to this project, what would be possible? What could I achieve?
“I opened up the design doc and started thinking about what I would create if I worked on this a lot longer than I’d initially planned.”
“I’ve always wanted to make an isometric game,” admits Lance. “It’s just a style that I love.”
Black Annex is the end result of an obsession that ekes through decades. It’s an interactive memory; one human being’s personal history collated into a single video game. Video games can be the end result of millions of man hours accumulated by hundreds of human beings bashing at code, fiddling with state of the art software at the behest of a publisher, and that’s fine but Black Annex sits static at the other end of that spectrum: a personal video game; every line of code written by one man huddled in a corner surrounded by old consoles and the library books he never returned.
“Black Annex is turning into a great example of a game I wanted to exist,” says Lance.
The next time we speak to Lance E. McDonald he’s just come back from E3 after winning an Industry pass; receiving what he described as “the wonderful chance to fork out a few thousand dollars and talk to people about Black Annex”. He hopes the media contacts he made over in Los Angeles can help transform his own enthusiasm for his very personal video game into something global in scale..
Next up is PAX Australia, Black Annex was selected among five other games to be displayed at the Indie Showcase, and it’s a far shorter trip than the one he just made to Los Angeles.
Lance asks me a question. He’s been given a media list, most of the journalists who have expressed interest in attending PAX are on this list. When would be the best time to send those emails out? Maybe in the morning, I suggest. But not too early, around 9.30 in the middle of the week?
I’ll do that, he replies.
Make sure you mention that the game is written in BASIC, I add.
Nah, he says. I gotta see if it holds up without any pretext like that.
The last thing Lance sends me is an image: a screencap of a hundred emails in draft.
Every morning I wake up to press releases, sometimes dozens of them. They all say the same thing, my name clearly inserted into a template, mailed off to hundreds, maybe thousands of journalists. “My new mobile game featuring some sort of animal has just been released on iOS, please thank you to review.” Comes with the territory.
Lance’s email is different.
A hundred personalised emails, maybe more. Every subject line is different. I can see the opening line to every email, clearly manually written without a trace of copy and paste, every single keystroke made by a human hand.
“Hey Logan, Mark said you’d be at PAX, want to check out my game…”
“Hey, it’s Lance here, Aussie Indie video game dev person…”
“Heyo Matt, just wanted to shoot you a quick email…”
Lance could have written one single email. He could have bcc’d it to every single person on that list. He didn’t have to type it all out manually.
Lance could have built a video game using the same technology everyone else uses, but why would he want to do a thing like that?
You can check out Lance E. McDonald’s game Black Annex at PAX Australia as part of the Indie Showcase, or head to its Steam Greenlight page here.
Comments
25 responses to “The Australian Who Built A Video Game Using QBASIC”
I remember going onto my Spectrum when I was 4-5 and finding what I’m assuming was a program to write BASIC and then just making pictures out of the text rather than working out what stuff actually did. Memories…
Can’t wait for this game.
Oh man, this article is awesome.
Both the subject and the way it’s written. Lance E McDonald sounds like a great guy.
I remember when my family got our Amstrad. I read that manual as if it was a novel. It was like a door to a completely uncharted world and I was hooked instantly.
And no cover-shooting 😛
Took me longer than it should have to get that. 😛
Agreed on your first paragraph!
I had to look up and check if it was Serrels who wrote it when I read your comment and of course it was. Very well written as usual.
I am astounded by how much this guy has achieved with his game. I had those same Usborne books as a kid and tried to code deep text adventures which took some effort, but displaying graphics and so on was unfathomable to me.
Excellent read, well worth my time. Thank you.
If he’s the kind of guy to waste hour just sending an email, then I wouldn’t be holding your breathe for this one any time soon.
Old school all the way though. I’ll be interested in seeing what he comes up with.
I used to have an Amstrad CPC-464 with green screen. My father would buy Amstrad magazine that would had game code in BASIC that you could enter, run and play.
I bought a book that was about an adventure game framework that made developing adventure games so easy. It even introduced me to the concept of Reverse Polish notation.
Unfortunately, the code hinged upon a POKE/PEEK operation that addressed the location of where the data would begin in memory. As a result, I was never able to get it to work on my computer.
I think I was able to get it partially working in QBASIC during my school days… but that’s as far as I got.
I wish I had a PocketStation :-/
I totally understand!
I grew up with the Commodore =64 and learned to program in BASIC and a little bit of 6502 machine language. I used to enjoy mucking around in BASIC but when it came to the PC I never learned any programming languages. I own some of the programming books pictured in the article. 😛 The Osbourne books had little pictures of robots etc to explain to you how things worked.
I also used to type in long programs from COMPUTE’s Gazette and buy ZZap64! and C+VG magazines that came with the free cover tapes. I kinda miss those days
Really cool story, best of luck with Black Annex.
I’ll definitely check it out at PAX.
I remember some of those old programming books at my local library. I really liked those illustrations but found the whole coding thing daunting back then.
Also, don’t mean to plug another website, but if u like this article I recommending checking out Polygon’s Human Angle series: http://www.polygon.com/human-angle
I once built a vector based 2 player fighting game in QBasic. It was called Stick Boy: Extreme. It was terrible. Then I converted it to a gambling game by randomising the movements and attacks of the fighters and then tacking a betting system in. It was even more terrible, but still managed to get us temporarily banned from using the school computers due to the lunch time real money gambling ring that formed around it.
Classic! My high school in the 1980s had all Commodore 64 computers in their computer room and somehow a little pirate ring formed of people swapping video games. I still have no idea where they got them from. Maybe an early bulletin board (this was before the internet, of course).
I feel ya. I tried making slot machine type games, but the “random” in qbasic is really awful.
FYI, Qbasic used a LCRNG to generate random numbers. While not the best RNG implementation, it should have been good enough for a slot machine game! 🙂
http://support.microsoft.com/default.aspx?scid=kb;EN-US;28150
I guess you could implement your own pseudo-RNG based on Xorshift (my preference, and was used in Zafehouse: Diaries) or Mersenne twister algo, but I imagine that’d be overkill for most things Qbasic was used for.
I imagine Lance would have implemented his own, but I can’t say for sure.
It’s a nice article, but I have to wonder why the subject so popular. He’s writing a game in QBasic – that’s not much of a deal. That’s how I started 15ish years ago, and these days I’m a professional programmer, making games on the side with my workmates.
Does that make me several-page-article-worthy, too?
(Nothing against the article or subject, just wonder at the above questions.)
Making a game with modern tools is hard enough. Making a game that will compete with modern indie games, using tools most people gave up on at least 15 years ago? That’s almost masochism, and that makes it interesting.
He’s not using a 15 year old tool though, the game is written with QB64, which adds a whole lot of modern conveniences and libraries to BASIC. It basically translates BASIC code into C++ as an intermediate language and from that into binary. Aside from using the BASIC language, there’s nothing in common with the old QBASIC interpreter.
Oh, well that’s a bit more lame. And not as impressive as Chris Sawyer, who made most of his games, such as Roller Coaster Tycoon predominantly in assembly code.
Agreed, Sawyer’s very talented. I think with Lance McDonald, ‘written in a modern version of BASIC’ doesn’t sound as impressive as the ‘written in QBASIC’ gimmick, which invokes memories of Gorilla and the most primitive of primitive environments.
The cynic in me says he’s pushing the latter really only to get novelty interest, so his game stands out from the sea of hundreds of other indie titles out there. I’m not sure how I feel about that. I think it’s giving the false impression that parts of it have been master-crafted from scratch (ala Sawyer) that really haven’t.
Then you obviously don’t understand the complexity of fitting a game of this magnitude into QBASIC.
I remember going through the same thing on my Atari 400. Nearly everything I typed resulted in Syntax error. Then I found the indecipherable (for an 11 yr old) BASIC programming manual. About a week later I finally had a simple program running. It was love from that point onwards.
Everyone that owned a computer in the 80s was by default a programmer. You used to type them in from the magazines to get a free game and had to debug them and make them work. Then the joy of being able to change the program to put your own name in the text or change the graphics etc.
I often wonder where the next gen of programmers will come from, you don’t really get a computer these days that comes with a dev-kit that a 12 year old can get into from scratch with no help.
A minimal Linux install can serve this purpose nowadays, although these are probably far more complex than systems of 20 years ago. More likely we’ll see a surge of new programmers coming from an Arduino (and maybe Raspberry Pi) background.