The looming future.
An Earth struggling with the aftermath of alien occupation.
A huge, mysterious object is detected approaching our long-suffering homeworld
and your mission is to uncover its secrets.

Star City is an interactive fiction game written using Inform 7
and playable on any platform that has a Z-machine interpreter.
It can be downloaded from the IF-Archive here.

(The following article describes Star City's development process, so stop now if you don't want to be spoiled!)

Welcome to Star City

Star City's genesis actually reaches back to some ideas I played with around several years ago, when I had a brief fling with level editing for Quake II. I'd pictured a scene where the player would ride a tram through the rotating habitation cylinder of a space colony. Part of the way through the tram would break down, requiring a harrowing climb through the hub's superstructure to survive. I still have the Q2 map with the rotating cylinder and the tram, which looked surprisingly good considering the relatively primitive technology of the time.

In 2006, I played a bit with the "Hammer" editor for Half-Life II, and toyed with the idea of bringing the space cylinder into the modern era. I pictured an exploration-based level, where Dr. Kleiner sends Gordon up in a borrowed Combine space shuttle to investigate an enormous satellite drifting towards Earth. Trying to think of a dramatic (even if somewhat historically implausible) origin for the satellite, I came up with an antique space colony, secretly built by the Soviet Union. Gordon would have to power up the satellite, go on the ride through the habitation cylinder, go down to the surface, then make his way through the city streets of the colony to discover its Dark Secret -- whatever that was -- before a dramatic last-minute escape in an old Russian space capsule as the colony re-entered Earth's atmosphere and burned up.

It was at about that time that another of my old interests unexpectedly returned from the grave.

The Return of the King

Most people around my age are familiar with the Infocom text adventures, which reached their height of popularity back in the 1980s advertising that the images your imagination could create were far superior to those that could be displayed onscreen by a Commodore 64 or 8088-based IBM PC. Infocom's technology was far in advance of all other text adventure systems at the time and the company had a good run, releasing classic adventure games in all genres including science fiction, horror, mystery, and even romance, before foundering in an ill-advised attempt to enter the business software market. This ended up being interpreted by the market -- perhaps not inaccurately -- as a message that the text adventure was dead, and soon enough they were gone from the shelves.

However, text adventure fans were, much like the partygoers in Douglas Adams's Life, The Universe, and Everything, unwilling to admit the party was over and willing to expend a lot of energy to make it continue no matter what. Some of those fans reverse-engineered Infocom's Z-machine format, some wrote new interpreters for playing the old Infocom games on computers that hadn't existed in Infocom's heyday, and soon Graham Nelson, a British mathematician and classicist, had written the first version of Inform, a compiler which could take an entirely new game written in a somewhat eccentric language he'd designed and convert it into the Z-machine format. Inform exploded in popularity and, with its advent as well as that of competitors such as TADS and ALAN, a new golden age of text adventures started, with modern-day "Implementors" creating games that rivaled and eventually exceeded even Infocom's masterpieces.

Nelson left the text adventure scene for a while after creating the "final" version of his compiler, Inform 6. However, last year he reappeared on the scene. Working together with his equal collaborator Emily Short, Nelson had been secretly developing a new version of his system: Inform 7. Inform 6's flaw has always been a level of inaccessibility which is unfortunate for a medium that prides itself on appealing to writers, not just generic computer nerds, and Inform 7 was designed to address that in every possible way. I7 added a highly sophisticated IDE on both Windows and Macintosh with integrated functions for replaying and debugging the game as well as a specially-designed editor and detailed built-in documentation. The new version of the language itself was a natural language system which the IDE would preprocess into Inform 6 code and then run through the battle-tested I6 compiler. The result was a system that was easier to install, easier to dive into and didn't require a lot of computer neepery to run; and while the natural language system is, like all NL, much more like a quirky version of COBOL than it is plain English, it still makes the basics of text adventuring much simpler and is generally a pleasure to work with.

I'd played with I6 back in the day, about five years ago, but ultimately even for someone with a degree in computer science it was a bit more of a hassle than I could deal with -- especially given the busman's holiday nature of the whole thing, where I was already spending all day coding at my job and the idea of going home to write more in a C-like language wasn't as appealing as it could be. I7, whatever its eccentricities, was as far from writing C++ in Visual Studio as it was possible to get. It instantly attracted my attention and wedged itself into the space where that Half-Life 2 mod had been. So on May 15, 2006, I fired up my iBook, opened Inform 7, and began to write the intro:

It's a great time to be alive! And it's all the sweeter since "being alive" isn't a description that could be applied to the thirty percent of humanity that died under the multi-decade Gloss occupation of Earth, or the further fifteen percent that died in the process of flinging the nasty drippy alien conquerors off the planet again. Too bad for them, but for the fifty-five percent who made it through things are definitely looking up.

Things are especially looking up for you. Examining some recovered Gloss space radar records, you found that the invaders were tracking an object moving on a long orbit around the Earth-Moon system: a giant object fully a kilometer across, an undoubtedly artificial object. The Human Navy is quite busy just now, so you selflessly appropriated a Gloss spacecraft from the ruins of their Berne fastness and headed out into space to investigate this dangerously lucrative threat to humanity. Once the rest of the world has pulled itself together enough to have an economy again, you're going to be on easy street for life.

All you have to do is figure out what, exactly, this mystery object is...

What Went Right

1. Stuck to a schedule. When there isn't anyone looking over your shoulder and tapping their watch impatiently, it's easy to let a personal project slide -- a scenario I'm all too familiar with from many of the comics I've worked on. In my case, I was fortunate to discover that the annual Interactive Fiction Competition was still running and its deadline was September 30th, 2006. This gave me a generous but rock-solid target to shoot for; the IF-Competition is completely unwilling to wait for laggards, so if Star City was going to enter it had to be done on time. As well, the competition is oriented towards shorter works, with an ideal play time of two hours or less. This in turn encouraged a disciplined approach towards writing and, more importantly, designing the game.

2. Cut early and with confidence. The original design of Star City included several puzzles that ultimately did not make it into the game. They included a dynamo area near the solar furnace, a more intricate city area with a capital building to find and explore, and the climb through the habitation cylinder's superstructure after the tram breaks down and strands the player in the middle of it. Very early on, I was able to realize that these puzzles were too nebulously designed and did not fit well with the narrative structure of the game -- as well as, in some cases, making the code more complex. Despite their appeal, they had to go. Some were cut entirely, such as the dynamo and the hab cylinder escape; others, such as the city, were reworked into simpler areas that still ended up far more suited for their role in the game. A major side bonus was that by cutting nonessential material at the start of development I didn't find myself scrambling to cut vital material at the end.

3. Had good tools, but also knew when to say when. It bears repeating that Inform 7, being purpose-built from the ground up for interactive fiction, was a far better choice for developing an IF title than almost any other laanguage. Its IDE, although not without faults, eliminated much of the drudgery of testing the game and organizing the source code. Even if I'd been using Inform 6 I probably wouldn't have been able to accomplish everything in time. However, Inform 7 was (and at press time still is) a beta product. Language features are still evolving even now, and Nelson and Short explicitly do not guarantee that existing source code will always work. About a month before the deadline, a new version of I7 came out which Star City did not compile under. Rather than go through the steps of making it compile and then picking out any mysterious new bugs, I broke away and stuck with the version of Inform I'd been using previously. Although I missed out on some bugfixes and new features, this was still the best choice with the impending deadline in mind.

What Went Wrong

1. Did not design to the engine's strengths. Having just re-discovered Inform, I was enraptured by the idea of implementing many of my undeveloped game ideas using interactive fiction, including such dubiously plausible genres as space simulations and platform puzzle games. To that end, the final puzzle of Star City would be nothing less than a miniature flight sim, implemented in Inform 7. Using a control stick to adjust a space capsule's attitude and roll, and therefore indirectly its altitude and airspeed, the player had to successfully execute a landing at a particular speed and approach angle. While implementation went as well as one could expect considering that Inform is a text-based system with rudimentary math capabilities at best, this puzzle turned out to be deeply unpopular with players -- it was effectively endless, repetitive tweaking of a static, sparsely described scene, with rules that weren't immediately obvious to the user and an excellent chance of putting the game into an unsolvable state by, for example, gaining too much speed in a dive to pull out in time. While I consider this to have been a valuable learning experience, it's clear that veering too far from the engine's core competencies is a risky endeavor.

2. Needed more testing. Due to the short development period, Star City had about a week and a half of beta testing before it was submitted. I issued a call for volunteers to beta-test the game and several people expressed interest, but due to the narrow time constraints only two were able to help out in the end. Fortunately these testers were talented and dedicated, but -- especially in interactive fiction, which depends so heavily on accomodating different players' idiosyncratic demands and play styles -- it still would have helped to have more eyes on the final product.

3. The story should have been more firmly established at the start. This may sound kind of odd, as the game's structure -- the approach to Star City, restoring the power, riding the tram across the station, descending to the surface, finding the target apartment in the city, escaping from the city, then returning to Earth in the M-48 space capsule -- was nailed down very early in development, as was the background of the Gloss occupation and for that matter the secret origin of Star City itself. But the one loose end was the protagonist's motivation. The blank-slate hero is frequently seen in interactive fiction, as many games prefer to let the player define his or her motivations rather than impose one the author chooses. Star City, however, clearly begins by implying that the hero is an unscrupulous scrounger and black-marketeer who has decided to try to plunder this mysterious visitor to Earth. Given that, the hero's evolution by the end of the game into somebody who escaped Star City with nothing but knowledge and is happy about it doesn't quite ring true. I belatedly realized that a few tweaks would imply that the "lucrative" reward the hero was seeking at the beginning of the game could very well have been knowledge, but by that time it was too late to rejigger things and make it still work.

End The Game

Star City was finished at the end of September, 2006 and received 13th place out of forty-three entries in the 2006 Interactive Fiction Competition. It was also nominated for Best Setting in the 2006 XYZZY Awards. Considering it's my first completed work of IF ever and that the heavy hitters of the field regularily enter the competition every year, I'm satisfied with this as a starting point. I'm currently working on my next IF, a longer work tentatively titled Golden Age. It won't have any flight simulators in it.

-- Mark Sachs, 3/6/2007