Ah, text adventures. "You are in a mazy of twisty passages". "You are likely to be eaten by a grue". "That's not a verb I recognise". "I don't know the word 'help'". Oh, text adventures. You entertained and frustrated a generation, then graphics came along, and then we forgot all about you.
But text adventures didn't die, they just went underground. They weren't on the shelves any more, but a community kept them alive, making new games, creating tools, and hosting competitions. Meanwhile the rest of the world moved on to games with ever more impressive graphics.
In recent years though, I think we have seen a shift in attitudes towards gaming. Whether it's sneaking into the toilet to play Angry Birds on your smartphone at work, or being dragged into a game of Dance Central on the Kinect at a housewarming party, games are increasingly part of everyday life for ordinary people - it's not all about the latest graphics, speed, explosions and things to impress teenage boys any more. More people are playing more types of games, on more devices, more often.
This is why I believe that now is the right time to revisit the text adventure. It doesn't have to look the same as it did in the early 1980's - the modern text adventure can be more visually appealing for one thing, and include pictures, sound and even video, and it should all be delivered through the web browser. With the use of hyperlinks, we can reduce the need for typing and the unintentional "guess the verb" puzzles which have traditionally plagued this type of game.
That was the vision which inspired me to quit my job, and spend the last few months working full-time on an open source rewrite of my text adventure game system, Quest.
The goal of Quest is to reimagine text adventures for the modern web, by making them easy to create and share. There is a point and click editor, which means you can create games with no programming experience, but behind the scenes there is a full programming language for power when you need it. Quest is open source and licenced under Ms-PL, an MIT-like licence which means it can be used even in closed source games and applications.
I believe this can be a new beginning for text adventure games. I think there is an untapped potential for this type of gaming, particularly within education - a subject I hope to return to in a later blog post.
For now, I would love to get any feedback on Quest and to hear if anybody has any further ideas for reviving this almost forgotten genre!
Quest 5.0 is now available! Download it now.
Quest 5 is more than just an upgrade from Quest 4 - it is a completely new system, rewritten from scratch. I started work on it around April 2009, and the first preview version was released in February 2010. In October 2010, I announced that the system was to be free and open source. And in April 2011, I decided to increase the pace of development - quitting my job to work on Quest full-time.
Compared to Quest 4, the new system is much more powerful, flexible and robust - and I believe it’s even easier to use. The standard game behaviour is written in Quest itself, which means it is completely customisable. New features include support for “undo” when playing games (and also undo/redo in the Editor), expressions, local variables, lists and dictionaries - if you used Quest 4 you’ll want to check out the Upgrade Notes.
Compared to other systems, I had several objectives. Many of these are the same objectives I’ve always had for Quest, but the rewrite has made it possible for me to finally do them properly:
There are many more things I want to add to Quest, but “shipping is also a feature” as they say - I thought it was important to get something of release quality “out there” as soon as I could. The Issue Tracker will give you some idea of what is coming up - there are currently a large number of features assigned to a future “Quest 5.1” release, though this is quite a long list at the moment so I would expect a lot of those features to be pushed back to later releases.
In addition to the features listed on the Issue Tracker, there are some other Quest projects in the pipeline:
I quit my job to make Quest but I don’t really have a business plan - my primary motivation is really just that I want the software to exist. If it brings opportunities my way, that’s marvellous (and if not, it’s all good for my CV/resumé - I’m not completely nuts). So if you have a particular project in mind, please get in touch. Maybe you’d like me to do some custom development for you? Maybe you’ve seen a feature on the Issue Tracker you would like to sponsor?
Or if you would simply like to express your gratitude, if you think this software which I am giving away is worth something, I am of course happy to accept donations too, large or small.
If you don’t want to contribute money, there are other ways to show your appreciation - get involved! Quest isn’t just “my” project any more - as it’s open source, I’m happy to accept code contributions and translations. All feedback is very useful, so please report any bugs you find using the Issue Tracker, make suggestions at Uservoice, and join in the forums. You can also email me at [email protected] or tweet me @alexwarren.
Many thanks to everybody who has made suggestions, posted bug reports, contributed features and translations. I don’t even know some of your real names. In no particular order, thanks to Stephen Hart, Jhames, Pertex, Jonathan Dobson, ThePixie, Xordevoreaux, Lina Anna, Guillaume Poulain, and anyone else I’ve forgotten!
To keep up to date:
Inevitably, a few bugs were logged against last week’s Release Candidate 1, so I’ve now fixed them and uploaded a new Release Candidate 2, which you can download here.
The biggest bugs fixed were that the Exits tab wasn’t showing existing exits, and a memory leak that could cause a hang after switching back and forth in the Code View after making edits. See the issue tracker list for full details.
The only thing that might remotely be called a new feature is the ability to translate the labels for the panes in the language template.
I’ll be up in Edinburgh watching comedy for the next week, which will be nice as London has descended into rioting as I type this - I’m drowning out the sound of distant sirens with some soothing music, so it will be nice to get away from it for a few days (presuming it doesn’t spread to Edinburgh too). If only we could persuade these kids to sit quietly indoors playing text adventures instead. Anyway, I’ll be checking my emails and the forums but may be slower to reply than usual.
When I get back I’ll fill in the remaining gaps in the documentation, fix any bugs that have been logged and then we’ll be ready to go!
In the week since Beta 4 was released, 24 issues have been closed on the Issue Tracker, most of which have been relatively minor bugs. I have reached the magic zero mark again, so it’s time for the first release candidate, which you can download now.
A few minor features did make it through:
Quest 5.0 Beta 4 is out now, and we’re on the home straight - this beta is feature complete. I’m not planning to add any new features to version 5.0 - very minor ones may be still be added, but all the outstanding feature requests have been moved to a planned future version 5.1 release (they may be rescheduled again of course).
I will still accept contributions of new/updated translations and minor additions to the Core library - I know a few people may currently be working on these. The project is still hosted on CodePlex but recently switched from SVN to Mercurial hosting, which will make it much easier for people to work on their own forks and for me to manage contributions.
New in Beta 4: Some improvements to the parser, re-implementing features that existed in Quest 4.x but hadn’t yet found their way into 5.0:
> put bok on shulf I can't see that. (bok) > oops bik I can't see that. (bik) > oops book I can't see that. (shulf) > oops sholf I can't see that. (sholf) > oops shelf You put the book on the shelf.
If you don’t like “oops” you can of course still press the up arrow to correct the previous command (or just type more carefully in the first place!). Even though it may not be an especially useful feature, I was pleased that I was able to implement it entirely with changes to the Core library - I think this shows how flexible Quest is, as you could implement your own entirely customised parser in a game if you wanted, and it would work without requiring any software updates.
There have also been some improvements to help with creating non-English games:
"You can't #verb# " + object.article + "."
So if you add a verb “smash”, you get sensible default responses “You can’t smash it”, “You can’t smash them” etc.
Other new features in Beta 4:
You can download the new version here: http://quest5.net/downloads/quest500beta4.exe
Get those bug reports in! The next release will be a Release Candidate, probably in a couple of weeks. All being well, we should go “gold”/RTM around late August.
In the meantime I need to complete the documentation, one of my least favourite tasks!