Category Archives: Education

Quest in Education – "Changing the Game" conference

I’ll be at the “Changing the Game” conference in Birmingham this Thursday (17th November), which is all about getting students learning through playing and creating games. Kristian Still will be presenting a session on his school’s experiences with using Interactive Fiction and Quest, and then it’s my turn – I’ll be presenting a quick overview of Quest, showing how quick and easy it is to get started. Do say hello if you’re there!

Even the Prime Minister David Cameron is now saying that the UK needs to do more to teach programming in schools, so it seems like a good time to reiterate my commitment to making Quest a great platform for teaching the fundamentals of programming.

It is already being used in a few schools for a variety of age groups and subjects – not just ICT, but also in English where text adventures can be a part of creative writing. It can also be used for teaching Modern Foreign Languages (MFL) – it currently has language libraries for English, French, German, Spanish and Dutch.

Pupils can get started using Quest’s visual editor with no programming experience, but along the way they will be exposed to various programming concepts, such as variables, functions, loops, expressions, objects, etc. The underlying Quest scripting language is pretty powerful, so it can be used for quite a large range of ages and abilities.

I’ve created a new Education category on this blog, where you can find my previous posts which go into more detail.

I’ve also set up a new Education forum, so teachers can come together to share their ideas and experiences of Quest in the classroom.

Educating the next generation of software developers

[Cross-posted from my Gamasutra blog]

We are going to need vastly more programmers over the coming decades. Where are they going to come from? How can we get children started programming at an early age? I have some ideas.

With the proliferation of app stores – first on the iPhone, then Android, Mac OS X and soon Windows – it’s easier than ever for people to download games and other types of software. On the web, too, increasing access to broadband and mobile internet around the world means that developers of web apps and games have vast potential audiences, as it’s now entirely normal for most people to have web access whenever and wherever they are.

This is a huge opportunity for software developers. With more people using more software more often, one thing is clear – we are going to need a lot of programmers. The potential market is already absolutely enormous. Just imagine how big it’s going to get over the coming years – and how valuable programming skills will be.

But it is already very difficult to find good developers. HR departments and recruitment agents rarely have much of a clue about the skills required for the jobs they’re trying to fill, so they’re pretty ineffective filters – which means plenty of people who can barely program are still able to get interviews. I’ve had candidates stare pretty blankly at me when I’ve asked them reasonably basic questions – yet amazingly, in many companies, these people still get hired. There are more jobs than qualified developers out there – at least, that is my experience in London anyway, and we’re in a recession.

Making Developers

So, there is already a developer shortage, and it’s only going to get worse. How can we fill the developer gap?

To answer that, we need to know what makes someone become a developer. Many people, myself included, got started on the home computers of the 1980’s – the C64s and Acorn Electrons of the time often booted up straight into a BASIC command prompt. Programming was something that pretty much all computer users did to some extent, and it was relatively easy to get started, as the computers and languages were simple. One boy in his bedroom could create software that was of a similar quality to that which could be bought for 99p on a cassette tape down at the local newsagent. Those were the days.

Fast forward to today, and we’ve lost that. The vast majority of computer users will never go anywhere near anything resembling a programming language, so they won’t even poke around out of curiosity. Even if they wanted to, it is much harder to get started now. Where do you begin? You started up an Electron and you were presented with a very simple screen that threw you straight into programming, and there was even a book in the box called “Start Programming with the Acorn Electron”. You almost couldn’t stop yourself from programming on one of those. But today, how can you get started on a PC? You can download Visual Studio Express for free – but check out what Microsoft thinks is a friendly introduction. Just go to that page and ask yourself what somebody who has never attempted programming before is likely to make of it.


One of these is easier to get started with than the other

In Schools

If it weren’t for that Electron, I doubt I would be a software developer now. I remember the IT lessons I had at school in the mid 1990’s, pre mass adoption of the web, and it was all about using Word and Excel. Very uninspiring. It doesn’t sound like much has changed since then, apart from a rebrand of the subject as “ICT” – they’re still not teaching programming.

Google’s Eric Schmidt criticised this state of affairs recently:

Schmidt said the country that invented the computer was “throwing away your great computer heritage” by failing to teach programming in schools. “I was flabbergasted to learn that today computer science isn’t even taught as standard in UK schools,” he said. “Your IT curriculum focuses on teaching how to use software, but gives no insight into how it’s made.”

Recently though, it seems the tide is beginning to change, and people are waking up to what has surely been obvious for years now – we need to get kids programming again, and we need to act now.

There are plans to pilot a programming GCSE and A-Level, but I think programming concepts could be taught even earlier. I started when I was 8 years old, and there must be plenty of kids out there who have the aptitude for it and could do the same thing. We just need to make programming accessible and appealing.

Simplified Languages

There are some simplified languages, such as Scratch and Microsoft’s SmallBasic. I think there are more creative ways to introduce programming into the curriculum though, and I think the software I have been working on, Quest, has a role to play here. Quest is designed to revive the text adventure, and I think it also has a wide variety of potential uses for education, one of which is as a way of introducing the fundamentals of programming.

Quest presents a visual editor so it doesn’t have off-putting syntax and crazy punctuation all over the place – all programming script commands are displayed in plain English. There’s no need to remember what to type, because the possible script commands can be selected from a searchable list. You can create a very simple game without using any script commands at all, so the programming side of things can be introduced gradually. Underneath is a fully featured, powerful programming language – it has all the fundamental concepts that you would expect, such as variables, functions, loops, expressions and objects.

Because it’s not a “pure” programming tool I think it could even be sneaked into other areas of the curriculum – for example, in an English creative writing lesson, pupils creating a text adventure game would be exposed to a few programming concepts, and it wouldn’t even hurt a bit.

Quest Script Editor

By playing each other’s creations over the web or a school network, that will encourage competition between pupils as to who can make the best game. From the evidence I’ve seen so far, creating games with Quest is something that school children can really get excited about – some year 7’s (11-12 year olds) were so keen they were even skipping breaks to continue working on their games.

So if you’re a teacher or parent and want to introduce your children to programming, why not give Quest a try. It is free and open source.

I still have more work to do on Quest to make it even more education-friendly. I’m currently working on version 5.1, and one of my plans is to have a “simple mode” in the Editor, to hide the more advanced features which could be distracting. I hope that this will make it even more suitable for children of primary school age. There is also work to do developing course materials for teachers and pupils – Kristian Still, an assistant head teacher in Southampton, is currently developing a Moodle course for Quest.

I’m very keen to hear from teachers who may be thinking about using Quest in the classroom, so please get in touch if you have any questions or feedback.

Teaching with text adventures

The “retro” aspect of text adventure games is kind of fun, but I think it can also be limiting. I think there is a lot of potential for text adventure games to have a broader appeal, with wider uses, way beyond harking back to old-skool computer games. There is a place for text adventures on the modern web, but not simply “hey, remember those old games from the 1980’s? Some people are still making them!”

I am guilty of this kind of pigeon-holing myself of course. The current introduction on the Quest website says “Quest brings 1980’s-style text adventure games up to date” – well, fine, yes, maybe it does, but when I rewrite that introduction for Quest 5.0, I don’t want to frame it in those terms.

This is because I want to introduce this type of game to a new generation of authors and players, and these people may not even “remember” text adventure games in the first place. In fact, the most important people who I want to introduce to text adventures certainly won’t remember them – anybody at school today will have been born after 1993, a long time after text adventures ceased to have a mainstream appeal.

Using Quest in Education

There are educational uses for Quest, both in getting students to play text adventure games, and in getting them to write their own. There are probably ways of using Quest in any subject that touches on problem solving, reading, or creative writing:

  • Quest could be used as an introduction to programming – all the standard programming concepts are in there: variables, functions, expressions, objects, loops.
  • For teaching creative writing, Quest makes the author think of multiple points of view – the “reader” will be interacting with the game world.
  • Teaching foreign languages – getting students to play a game in a language that is not their mother tongue challenges them in both reading and writing, and it ensures comprehension, as they can’t progress in the game unless they can read and write sentences correctly.

To children, text adventures are not old-fashioned – they’ll likely have never played anything like them before, so it will be new to them. This could be a challenge, in that they’ll be unaware of the conventions around the kinds of things they can type – but I think that Quest’s hyperlink support can help them to get the idea quickly.

Current users

I am very keen to hear from any teachers who are either currently using Quest in the classroom, or who may be thinking about doing so.

In the last month or so I have heard from:

As well as secondary schools, I have also heard from a university professor considering creating a final year project using Quest. There should be applications at the younger end of the spectrum as well – simpler text adventure games for primary school pupils.

In fact I don’t see any reason why primary school pupils wouldn’t be able to create games as well. I may need to work on a “simple mode” for the Quest editor, but if I can introduce young children to programming, that will be a great thing. I myself started programming on an Acorn Electron using BBC BASIC at the age of 8, and it would be fantastic if Quest could be used to get today’s 8 year-olds into programming too.

Deployment and Assessment

Quest features the ability to distribute games over web, so players don’t need to install any software. You can either upload games to, or if you have a Windows server, you can install the Quest WebPlayer component. This means that it’s simple to deploy a game – whether you want students to play over a school network, or on their home computers, iPads etc., there’s no software to install on the end-user machine – all you need to do is give them a web link.

In the near future I want to look at enabling ways of integrating Quest with systems such as Moodle. The idea being that you could get students to play a game, and assess any aspect of the game session in the external e-Learning system – that could be simply whether or not they completed the game, or it could be any attribute such as the score, the number of rooms visited, or a full transcript of the game session. Unlike other “play online” systems (such as Parchment for Inform), Quest runs the game on the server, not the client – so it should be easier to implement such monitoring features by creating an API that can transmit details of the game session somewhere else.


I’m very keen for any feedback on this, as this is a new area for me. If you’re thinking about using Quest in the classroom, I’d love to hear from you – what are your ideas, and what can I do to help?

You can get in touch by leaving a comment here, emailing me at, or you can find me on Twitter at @alexwarren.

Programming visually – the Script Editor in Quest 5.0 Beta 2

I’ve often described Quest as allowing you to create text adventure games “without programming”, but of course that’s not strictly true. While you could create a game without using any scripts at all, you’d only be able to tap into very basic, default behaviour, so it would be quite a boring game.

What Quest has always aimed to do is to make creating scripts easy, by taking a different approach to programming. You still enter commands, use variables, functions and so on, just as in “real” programming, but the Script Editor guides you through the process and tries to make it as intuitive as possible. There’s no need to remember syntax, type in strange punctuation or even remember the names of commands, because the Script Editor shows you all the available commands, and guides you through entering their parameters.

It essentially presents a graphical layer in front of the underlying code. The underlying code is still there, and in Quest 5 it looks pretty much like any other programming language, but the Script Editor shields you from all of that, and displays as much as it can in plain English. The aim of this approach is that you should be able to get started quickly, even if you’ve never programmed before, but also know that you have as much power as you could ever need if you delve a little further.

With the new Script Editor appearing soon in Quest 5.0 Beta 2, I think I have achieved my aim of improving on the design of the Script Editor in Quest 4, making it both quicker and easier to use for beginners, but exposing the full power of Quest 5’s new scripting language for those that need it. At the same time, the Script Editor is flexible enough that new libraries can hook into it to allow the game author to easily use all of the library’s features.

In Beta 2, I have rewritten the Script Editor UI from Beta 1, so it now looks quite a bit different. Here’s an example of the Script Editor showing the kind of script that often appears at the beginning of a game – it prompts the player to enter their name, and then welcomes them to the game:

Behind the scenes, this the script that has been created:

msg ("Welcome! Please enter your name to begin.")
playername = GetInput()
msg ("Welcome, " + playername)

Let’s look at each of these commands in turn, and how the Script Editor helps you to create this kind of script.

First, there’s a command which simply prints a message to the screen. Starting with a blank Script Editor, the only option we have is to expand the “Add new script” section, which gives us a searchable, categorised tree of all the commands we can use:

We can click “Add” or double-click to add this command. Now the Script Editor looks like this:

We can simply start typing the message. No need to worry about closing quote characters, or indeed including quote characters within the message – the Script Editor handles all of that, ensuring the underlying script is created correctly (with any quote characters in the message escaped if necessary).

Next, we want to add a command which will store the next thing the player types in at the command prompt. We click “Add new script” again, and add the “Set a variable or property” command, which can be found in the “Variables” category (or by typing “set” in the search box).

We can type in a name for our variable, “playername” for example. Next we need to enter the value for the variable. We can enter any expression, such as “2”, “foo”, “3+8”, “SomeFunction()” etc. So we could call the function ourselves, but the Script Editor has another trick up its sleeve – expression templates.

Expression templates appear for a number of script commands, and provide access to common functions. They are context-specific, so you see different expression templates for the “set” command than for the “if” command. If you click the “expression” drop-down, you’ll see the available templates. Currently, for “set” you will see this:

(This list may well be expanded before Beta 2 is released, and the templates are defined in the core library, meaning that the list can be easily extended)

Selecting “player input” completes the command, and now we can add the final “print” command to welcome the player. But this time we don’t want to print a static message – we need an expression, so we can include the value of the “playername” variable we created earlier.

A similar dropdown on the “Print” command allows us to switch to an expression:

We can now add the expression “"Welcome, " + playername“, and the Script Editor will give us a bit of help with that, too. The blue triangle to the right of the expression contains a menu which allows us to add things to our expression:

Selecting “Variable” from the menu gives us a drop-down list of all variables in the current scope – in this case, just the “playername” variable we created earlier. Of course, we can simply type the expression too.

To experienced programmers, this may seem like quite a lot of pointing and clicking to create a simple script. You may think that nobody would want to program this way – but the evidence from previous versions of Quest shows that’s not the case. When I first added a visual editor to Quest, way back in 1999, it was far from clear that people would want to program in this way, but people do – the visual editor is by far the most popular way to create games for Quest 4, and while I’ve always supported the ability to “hand code” games using a text editor, pretty much nobody uses Quest in this way. In Quest 5, the Script Editor is even easier to use, and more powerful, so I hope it will allow both experienced programmers and novices alike a way to get started making games quickly. Quest 5 also features a Code View, so the “hardcore” version is just a click away anyway – you can switch back and forth easily.

The new Script Editor will be available in Beta 2, which I’m hoping to release within the next couple of weeks. If you can put up with buggy code and have Visual Studio, you can try it out now by downloading and building the latest trunk code from CodePlex.