The looming future.
Star City is an interactive fiction game written using Inform 7
(The following article describes Star City's development process, so stop now if you don't want to be spoiled!)
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.
and playable on any platform that has a Z-machine interpreter.
It can be downloaded from the IF-Archive here.
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.
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...
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.
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.
-- Mark Sachs, 3/6/2007