John Calhoun is the author of my favorite game ever for the Macintosh: Glider, the first version of which appeared in 1988. Other games he wrote include Glypha, Stella Obscura, MacTuberling, Pararena, Spaceway 2000 (co-authored with Jeff Robbin), and Silicon Casino. Ten bucks says you didn’t know he now works on Apple Computer‘s graphics team. Among other things, he was responsible for the rewrite of Preview in OS X 10.3 that, in my humble opinion, kicks Adobe Reader‘s ass.
I recently talked to him over e-mail about the genesis of Glider and his career as game author.
Chris Klimas: When did your interest in programming start?
John Calhoun: I was aware of early personal computers (i.e. the TRS-80) and so in high school took a Computer Science class. It was taught almost as an afterthought by one of the math teachers. He probably taught a Computer Science I and II and then math the rest of his schedule.
The first few weeks of class were a fairly droll discussion of input, output, flowcharts, and the like. We were, however, going to learn Fortran and were told to purchase a brick of punch cards. I think we may have even punched a few cards in order to understand how the keypunch worked.
But then, after this sort of start to the class, there was the Monday we went in for class and saw that there were tables arranged with perhaps 12 or 16 Apple II computers. The teacher held up a 5 1/4″ floppy and explained to us that we were going to learn to program instead in BASIC. Of course, I was excited. From my modest exposure to a TRS-80, I was fairly sure the class was now on the right track.
I took quite a keen interest in the machine right away, and in programming in general. I was very keen as well to attempt to write a game very early on. Perhaps I was taken with the Star Trek game I had played on the TRS-80, or maybe this coincided with when I first played Space Wars in an arcade at a local mall. But I think from the beginning, I saw a computer as a game machine. Perhaps not above all else — I think my exposure to both science and science fiction fostered in me the notion that the computer was first a valuable scientific instrument (and I would write and become interested in scientific simulations as well).
CK: Any memories of goofy first programs?
JC: I remember trying to write a lunar lander-style game. I experimented with shape tables on the Apple as well as low- and high-resolution graphics. But being written in BASIC, most of my attempts proved slow and inadequate. In fact, I remember my biggest success was I think a lunar lander-style game that was strictly text-based — you watched a stream of numbers spill down the screen and hit the space bar to slow your descent — watching the numbers play out your velocity and altitude and, ultimately, whether you landed safely or not.
Something that now occurs to me: I mentioned that I thought of the computer as a scientific tool and game machine. It seems the vast majority of the games I would write initially were sort of a hybrid of this. I was drawn to Space Wars, Lunar Lander (and even Star Trek). These games were to some degree simulators. Thrust, gravity, velocity — these were the game elements or variables.
Perhaps Glider’s pedigree lies here. Of course with a paper airplane and vents on the floor blowing the glider up to the ceiling and such, it is a little more whimsical than Lunar Lander, but I think the connection is nonetheless still there.
I spent a summer or two up in Alaska with my father. I was a very novice programmer, but he had a VIC-20 one summer and a Commodore 64 perhaps the following summer. I was intent on learning to program these. The manual that came with the machine was involved enough that it allowed me to write a fairly decent version of the Tron light cycles game.
I had done something similar on a friend’s Commodore PET. The graphics weren’t spectacular — the truth of the matter is, the “graphics” were in fact text, or character graphics as they were called (and the PET did only black and white to boot). Nonetheless, the Commodore machines had an extended character set (informally called PETSCII, I believe). You could find enough shapes and such to make fairly convincing lines with nice mitered corners and such. So it wasn’t quite as bad as a letter P chasing around the letter O.
In any event, I brought this game back to life again on the more modern VIC-20. In addition to the availability of color, I learned from the manual how to create my own text characters. That is, so long as you stayed within the 7 pixels by 9 pixels (or whatever it was) limit of the characters, you could replace the letter A with any graphic you could come up with.
This allowed me to do relatively convincing light cycles — I even added a sort of forced perspective or three-quarter view, where the light cycle trails were thicker when running left and right as opposed to when running top to bottom on the screen. I even had the light cycles “rezzing” and fading in and out when the game began or ended.
Modifying the text or characters was fairly easy to do, but tedious. I had to design the art on graph paper, filling in the squares I wanted solid. I then had to determine the hexadecimal number that represented each row of squares. There were no paint programs …
I spent most of my time creating levels for the light cycle game. That is, I quickly became bored with the basic game and so started to add variety as the game progressed. For example, the first few waves would be fairly conventional — your computer opponent was pretty moronic, occasionally plowing straight into one of your light cycle walls. If you defeated him a few times, it would start to get tougher. You’d face several at a time (they might just as often kill one another, however). You would later go up against a different colored light cycle that was perhaps twice as fast as you. Later, they could “hyperspace” when boxed in (you only survived if your opponent happened to hyperspace on top of an existing wall segment).
It was fun.
So, now for the rather long-winded reason for mentioning all this … it occurred to me that you could make larger sprites or game graphics simply by breaking the graphic across several characters. You might do a long drag racer, for example, by modifying the letters A, B, and C. So long as you displayed them together in the right order, it would look to the world like a single long graphic rather than a string of three.
Well, here is what I did to sort of test this out. I edited the characters in such a way that when the right two or three were displayed next to one another, it looked like a triangular paper airplane. I then created the airplane facing the opposite direction so that, by touching a key, you could flip the paper airplane so that it either faced to the left or to the right. Hold down the key and the glider would fly in the direction it was pointing. No keys down and the glider dropped to the ground.
I added a rectangular vent along the bottom of the screen that I imagined was blowing air up. Fly the glider over the vent: up you go; fly off the vent: down you came. That was all it was. I didn’t quite know what else to add, but it was strangely compelling and fun to play around with. I don’t believe I was to program a machine after that for perhaps four years or so …
CK: When did you start working on Glider per se, and what was the initial development process like? Did you have an idea of what it should be like at first, or did you experiment a lot?
JC: I’m pretty certain it was the first Mac game I wrote. I was a fan of the Computer Recreations column in Scientific American, so the first things I wrote on the Mac were derived from those articles. Conway’s Game of Life, various cellular automata, simulating a chain reaction, etc.
But when I set upon writing a game, it was Glider. I didn’t really have a plan, so to speak. I guess my first thought was to recreate that little paper airplane and vent combo from the Commodore 64. If it worked, I would have learned to handle keystrokes and animate graphics on screen. I would understand too the performance constraints of the Macintosh. (Like, can you scroll the entire screen in real time?)
Needless to say, I got it working. I was quite pleased, too. I got buffering (or “off-screen bitmaps” as they were called then) working such that the paper glider could pass over wallpaper, cracks in the wall, picture frames and such and not erase the background. And it was fast, too. As long as I didn’t have too many large things moving at once, it could run at a decent clip.
But, like the C-64 version, at this point the game was little more than an amusing finger exercise with no goal. You could fly off the invisible column of air and float across the screen, drift back over it, and then rise back to the ceiling. But that was about it. I started consciously thinking, “Okay, now what?” Do you try to fly off the screen? To what end? Why is that so difficult — are there obstacles? Do you have a time limit?
So, you know, that’s when it really began.
In part two, John talks about Glider’s progression from shareware game to full-blown commercial game and what led him to eventually give up professional game authoring.