Official Blog of the Adventuron Text Adventure Creation System

Saturday, 29 December 2018

Choice-Based Adventuron (CBA)

Gamebook Mode

The graphic in this demo is the kitchen from "Bonnie the Bonnie dog" tuturial adventure (bundled with Adventuron).


Adventuron was originally envisaged as a gamebook / choice-based IF engine but it seemed like it was a better idea to start with the more complex problem first.

Thus, the first release of Adventuron was a parser-based release, but from the earliest release it had a hidden "game_type" flag embedded - not that it did anything but complain at a missing implementation.

In hindsight, with the popularity of systems such as popular choice-based IF systems, that it was perhaps not the wisest of decisions to focus on the lesser-loved parser-based text-adventure side of things.

Even though perhaps it wasn't the right move, I am extremely happy with how things have turned out, and to have fulfilled one of my life-goals in the process in delivering the remaster of The Beast hosted in my own engine. And I also think that there are more innovations to come in the field of parser-based text-adventures.

The crunch period leading up to The Beast (30th Anniversary Edition) led to me refining the list selection widgets, and with those widgets developed, it was finally time to focus on writing the gamebook event loop (which is now working).

Outstanding Tasks

Even though the gamebook mode is working, there remains a large set of housekeeping tasks that I would like to take care of prior to release.

It's no good if it works but is a pain to program, so I'll be working on reducing the amount of typing necessary in the normal flow of coding.

The markup notation must also be able to serve all different modes, and to embed lots of different classes of information. There are additional UI components to develop (such as status screen(s)).

There are also plans to integrate a conversation system.

Choice Based IF Criticisms (versus parser based IF)

The skills required to develop an engaging gamebook style adventure are completely different to the skills required to develop a fun text adventure.

At the low end, it's possible to develop games where to win the game all you have to do is exhaust every option.

Really good IF doesn't involve sitting in a location, and being able to select every option. The plot should move forward from each choice and the story should be dynamic based on prior choices.

This style of choice based IF is very different to the typical 8-bit text adventure style of games that has been the bread-and-butter of Adventuron, but I believe a well designed game, will stand on its own two feet as a compelling experience.

My hope is that good games will rise to the top (I don't represent any of the two tech demo videos shown here as GOOD choice-based IF).

Why Choose Adventuron for Choice-Based IF?

Adventuron has a lot of features not typically seen in choice based IF systems, which, if used creatively, could make stories a lot more dynamic and engaging.

Adventuron is good at some things, less good at other things, but if it suits your design - give it a go. Adventuron is just another choice.

When is it available?

The public release of Adventuron 1.0 will be available in Q1 of 2019. If you want to try out the private beta in the meantime, please follow @adventur_on on twitter and drop me a DM.

Social Media

Facebook Page : Adventuron
Twitter : @adventur_on

Wednesday, 19 December 2018

The Beast of Torrack Moor - 30th Anniversary Edition

Announcing the release of:

For the past few months, I've been working (part time) on an Adventuron port of one of my favourite games from the dawn of the twilight era of 8-bit text adventures.

The Beast is the simple tale of a junior reporter, investigate sightings of a wild beast in the moor adjacent to a local village. 

The Beast is a game of three acts, the first being to make your way to the village. The second act is the investigation / preparation section of the game, in and around the village of Puddlecombe-by-the-moor. The third act is an adventure on the moors.

The video below is a solution for the first act. Only watch it if you are sure you won't play the game, as there  are spoilers:


The original version of The Beast was released in 1988, by Linda Doughty, for the ZX Spectrum 128K. It was originally published by Marlin Games, then later released by Zenobi Software.

It is a quintessentially British text adventure. Developed by a Brit, on a British home computer, manufactured in Britain, using a British Adventure Creation utility, set in England, and features tea shops, pubs, village greens, baked beans, and a lot lot more.

Linda self-published her games, as was rather common back in the 80s, and she used the PAW adventure creation utility to create her games. What's quite different about The Beast is that the narrative is front and centre, with Linda skillfully stage managing the npcs movements and behaviors throughout the fictional day.

Linda also created a handful of graphics for The Beast, so technically she could have called it a illustrated text adventure, but Linda is a very honest person, and obviously believes in truth in advertising, as demonstrated in the advert below.

The game received the coveted "Crash Smash" award in the Christmas 1988 issue of Crash. Your Sinclair was slightly less kind, but it was off the back of the YS review, that I put my money in an envelope, and I came to be an owner of The Beast.


This 30th Anniversary version attempts to hold onto what was good about the game, whilst making the process of playing the game as pleasant as possible for modern players.

The visuals and typography have been tightened up, and there has been a lot of work expended on just getting the "feel" of it just right.

This version of The Beast is also made with permission from Linda, and I hope that I've done a good just with respecting her legacy.

There are some changes, but edits are there to help beginners, or to make the game a little bit more accessible.

A huge thank you to Andy Green for his superb artwork, as well as  Paul Van Der Laan, Eeve Somepx, and Pentacom, for their excellent fonts.

The Itch Page has far more detailed information on the project, and I don't wish to repeat myself here, but here is what you can expect from the beast:

There is more information / waffle, on the Itch page.

(1-bit graphics by Andy Green).


  • FREE - Absolutely no cost.
  • CHOICE OF STYLES - Multiple skinning options, including several "retro" skins, and the ability to use modern truetype fonts.
  • NEW ARTWORK - Addition of new retro-style artwork from the wonderful Andy Green. Andy spent a great deal of effort crafting dozens of incidental graphics, a brand new loading screen, and a brand new end-game graphic. (NOTE: Where it made sense, some of Linda's original in-game graphics remain) .
  • TIMETABLE COMMAND - The 30th anniversary ships with a command (TIMES) that will summarize all schedules learned in the world of the Beast so far.
  • WHERE COMMAND - Keep track of (certain) NPCs using this handy command.
  • NEW FONTS - Fantastic fonts by Paul Van Der Laan, Eeve Somepx, and Pentacom, as well as support for system fonts.
  • ADAPTIVE UI - The game adapts to screen size, and will re-format content depending on the device type / screen resolution / screen orientation. ** NOTE : has temporarily rendered the game unplayable on mobile, but I am hopeful for a quick resolution.
  • SUBTLE REFINEMENTS - Bugfixes, and enhanced usability features (such as click to navigate in some skins).
  • BLIP HEAVEN - If you love blips, you got blips. If you hate them, switch them off.
  • MODERN DEVICE SUPPORT - Modern device support via HTML5 technologies.
  • NOT EMULATION - The game has been ported to a new engine that is free of the limitations of emulation (such as being able to have an adaptive layout depending on device type).
  • TOUCH UI - The first release ships with a basic touch event handler. Touch a noun to append it to the command line. Touch a direction word to move in that direction. Long press a noun, to submit an examine command.
  • AUTO-SAVE - A revisit to the game page will resume where you left off.
  • AUTO-COMPLETE - Press Tab to autocomplete known verbs / nouns.


The mobile version of the game is not being served correctly via Itch (locked into horizontal aspect ratio). A bug report has been raised.

Friday, 2 November 2018

Cloak of Darkness - 1999

For comparison purposes, here is a port of the hello-world-esque reference text-adventure "game" Cloak of Darkness (by Roger Firth) to Adventuron. Apologies for the poor "art".

A playthrough follows after the source.

start_at       = foyer
intro_graphic  = cod

setup    / dark_expression = is_dark
themes   / theme layout = "H LG D O" ; // We customize the layout to remove automatic exit listing
integers / message_tidyness : integer "3" min="0" ;
booleans / is_dark : boolean_dynamic {(is_at "bar" && is_present "cloak" )} // dark if at bar with cloak present (worn or unworn)

rooms {
   foyer     : room "You stand in the foyer. Exits lead north, south, and west." header="Foyer" ;
   cloakroom : room "You see a hook.\nThe foyer lies to the east." header="Cloakroom" ;
   bar       : room "You see a message scrawled in sawdust." header="Bar" ;

navigation {
   from, direction, to = [
      foyer, south, bar, 
      foyer, west, cloakroom, 

objects {
   cloak   : wearable  "a black velvet cloak" start_at="inventory" initially_worn="true" examine_message="The cloak appears to be light absorbent." ;
   hook    : scenery "a hook" conspicuous="false" start_at="cloakroom" ;
   sawdust : scenery "sawdust" conspicuous="false" start_at="bar" ;

on_command {
   : if (is_at "bar") {
      : match "n _"  {
         : goto "foyer" ;
         : redescribe ;
      : match "examine sawdust; read sawdust; examine message; read message" {
         : if (message_tidyness == 0) {
            : print "The message seems to have been disrupted, you read, \"You have lost!\"." ;
         : else {
            : print "The message reads ... you have won the game !" ;
         : end_game ;
      : if (is_dark) {
         : print "You disturb something in the dark" ;
         : decrement "message_tidyness" ;
   : else_if (is_at "foyer") {
     : match "n _"  {
        : print "You only just arrived, no need to leave now !" ; : done ;
   : else_if (is_at "cloakroom" && is_exists "cloak") {
      : match "hang cloak"  {
         : print "You hang the cloak on the hook." ;
         : destroy "cloak" ;
         : done;

assets {
   graphics {
      cod : base64_png "iVBORw0KGgoAAAANSUhEUgAAAQAAAACgCAIAAABseyVrAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAiOSURBVHhe7dhLluWoDgXQHMhr1vxnVnN4XinFKYKPEDLGNj570chAH4ytW436Q0RERERERERERERERERERERERERERERERERERETq3//9012aSrSNbMRPLm1K9HzZ7B5LA21Zvr20huiBLprUtC2Wxoie4+rRxPRffRBRBOeSvus5/2Hm75Bu8Jyx4w+AbsAfAH0afwD0afwB0KfxB0Cfxh/ARBtc4XOe8802mB65wttv8SGP+mB7jM4et/iKR32tPUZnj1t8xaO+1h6jI7fY4CKf8KhPtc3cbHOR/cmnesLXes6TnLfNRT7hIV9rp6HZ6S77e8jX2mlodrrL/h7ytXYaGrnLNtfZ3EO+1mYTs9l1NveEr7XZxFx3nZ3e0lPI17r3zc59gNtvdNHpt99rW2tea+sU2T/5AGiSLQ2vNf10NJzYk/6z5uW2jjhztBRKh3Rh82/WDWadLn2wdJemu/oVG/3D5xo9D5626JAtDZ9wvg8e5nwrcrn0RRvNw+dKYawtartLCwaFa3Eulgboate9cbtz+FC70IhKyJnQyrGNFuKsdGmMlrno1ds9wyeG29qFB0mwc2z+cpyFpQG6xdxvgI9q9LSjhlhb2e8WdtNs3Vr0x9IA3ev8J0k7YGmsppvQYhe2onbVAQndTEOrVvazpbG/yh1aDR9m9GNkhbI01uZMy3T7t6J21QEJ3UxDWSs76dJAwgjRDfA9RpfW+xglsZBoJfgLu5mGrEm6JKGqm0A3wJfzLK0ZYRTGQgeJVhPswgMSupkGqc2WxtqcabSV1ny09oUROnQLPdH036NQO1QeKKEd4MNXlyb9ZoQOnmg1IdtvpXWdLIzV0lvhq2dLwzVGjhEC5FSXJv2k6R8jwoWHM7X0ITIo5aw4Bwjl2dLwX9VNj1iVOFNL31LOiuxMHKBYtzPPILXhcvoQzEq2NDxDrOfJx4gdSl+EWcHSwDyBzuefJHAo0VVGx3HK7E5pQjSHjGM6keUOtPaHGP2JboCJTJfGfjNCQ+xTiFbDRNpz2U3wm9iKroVPVS7NOG1iq6tNvPjcd0iXkI/kXFrjk9UeSwPPNvFR33XxL+p+ISRkS8MNWbIsjT3e3Kd9190/Z/TzSL5RlSa0ch5u7pO/+lVsCN+jujSpp5WP/TL0ItOf/+0v5PXkA4wuLW4oc5yFzzf9Fnu8lleSV58tjZlDXIYyZUK35C2mX0Qa7vFyXgMv3Xj1RshWti13KMX3sxRet/3GuwktZWG41XfwFS0iL/rSd132v/rEDfAVrSBv+eoXXR6x4FCiDpnCBYNYnrLmXCLLsiksD1p2NFHTmimUU7KD1hxNZFkzhdVT1hxNZFkzhdVT1hxNZFkzhdVTZDNbGiNaY8HYtYYb+2eW9iKKWTBJrf7Vo7HpX1pJFHPpJNnNrzuXaIA9pmFo2+pshIiWmjuL0q3bs5tAtIhnXp3QqtvNk0O0CKY2MJRprSwNtPkzidbBXBrTmeWUS/NM/kyi1TDK/qWVPrEqotUwqdnScMisPkSvxNGn7+J/+4mIiIiIiIiI1uP/k6GPwuhnS8NEGysnPt3BJtGejCnHb6CVQPR63fnGb8BOI3of/2Qj05NM9A5DM41kZz7RC4wONH8DtJXANPM3QJsIjzJ/ALQD/gDouzD9gVEOFxI9BYY4NsfhQqJHwPTH5jhcSHQ/jH54jsOFRDdL5z48x+FCopulsxue43Ah0c3S2Q3PcbiQ6E4yuJjd8ByHCy/1zKeiB8lGJDwx4cJLzXqqB16N5shGJDwx4cJLOZ/KzpEmWLo71awjzneoQtvpne+X3Sp2SakKFF7Nfio89lBadWnquKxPujTDLSs/lgZOyBrK0tge0lul/x4Sq1rAeDAJYeluAvtZgvxZXZrhkBUeSwO/Q7rlk5bEOqTQIe2T/bkJXCl8t3Dh1eTBymdr7aeQ0808eHIAPY0qO1qV5Q/VZqRV1nBbuGf4wuHCBarP5nlgyfFkHu7NFEPJtomtXkBui6W7buHCNcpncz4w0rqZwpM51PBwXbJB+kxp9Q64cOzOrcKsZyutBeWjhZms3N8QmZ7kgyfZ300M5Y82r5Im5/u8zJlrl4XoVl2aZMpKqktTe5CMQvmzazT/YOfb0aqh/NHmVVOavI9cO3DzshA72Ex3ZMl+SzUNm9nScFuWL0tjptF8YeTHWvlLRvuXRk/cR+zmZVW5k7Kj4Mk5oJudn+Wk/7Yh05MMRr6zlaSlSwM9o/mlk+UvFnt3WYmniT9H/zChW6ukGi13qpDWzUwZJQj5l1a6hQvFmdrXG7q8JGcl2Z9VZVXJ08ev2s1zhOR000pGFXraS7NDzjQ5f/qL+S8vmWV+uVPVTXP2cap2k037FE9OlVEV7jkEp4weFCjZh/PyklbNPN/hYEcDWt26p0iCnVNlV8V6BshBQ8eN5m+le3O8nVaaEUp5mrSiAa1u3YO6CS0XtRWj5ch3VjnTNmTcXEJYuluwo4A+1WQ7GmC0sk+RqJHQ0q0KdEZJujTm4C/05Oypem28jmo048k5oFsr2Y6OCh9kRw2eKjS3M9M0rGxfMp08Vcix03aDC+Py6ZIcmzMZaWly+W/8eZLdzYgaVTajZwppzqVlCTvakpVUa5FTje4pvXO6NOzjKUQUmVhpAv48z+429yzh7ymZxtK8hqFkyKqwNPzDju5m1lXTPsaqJmeb8ud5dre5Z4krehrkuKFD02TUYieVRqsJm5h7Pbyv6tKkNmeak91t7lniip5dcqjz6DKz3MkgwU6jx1n/wW4cETna8wDVnG4tEowcojulMypLA7+1QnaVQI6dRnSbdEZlaeBHdVO0SjKeHKKbYZqrS5MK/hz9g+jhMNBYGmjIko+lgR/VTaKtYPpbS/OItpeN/rE0QERERERERERERERERERERERENOTPn/8DBNss8j34718AAAAASUVORK5CYII=";


Thursday, 1 November 2018

New Game - Unhallowed (ZX Spectrum 128K + Web/Adventuron)

Unhallowed is a new PAW text adventure game, by @blerkotron, for the ZX Spectrum 128K (and compatible machines such as ZX Next) and web browsers (via Adventuron).

Unhallowed was developed for the ZX Spectrum using the excellent PAW adventure writing system. 

Upon finishing writing and testing the game, the game was then ported to Adventuron via the "PAW to Adventuron" converter, followed by a manual text reformatting pass performed by Blerkotron, to take into account the larger screen area.

A "loading" screen was then manually added, and a few other minor adjustments made. Finally, the game was exported to a HTML file.

To avoid spoilers, the screenshot is from early in the game, but things get spookier quite soon after.

See the release note by Blerkotron here.
The game can be downloaded for 8-bit, and web, here.

Wednesday, 11 July 2018

The battle for vertical space on Android

I thought I'd do a small blog post on the problems I've been having with Android, for about a year now. This post relates to just trying to get a serviceabile keyboard-based UI going on Android, and has nothing to do with the gesture / touch optimized UI that is scheduled for release later in the year.

The first problem is that Android's soft navigation buttons are impossible to remove (without hacking your phone) when the soft keyboard appears. This eats up valuable screen real estate.

The second problem (in Android OS) is that when the keyboard is visible (together with the soft nav buttons), so is the status bar at the top of the phone. This has the unfortunate effect of overwriting some portion of the location header text. It also takes you out of the immersion in a pixel typographic experience (if that is your game). Pixel fonts look great, but only when not mixed and matched with modern antialiased typography. I guess Adventuron is an edge case!

The third problem is that the GBoard software keyboard (the standard Google software keyboard that ships with the majority of phones), is antisocial when it comes to vertical space. I can set an INPUT widget to require noautocomplete, and the old Google Keyboard would honour this request. The new Google keyboard still takes vertical space but doesn't show autocompetions. It looks hideous. This can be rectified with installing a keyboard - such as simple keyboard, but it's too much to ask a casual player to change their system keyboard. I'm very disappointed with Google's decision to not give app developers the option to use that vertical space for themselves. Maybe it's a security feature - to stop web apps from pretending to be the autocomplete bar? Who knows? ... but it makes using Adventuron on Android an awful experience.

The fourth problem, and one that I have been pushing to have fixed in Chrome for over a year now is the full screen immersive mode is simply broken in that the bottom area of the view area is obfuscated by the visible keyboard. You can't scroll down and see the invisible area. It's just plan broken.... but there is some hope that this *may* be fixed in Chrome 69. Let's see.

... for sure problem #1 and problem #2 are not getting solved any time soon. In my view, these are poor design decisions at an OS level, and the only workable solution is a bespoke written software keyboard as a bottom clipped widget... So that's ultimately what I'll have to do.

Assuming that problem #4 is fixed, and assuning that the player installs a keyboard that respects the NOAUTOCOMPLETE attribute, then this is the best that will be possible on Android (until I build my own integrated keyboard):

In terms of iOS, well, no problems. well done Apple.

Never say never, it's possible that GBoard is fixed, the Chrome fullscreen issue is fixed, that new versions of Android do away with the status bar showing when the keyboard is up, and Android allows the sofware nav buttons to disappear when the keyboard is up. Or maybe Google just builds in per-app keyboard preferences, that lets users select a more optimal keyboard -only for text adventures. But it's a lot of ifs. Right now, and at least a year into the horizon, Adventuron will be sub-optimal on Android, at least, without a hack of the highest order (building my own software keyboard).

The good news is that the screens are getting longer, and that it actually does feel quite good to type on a mobile keyboard. In time, all of this will be resolved, let's hope.

Saturday, 7 July 2018

The Final Minute

The Final Minute as an experimental piece of interactive fiction, that integrates an innovative real-time text-based sports-action mechanic and multiple endings. Blurring the line between fiction and reality, TFM integrates the real-world news-cycle into gameplay.

As timeless as the pop songs in Shrek, TFM is best experienced today.

What would you do, in THE FINAL MINUTE?

'Secret' map-drawing commands

Adventuron doesn't yet have an integrated auto-mapper, but it does have something of a workaround that might help help players draw something of a map.

These commands should be typed "in-game", at the command line....

Using "The Quest For the Holy Snail" as a demo game here:

Type in:

> drawmap

... to output a text based map of locations that you have already visited.

Type in:

> drawmap all

.... to output a text based map of all locations (based on the navigation table).

Right now, this process isn't super smooth, so my apologies, but the text based maps need to opened in a text editor, then copy and pasted into and the map will be rendered, courtesy of the plantuml and graphviz libraries.

The maps aren't north-centric, and therefore are sub-optimal for instant "grokking", but this will improve in future releases.

It's difficult to know if the "all" variant of this encourages cheating, or spoiling the game for the player, but if an author is concerned about the all variant, they can block it using a custom T1 handler.