Amit Patel, creator of Solar Realms Elite

amit-patel

In 1990, Amit Patel created the BBS door game Solar Realms Elite. In his other life he has worked with programming languages, scientific equipment, data analysis, visualization, geological exploration, simulation of complex systems, economic modeling, maps, trend analysis, artificial intelligence, and web software. He’s now working on interactive reference materials for game developers.

SRE was one of my all-time favorite games. It was my great pleasure, then, to interview Patel about SRE. The interview was conducted by email Jan. 3-27, 2013.

Josh: I have a clear memory of the first computer I ever used: a Commodore 64 in my kindergarten class. When did your family get into computers? What kinds did you use over the years?

Amit: My first experience with a computer was with a TRS-80 in elementary school, for just a few weeks. The only project I remember from that experience was using the “block” character graphics to make a graphical pac-man/ghost animation. A few years later, our family got a Commodore 64, and that was what I used to teach myself programming. Our middle school taught BASIC and Logo on Tandy computers. My high school taught BASIC, Pascal, COBOL, and FORTRAN with a VAX 11/750, a 3MHz minicomputer that was shared among all the students between two schools. I had also played a little with Atari, Mac, and Amiga systems, as well as programming my Casio FX-4000 calculator, which was amazing in its capabilities. At home I had an IBM PC-XT, and learned Turbo Pascal, C, C++, and Prolog, all from Borland, which made affordable language tools for PCs. Many of the professional language tools could cost hundreds of dollars, but Turbo Pascal was a mere $50, and that was my first step outside of BASIC, which came with the computer. Turbo Pascal was truly amazing.

My dad once typed in a very long BASIC program. At that time we hadn’t figured out how to save a program to tape, so we just left the computer on for many days to keep it in RAM. Those were the days! I was reminded of that when I read your SRE Design Notes. You mention playing some of David Ahl’s “Computer Basic Games.” Was that your first exposure to computer programming?

We had a tape drive on the Commodore 64 but it could take 30 minutes to load a program. Yes, those were the days! I mostly learned by borrowing books and magazines from the local library, and also by reading the manuals that came with the computer, back when computer manuals actually explained things. David Ahl’s book was great. The examples in most computer books were fairly mundane, but “Computer Basic Games” gave me fun things to play with. I could type in a program, play with it, modify the program, evaluate the modified game rules, and so on. In addition to games, I experimented with graphics, user interfaces, optimization, multitasking, program structure, and many other things. I found it best to learn by reading about something, then experimenting, then going back to reading.

My interest in UIs shows up in SRE. The setup program has menus, dialog boxes, overlapping windows, titlebars, keyboard shortcuts, drop shadows that darkened text, scrollbars, all implemented in my own UI toolkit. Remote users got menus that highlighted the shortcut keys, defaults highlighted with capital letters, and advanced input fields with shortcuts like “3k” expanding out to “3000”. I paid attention to little details, including bright/dark color combinations, formatting numbers with commas, and handling plurals correctly (“1 planet” not “1 planets” or “1 planet(s)”). My interest in optimization also showed up in SRE, although not visibly. Since SRE was color-heavy (often changing colors for each character), I wrote an ANSI color optimizer that calculated character by character the optimal ANSI code sequences to change colors. Since the BBS and game shared memory, I carefully optimized the RAM usage, and used “overlays” to shrink the game even more. My interest in multitasking also showed up, with my own multitasking system that allowed the player’s gameplay, the status bar, and the sysop commands to all run in their own “cooperative threads”. SRE also contains my experiments with encryption, economics, game theory, programming languages, and simulation.

The pattern with my programming projects was that I wasn’t writing a program purely to make a program, but also to experiment with new ideas and learn new things. That pattern continues to this day. :) It’s great for learning but not optimal for short term productivity.

Were you much of a gamer growing up? Were games a social experience in your house?

I did play games but I wasn’t that much of a gamer. I especially enjoyed RPGs, such as the Ultima and Bard’s Tale series. I also enjoyed construction/simulation games, like SimCity and Railroad Tycoon, and strategy games, like Civilization and Dune II. I played text adventures but was mostly frustrated by them. While we shared a computer, my brother and I cooperated on games. When we eventually got our own computers, we ended up playing different games.

When I was in middle school, I met Richard Garriott, creator of the Ultima games, at a local computer store. He was promoting Ultima VI, and was telling me stories of strategies the testers found. The most fascinating thing was how puzzles could have multiple solutions, because they programmed them in terms of conditions to meet instead of in terms of actions to take. As a result, players could explore many different sequences of actions that led to the goal condition. An example he gave was a chasm that was intended to be crossed by using the “telekinesis” spell to activate a lever on the other side, dropping a drawbridge. To me, the most obvious way to program this was to activate the drawbridge when telekinesis was cast. One of the testers came up with a different solution: kill one of the party members, throw the corpse to the other side, then cast “resurrect”. The party member could then pull the lever, lowering the drawbridge. If it had been programmed the way I had been thinking (trigger on player actions), this solution would not have worked, but instead it was programmed in a more general and flexible way (trigger on state of the lever). He also told me about the UI design, with primary and secondary “noun-verb” actions on objects, instead of the “verb-noun” structure that I had seen in other games. That gave me a LOT to think about, leading me to learn object-oriented programming and data-oriented programming. After that, every time I played a game I wondered how it was put together, and ran experiments in the game that could confirm or disprove my hypotheses. Outside of games, that type of curiosity made me interested in science, and I pursued physics and chemistry.

I’m glad you touched on your colorful, thoughtful ANSI interface for SRE. It made your game stand out among other BBS door games. I’d like to talk about that context of BBSes for a bit. Why did you begin calling BBSes? Did you run into the problem of the unexpectedly large long-distance phone bill that got so many BBSers in trouble with their parents?

My brother called some local BBSes and had played games on them, which is what led me to write SRE. I didn’t really get into BBSes, even after writing SRE. For me, SRE was just another fun project to learn things. I don’t think I had ever called a BBS before writing it. We didn’t call long distance until after SRE, and the game registrations were able to pay for the BBS’s phone line and any long distance calls.

I mostly spent time on my brother’s BBS, The Solar Realms, on the message boards, especially for supporting players who played SRE and sysops who ran the game. I wasn’t much into the BBS scene, and only called a handful of other local BBSes.

I imagine the SRE and BRE games on The Solar Realms must have been epic! So your brother was SysOp, but did you also have a hand in running it? Was it created primarily as a way to distribute and support SRE and the other SRGames?

It was primarily for distribution and support, but we also ran games and message boards. We also were able to test new versions of the games there before distributing them more widely. It’s hard to know whether the SRE games were epic, because I didn’t see them elsewhere. I did learn some strategies and loopholes by watching what the players did! It was great to have that immediate feedback that I could use for tuning and balancing the game.

You explained that you weren’t into BBSing, but I gather that you were active on Usenet and IRC early on. What you were doing technologically and educationally during the years you supported SRE?

I wrote SRE in the summer between high school and university. Once I started classes, I also got an Internet account, and explored Usenet (not IRC until a long time later), and I also realized that BBSes weren’t that interesting compared to the Internet. I continued working on SRE and other BBS games but most of my projects were either OS/2 + GUI (which I ran at home) or Unix + Internet (at school). Usenet was a great place for me to chat with other game developers and learn lots of cool techniques and algorithms.

I’d love to hear the definitive story of how SRE came to be. You have mentioned in old Usenet postings and on your website that SRE began as your own version of Space Empire Elite, a popular door game on Atari ST BBSes, which your brother Mehul played. Did you also play? What led you to decide to try your hand at making your own game — and why a BBS door game rather than a DOS or Windows shareware title?

I remember watching Mehul play Space Empire Elite, but I don’t remember playing it myself. I might have played a few times, but don’t remember. I think that’s why the games look similar on the surface but actually end up playing so differently. I didn’t really understand its game design, and instead used my own game design ideas (from years writing Hammurabi-like games). I also didn’t understand the inter-BBS nature of the game, and SRE didn’t have that aspect. Inter-BBS completely changes the gameplay, because you end up with a lot more teamwork and rivalry, whereas SRE was much more about individual play, studying and making tradeoffs in the economy, military, diplomacy, and population.

For years I had been writing my own games as learning projects, and at first SRE was just one more of them. Mehul encouraged me to finish the game and later sell it as shareware. I had also written some DOS games but what usually happens is that I write just enough to learn the new things I want to learn, and don’t end up polishing and finishing the game for sale. Selling things wasn’t interesting to me. As far as Windows games, I had written Windows software before, and decided OS/2 was more interesting, so I wrote some games for it instead of for Windows. The OS/2 game scene was pretty small; I think the most prominent developer from that world was Stardock, which now produces Windows games and utilities.

Unlike SRE, which seemed to be on almost every BBS I called, I don’t remember ever coming across your other BBS door game, Planetary Conquest. What ideas were you trying to explore in writing it?

The objects in SRE are of a “continuous” nature. You might have 1000 planets or 1001 planets but that’s not that different. I had several projects in which I wanted to explore “discrete” objects, where each individual object was unique and important. To do this I had to keep the number of objects small. When you have 1000 planets you’re not going to give them names or manage each one of them. If you had 5 planets you could. Civilization is an example of a game where the number of objects (armies, cities, workers, etc.) is small enough that the player can keep track of them all. Planetary Conquest drew inspiration from Chess — a finite board, a finite set of pieces to move around. The Silver Kingdoms (never released) had names and characteristics for every town, and it really mattered what you did with each.

The other thing I wanted to explore was variation through the environment. With SRE, the game starts out the same every time. There are some minor changes from random events but for the most part, the variation comes from the behavior of other players. After a while if players settle on a particular strategy, and the next game plays out much like the previous one. With Planetary Conquest, there could be variations in game pieces and maps, and that variation was intended to make the game interesting each time.

On the UI side, I wanted to explore a screen based game that used arrow keys, instead of a line-by-line based game. Planetary Conquest was that experiment.

I never gave Planetary Conquest enough time. SRE became better over time because of constant feedback and iteration. Not so with Planetary Conquest. SRE had more users and more feedback, so I spent more time on it, and it kept getting better while Planetary Conquest did not.

You said that selling things wasn’t interesting to you, but still you did sell SRE and Planetary Conquest as shareware. What did you learn from selling and supporting these games?

I learned a great deal by making this a business, and I’m glad I did it! I learned about long term customer support, code maintenance over many years (something very few students get experience with), customer satisfaction, versioning, cheating/encryption, cracks/piracy, marketing, distribution, pricing, and so much more. I also learned that a lot more people enjoyed the game because I sold it than if I had given it away for free. The income and constant interaction led me to spend a lot more time and energy on this project than my others, and in the end it made it a much better game.

Let’s talk a little bit about your brother Mehul and SRGames. Was SRGames basically his gig, or was it more of a partnership? You have said on Usenet that Alpha Colony VI and BRE were based on SRE, so I’m curious: how much did you contribute to his projects?

Without Mehul’s initiative there wouldn’t be SRGames. It was a partnership. It started with me handling the technical side (writing SRE) and he was the business side (ran the BBS with downloads, games, and support). Later we each did both technical and business aspects. He wrote his own games, and I provided support and libraries. SRE was my C++ code, both infrastructure and game. AC6 and BRE were in Turbo Pascal, using infrastructure code I wrote for modem communication, bbs interfacing, UI/menus, messaging, inter-bbs communication, fidonet, encryption, and a few other things. Mehul wrote the game code on top of my infrastructure libraries. I also provided some of the support for his games. And I gave out some of the infrastructure libraries for free so that others could build games with them.

Do you recall how many registrations you sold during the years you supported your games? Is there any way to estimate how many total copies were in the wild, registered and unregistered?

I don’t know for sure but I know SRE plus my other jobs paid for my tuition (but not room and board), so my guess is at least $6,000 per year over four years. That’d come out to over 1500 registrations. That’s nothing compared to today’s games, but you have to keep in mind that individual players didn’t register, but instead a BBS sysop would register once, for the hundreds or even thousands of players who played there, and that one registration lasted forever, for an unlimited number of games. Mehul’s side of the business (which he continued many years after I stopped working on BBS games) was more successful. I really have no way to know how many copies there were in total but I know there were many cracks, including one I now offer on my web site for people who still run SRE.

In 1996, you suffered a hard drive crash and could not recover your SRE source code. Was that a tough loss for you?

It was in some ways but wasn’t in other ways. Yes, I was unhappy, but it also happened late enough that I had moved on from SRE, and it didn’t have nearly the effect that it would have if I had lost it a few years earlier. By then I had new projects to occupy my time.

You told Matt Hackett on Twitter that, after taking “a detour in life” where you didn’t make games for 15 years, you were now trying to get back to games. Can you tell us about that “detour” period of your life?

As consoles and big budgets became more prevalent, I grew discouraged by my chances to make interesting indie games. I have a wide range of interests other than games, and I decided to pursue some of those other interests for a while. Recently, web, mobile, tablet, social, and indie games have all made game development interesting to me again, so I came back to games.

You worked at Google, and I have always assumed you were the Amit Patel credited with coining the motto ‘Don’t be evil.’ Was that, in fact, you? How about sharing an office with Eric Schmidt ?

Yes, those were both me. The best writeup of those two stories is in Steven Levy’s ‘In the Plex’.

What are you up to these days?

As much as I’d like to write games, I’m even more interested in helping others make games. There are lots of people looking at online education (Khan Academy, Coursera, Udacity, Class2Go, EdX, TEDEd, etc.) but most of them are looking at the classroom format, with video. I’m instead looking at text, hypertext, and interactive diagrams for the game development tutorials I’m writing. Bret Victor’s work at Worrydream.com is most inspiring. I find that text works much better for me than video that I have to fast forward and rewind, and interactivity helps me actively “play” with a system to learn it actively instead of merely passively receiving instruction. By combining the random access nature of text and the self-directed exploratory nature of play, I hope to make my tutorials much more effective than text or video alone.

Related entries you might like to read:

5 thoughts on “Amit Patel, creator of Solar Realms Elite

  1. D Adams

    Great interview! I grew up running my own BBS and running SRE/BRE. Were the most popular games on my BBS at the time. I learned so much about computers back then. I’m now making a living with computers. Don’t think I’d be doing this if it weren’t for BBSes to be honest.

    Great work, keep it up!

    Reply
  2. Amit Patel

    Hi Mindless Automaton,

    I love Dwarf Fortress! I love the open ended problem solving. I love that each world is different (geography, history, flora, fauna) and you have to design something to fit into it. I love that it goes back and forth between planning (hey let me build a canal) and reaction (eek! there’s a raiding party) and back to planning (hey let me build a pump stack) and reaction (oops! mining candy opened up a chimney to hell).

    I feel like there are multiple games in there. There’s The Sims aspect, where I get to play with all the dwarves, giving them rooms, clothing, jobs, etc., then watch a tantrum spiral wreck the house, then try to repair it. That’s the game where each dwarf’s history and personality and relationships are interesting. But there’s also the Tower Defense aspect, where I get to play with the fortress, designing the layout, defenses, traps, etc., then watch an invading army try to get in, then try to upgrade the defenses. That’s the game where each dwarf’s history and personality is not so interesting. And there’s the SimCity/Settlers aspect, where I get to design the layout, workshops, stockpiles, etc., then watch the dwarves scurry about, then improve the efficiency. That’s the game where each dwarf’s skills matter. And of course there’s also adventure mode.

    Any of those could be a fantastic game, but DF puts it all together. I find it crazy impressive and inspiring.

    I’m still a newbie but the thing that bugs me is the interface. Ascii? I can deal with that (although I use tile sets). Keyboard? I can deal with that. But inconsistencies bug me. Things like: why are some regions specified by marking corners and others specified by growing height/width? Why are the rules for construction almost the same as the rules for digging, but slightly different? Accessing information bugs me. Things like: how do I spot traffic problems? how do I see what everyone’s doing? how do I find out what’s going to bother my dwarves? Sure, tools like Dwarf Therapist can help. I feel like each of the subgames inside of DF probably needs its own UI. The level of detail bugs me too. It doesn’t scale well. With my initial 7 dwarves I can track them all; waves of immigrants make it unmanageable. Each subgame needs different subsets of information, and the interface you want to deal with 7 is not the same as the interface you want to deal with 100. Tropico and Civilization have this scale problem as well.

    What C++ is to programming languages or Emacs is to text editors, Dwarf Fortress is to games. Incredibly powerful. Has a bit of everything. Lots of dark corners. Has scaling issues. Not everything fits together. Arcane. I love Emacs. I love C++. And I love Dwarf Fortress. :-)

    Reply

Share your thoughts!