Four cheers for Adventuron! (with a soupçon of Off-Season at the Dream Factory postmortem)

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!)


Great write-up!

I absolutely find Adventuron more intuitive and easy to use than Inform, but I’ve always wondered if that’s just because I started out in Adventuron and have had that as my comparison base when trying to learn other systems. It’s interesting to hear the perspective of someone who knew Inform before trying Adventuron.

I firmly believe all parser issues can be managed by the author in Adventuron, but sometimes it requires a bit of thought. (Conversely, I sometimes find it frustrating when the Inform parser automatically does something that I don’t want it to do!)

In addition to the _ wildcard, there are also - (matches only when there is a single verb, no noun) and * (matches only when a noun is provided).

I’ve also developed a bit of an unlikely graphics creation hobby due to Adventuron! (And also an unlikely soundtrack creation hobby as you can add music…) I’m not a natural artist either but it’s a lot of fun. I really liked the graphics in your game.

Indeed, I loved Dream Factory in general and I’m so glad it did well. Looking forward to seeing what you do with Adventuron in the future :slightly_smiling_face:


As a very early “2018” user of Adventuron, it’s great to see some of the work now being produced with it. It must be lovely for Chris to read such a nice write-up like that, after spending so many hours developing the system.


Great write-up and nice to hear it’s not just some peculiar personal aberration that makes me like Adventuron so much (unless you’ve got it too).

Off-Season at the Dream Factory is a great example of what the system is capable of, in the right hands.


Actually, there are! But it’s a bit of a faff to get them working.


I really enjoyed reading this, probably because most of your analysis is spot on. The three limiting factors in Adventuron that you aluded to are the scoping issues, the clunky parser and the lack of proper containers and supporters. With a bit of experience and a little effort, you can work around all these issues. As proof of this, see Santa’s Trainee Elf. @adventuron has plans for improvements in these areas, so that’s something to look forward to in future.

One thing you didn’t mention is that you don’t have to host your sound and graphics files on a web site. If you’re happy to use old-school chip tunes and pixel art, they can be embedded in the compiled html file. In this way, the entire game (interpreter, game data and media) are all contained in a single file. All the early Adventuron games used this technique and the brilliant Cryptex Jam games from earlier this year showed just how fantastic these can look, thanks to the very talented @Errol.

Oh, and you can also use Google fonts. You can’t do that in Inform without a lot of faffing about with html and css, assuming you can do it at all.

For me personally, I still prefer Inform 6 (I hate Inform 7), but for games with graphics, I’ll turn to Adventuron. And when it comes to publishing your game so that it can be played in a browser, Adventuron wins hands down!


Thankfully it got really easy to publish games for a number of systems when opened earlier this year.


Wow, how to follow all that?

I really have been so busy this last 6 months that I didn’t really pay that much attention to what was going on in the Adventuron community. I kind of assumed when I stopped hosting the Adventuron jams (more of a hiatus really) that it would disappear and be consigned to the scrap heap.

I’m really happy to see how people are working around the (considerable) limitations to produce games that other people enjoy to play.

Weirdly enough, I was happier with earlier versions of Adventuron, not because they were better, but because I was aiming lower and I thought it did what it was meant to do with limited bloat.

These days Adventuron is dangerously close to be a competant general purpose IF (and TA) engine, but it’s not there. I’m aiming higher now, and not succeeding as much as I would have hoped. Clever authors can and do work around the weak points, as documented in this post, but it pains me to see the pain that the system is generating. Verb noun games are a pleasure to write in Adventuron. Inform-esque parser games are a real pain to write. And it’s not something I feel good about at all - even when the results are good - especially when the results are good.

A couple of things I’m proud of about Adventuron though are:

  • The choice commands. I really lucked into a great design here. It wasn’t anything conscious. Just a lot of experimentation and a lot of bad designs unseen by anyone else (you’ll find undocumented experimental commands littered across Adventuron all over the place). Anyway, these experiments graduated, and I do think that Adventuron allows for a lot of innovation in parser + choice gameplay. It’s very ergonomic (imho).
  • The iteration commands. This was a recent addition - added this year. It’s just nice to be able to iterate across categories of things, and to run filters across the iterator. It feels very modern to use. At least for me.
  • String templates - They are really powerful, and even I am surprised at how some users use them in unexpected ways. It creates a lot of opportunity for dynamic storytelling (if your game is IF) in a game.

Adventuron is still very much a work in progress, a work in progress whose development has slowed down a lot recently. My passion for the project remains high and I’m motivated to reduce author pain, and to deliver a stable version of Adventuron that I myself am satisfied with.

It’s not there yet.

Well done to @bjbest60 and all the other wonderful supporters of Adventuron. I really had a feeling it was over, so it’s such a nice feeling to read the nice comments and see that people see the good in amongst the bad.