Interview with Amit Patel, Creator of "Solar Realms Elite"
Hacker News

Interview with Amit Patel, Creator of "Solar Realms Elite"

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. Do you enjoy my retrocomputing interviews on Break Into Chat? Please join my email list and stay in touch. šŸ“¬ 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

Read on Hacker News ↗ ← Back to News

Comments

No comments yet. Start the discussion.