January 17, 2005

The Ramble Chronicles: Quest

I'd like to begin with a couple of observations.

  • When I remember myself in past years, I'm often impressed with how much I've changed. And when I go back and look at things I wrote or built or created in past years, I'm often impressed with with how little I've changed.

  • It pays to be anal-retentive.

In the winter of 1992, I spent a week in Fort Leavenworth, Kansas, supporting a military training simulation for which I was one of the programmers. Actually, I only spent the days there; I spent the nights at a Comfort Inn in Platte City, Missouri. (No one on the project actually wanted to stay in Leavenworth.) It was the first week of the 1992 Winter Olympics, and I spent my evenings sitting on the bed in my hotel room, watching the Olympics and working on a little game called Quest on a DOS laptop I'd borrowed from my dad.

The laptop was a simple little thing, nearly obsolete even then; it was a Radio Shack model with not a lot of memory and a tiny hard drive and no graphics, and a battery that didn't hold a charge well, and it ran DOS. I loved it--it was a computer I could take on the road.

Quest was my first attempt at writing a tile-based game, along the lines of the Ultima series. It was written in a mixture of C++ and a Forth-like language for which I'd written an interpreter; the basic game engine was in C++, but all of the creatures and objects and regions to explore were defined in Forth. I'd never heard of Tcl at that point, but I'm sure the Tcl programmers reading this are nodding their heads--I was ripe to embrace Tcl when I discovered it.

The output was to the DOS screen, but by way of a hack. DOS allowed you to redefine the screen's character set temporarily. So Quest used character graphics, but with special graphical characters I defined for the various monsters, objects, and terrain features, along with all of the lovely characters in the PC's extended ASCII character set.

It was a thing of beauty, and I had a lot of fun working on it. In the end, though, it was a failure, for a host of reasons.

  • As a DOS program it was retro at a time when retro was no longer in. Microsoft Windows was already the next big thing.

  • There was no World Wide Web on which to distribute it. I could have uploaded it to a PC Bulletin Board, and it might have garnered some minimal attention, but (given that it was retro) probably not a whole lot.

  • It was trying to be Ultima rather than Angband, and consequently it was never finished.

That last point requires some explanation. Ultima was a game written for other people to play; it held few surprises for the its developer. The world map, the towns, the castles, and so forth were predetermined. Angband development has always been done by folks who want to play the game themselves, and want it to unpredictable and surprising, and so as much as possible of the game is randomized in one way or another.

So basically, Quest was a game I was writing for other people to play. The joy I got out of it was implementing the basic infrastructure to make the game work; designing new levels and quests was, on-the-whole, rather boring. Testing my new features was one; playing the levels I'd already designed was dull, because I knew exactly what I had to do.

This might not have been fatal had Quest had an audience; but in fact it didn't.

I like the Ultima model, and I want to bring some of that to Ramble; but I also want a game I'll enjoy playing, which is why much of my initial work on Ramble has focussed on creating interesting random levels.

Anyway, I needed a combat model for Quest, and I didn't really feel like making one up from scratch. So I went out and got a copy of the Advance Dungeons & Dragons (2nd Ed.) Player's Handbook and cribbed from that. I didn't use the AD&D rules verbatim, as they weren't written with computer games in mind, but I used them as a starting point and an inspiration.

Being about ready to start some simple combat modeling for Ramble, I cast about my hard drive and found the Quest source code, which, astoundingly, I hadn't thrown away in the intervening 13 years. I found the combat code easily enough, but I was lacking context--why had I done things the way I did? What, of all things, was a "THAC0"?

I put the computer away, and went to dig up that self-same Player's Handbook which, miraculously, I hadn't thrown away in the intervening 13 years--and struck gold.

Inside the front cover of the handbook was a hard copy of some of the Quest source code--and a print-out of something called (obscurely) the Analyst's Guide to VF. What it is, is a document that talks about how things are done in AD&D, with page references to the Player's Handbook, and then explains how I modified them to use them in Quest. More than that--it documents the basic player, creature, object, and combat models used in quest, and explains why they are the way they are.

Who would have thought, 13 years ago, that I'd be able to put my hand on all of these resources in a matter of moments?

As I said, it pays to be anal-retentive.

Posted by Will Duquette at January 17, 2005 11:27 AM