I imagine for players of a certain age (like me), there are older games that serve as touchstones for our entry into IF. The Infocom games are likely examples. I played Adventure on the mainframe of the car dealership where my mother worked, and the library in my elementary school had an IBM PC it really didn’t know what to do with. But over the lunch hour sometimes my friend and I would commandeer it and play Scott Adams’s Pirate Adventure which was inexplicably installed there.
My true touchstone, though, is another Scott Adams game, Return to Pirate’s Isle for the TI-99/4A, the first computer I was fortunate to have at home. I remember loving the graphics on the top half of the screen and the delight in seeing a new area I was previously unable to visit. The game was largely inscrutable when I was young, and still seems unfair in many ways today, but I spent hours dying and dying again, convinced that I was one secret away from cracking the game open. (I wasn’t.) Still, there was simply an aura of mystery that transfixed me.
So I was intrigued when I came across a thoroughly contemporary engine that seemed to mirror that retro aesthetic. Instead of a quasi-obscure TI game, Chris Ainsley (@adventuron), Adventuron’s creator, was inspired by Quill and PAW games for the ZX Spectrum. Chris says, “Adventuron is unashamedly anachronistic,” and he’s insistent that there’s a difference between text adventures and interactive fiction (and he prefers the former). My understanding of his definition of text adventures is that they feature fairly terse room descriptions and a variety of objects to solve dry-goods puzzles. I saw possibilities beyond the text adventures of yore, and in this post I want to encourage others to check out Adventuron for further writing of text adventures and/or interactive fiction.
Adventuron has had a good year, including a XYZZY Award for Best Technological Development and strong placings in ParserComp and IFComp. In terms of parser games, I think it’s got several advantages over Inform that might convince others to try the system.
1.Graphics and text. the defining feature of Adventuron is its inclusion of graphics. Every room can have an illustration which can be updated at any time. I used this trick in Dream Factory: in the dungeon, when you take an item, it’s immediately replaced by a new graphic with the item now gone. Graphics can appear inline as well—in Dream Factory, the map in the brochure is an example. Including images is intuitive and only requires a place to host them—locally or online—for testing.
The background and text colors are immediately accessible. Adventuron uses the terms “paper” for the background and “pen” for the text, with predefined colors as well as the ability to choose your own via hex codes. With an online Inform game, you often need to be willing to muck about the generated CSS of Parchment, and even then the formatting won’t necessarily carry over to other interpreters. Yes, there’s Vorple, which is more flexible, but again it requires CSS styling that’s sometimes opaque. Adventuron makes what it calls “theming” simple. And personally I love Adventuron’s special rainbow style of text, which is used heavily in Dream Factory for the names of the spells.
Adventuron comes preloaded with a few different fonts as well, and it’s relatively simple to define others. Dream Factory uses replicas of Sierra point-and-click fonts as well as one that’s more derived from the ZX Spectrum.
I tried to use all of these visual tools in a way that might be impossible in other systems. The game’s three main locales (overworld, battle, and dungeon) have markedly different designs. The final scenes leading to fighting the Boss does even weirder things with images and color to represent the disintegrating Dream. Even though the designs are dissonant side by side, I hope they visually communicate both locational and emotional information in a way that text alone might not.
I worried a lot about the game’s graphics because I’m terrible at creating visual art. There are members of the Adventuron community who can draw beautiful pixel art—Present Quest by Errol Elumir was a finalist for a Best Use of Multimedia XYZZY Award last year for this reason. During the COVID quarantine period, my family and I would go for a walk every day. As summer gave way to fall, I was able to appreciate the rural landscape in which I live. (Dud’s and Uncle Carroll’s houses are a short walk away from mine.) So I took a bunch of pretty pictures of autumn leaves and thought it was enough to convincingly portray a fantasy world. I was also happy to be able to mark the changing of the seasons by visiting the same places after a snowfall and trying to take exactly the same pictures of key locations. I thought it might be a nice surprise at the end of the game (accompanied by yet another background and text color shift).
I spent a lot of time blurring and pixelating the images until they looked approximately like poorly digitized ones of a bygone era. Several reviewers said they found them to be attractive. So, my message to anyone who’s like me and fears the graphical side of things: cheat by taking pictures! I used a basic image editing app on my computer, but there are also some good iOS ones that can turn pictures into fairly authentic-looking facsimiles of old computer images. I didn’t discover these until after the fact, but I’ve downloaded Retrospecs and Pixel Art Cam, and they both seem like they’d be great for Adventuron graphics. I also did a ton of searching to find CC-licensed images, most notably the cosplayers who make up the game’s NPCs. There’s enough free-to-use imagery out there for virtually any setting if you search hard enough.
2.Modern tools. These might be small things, but the the Adventuron IDE is simply pleasant to work in. It’s purely online and features modern conveniences like syntax highlighting, automatic error checking, and a dark mode. The middle item is particularly helpful—you can catch small errors right away, rather than waiting for Inform to spout error messages upon compiling.
More importantly, a compiled Adventuron game is natively HTML5. Despite its anachronistic roots, Adventuron produces games that are more easily played today, as the Web has become the standard interactive mode for seemingly everything. Mobile support is included in Adventuron and can be tweaked at will without CSS. The game is a single HTML file with the interpreter built inside of it. All it needs is links to other assets such as graphics. The game can live online but can also be built to be downloaded and run locally in an offline browser. Overall, releasing an Adventuron game feels less fiddly than publishing a website with Inform.
3.Text matching. Admittedly, Adventuron’s parser is less developed than Inform’s. It operates on basic text-matching, where it searches first for a verb that it knows, and then for a noun that exists somewhere in the game world. This can quickly get into problems with scope. But text matching also can be a powerful tool. It’s trivial to define new verbs and only slightly more difficult to override the entire parser. Those verbs can be location-specific as well, preventing the need to anticipate every single potential use of a new command. It can only work in the place you say it can—very helpful for the command SWIM, say.
In Dream Factory, there’s a sewer pipe you can enter, and the fact that you can crawl into it is strongly clued. There are conceivably a number of things a player might type: CRAWL IN PIPE, CRAWL INTO SEWER, ENTER PIPE, CRAWL, GO PIPE, and others. In Inform, this might have to be covered by a variety of instead rules and verb definitions: “Crawling is an action applying to one thing …”, except CRAWL by itself is also reasonably logical. In Adventuron, the code is
: match "enter _; crawl _; go sewer; go pipe; climb _; down _", where the underscore is a wildcard—you can have anything there or nothing at all. Sure, this means a player could type CRAWL XYLOPHONE and the command would work, but no one is actually going to try that (except maybe you, dear reader, now that you know it can be done!). Text matching can be a great way to try to catch virtually any command that a player might expect to be successful.
The battle scenes in the game override the parser entirely, only allowing for the three verbs ATTACK, PARRY, and SPELL. Again, all of this is possible in Inform, but it feels much easier to orchestrate in Adventuron.
4.Multiple choice. O Hybrid Choices by AW Freyr, I love thee, but thou art at times a difficult master. Multiple choice is handled much more elegantly in Adventuron (or at least it feels that way). You list possible options, tell the parser to ask the player for a choice, and then run code based on the option chosen. For Dream Factory, this typically meant setting a particular Boolean variable to true, then running some code based on that. You can print text and change the game world as you can anywhere else in the code. This approach to conversation works equally well for linear, branching conversations as well as menu-based ones.
A final feature not inherent in Adventuron itself but still immensely valuable is the Discord server. Chris is active there, as are a group of dedicated game makers. If you’ve got a feature request, Chris will consider it—Adventuron grew a lot in the months I was making Dream Factory. And he and the many others are willing to help out with questions and code.
As with any new system, there are drawbacks, of course. As I said, the parser isn’t as strong as Inform and sometimes struggles with scope. There are no containers or supporters (although I coded a bottle that could be filled with two different things). Adventuron uses the RION data format, which apparently is similar to JSON and is enamored with seemingly endless punctuation requirements. And some basic things like manipulating variables seem needlessly wordy and complex, though not necessarily any wordier than writing sentences to handle them in Inform. However, if a game can train a player that VERB NOUN is really the only way to interact with it (my HELP command strongly suggests this), a lot of the parser problems disappear. With some creative text matching, they can vanish nearly completely.
And of course, none of this is to diminish the amazing quality of Inform and the many, many things it does excellently. It remains the gold standard. But of the other possibilities for writing a parser game, Adventuron is the most exciting to me for moving the genre of IF forward.
So, enough proselytizing! I encourage you again to check Adventuron out—I think it opens up new possibilities to make text-based games look and feel more modern, despite being based on a decades-old approach of presentation. And it opens up a realm of visual communication that’s probably more appealing to a general audience today than a text-only game might be. (Adventuron also supports audio clips and soundtracks, another intriguing area of exploration.)
If you’d like to dig in, I’ve put the Comp version of my source code online. It’s 62k words and probably commits many programming sins. I learned Adventuron as I went along, so I guarantee not everything is as efficient as it could be. But hopefully it might give someone the general idea of how to lay out a large project like this one and maybe some specific ideas of some coding hacks along the way. If you’re excited by the prospects, definitely join the Adventuron Discord server as well.
Dream Factory is my quarantine game, and it was engaging and challenging to build it in a new system. It was weird how nostalgic I felt for making it when I took walks this autumn through the same woods, past the same houses and rusted-out truck. I’m very grateful for my beta testers and the feedback I received from the community during the Comp. Thanks to everyone who played, rated, and/or reviewed the game, and thanks for reading!
(And of course, I’m happy to talk more / answer questions about Adventuron or the game!)