IFComp 2020

I see that the judging for IFComp 2020 is now open. IFComp is, I would say, the biggest annual competition for interactive fiction. You can find the list of entries here.

IFComp has had a bit if a problem in the past with a relatively low number of judges compared to the number of authors, so I encourage everyone to take a look at the games, and take part in the judging. There are a lot of games, but you only need to judge 5 to make your votes count, and you have until 29th November so plenty of time.
Looking at other people’s games is a great way to get inspiration for your own games.


I did a quick tally of systems used:

  • Glulx 23
  • Z-code 4
  • Windows executable 6
  • Web-based 64
  • ADRIFT 2
  • TADS 3
  • Quest 2
  • Total 104

Glulx and Z-code are both Inform behind the scenes (Glulx has support for 32-bit integers), so that totals 27 for Inform; it usually has a lot of entries. Of the web-based games, all but 10 say they are “Choice-based”, so presumably Squiffy, Twine, ChoiceScript, inklewriter, or similar. Only about three say they are parser based. Given how big this category is, I find it odd they do not say what the system is that was used (I guess this is how the organisers set up the submission form). Three “Windows executable” are choice based, two are parser and one does not say. I find the idea of downloading and running an unknown windows executable a little dubious given the security risks; I wonder if that puts players off. The attraction for authors, of course, is that your players only need to download the game, not the system as well as the game.
Presumably all the other games are parser based (I only checked the Quest ones). I make that about 40 parser games and 54 choice based (and 10 unknown).

There are two Quest games this year:

The Brutal Murder of Jenny Lee

Tombs & Mummies

I only had a very quick look, just enough to see the first page really, but both look well written, and both authors have taken the trouble to customise the interface. I hope they both do well.

A Tutorial For Playing Parser-base Games

Ever wondered how to play interactive fiction?

Okay, probably not – chances are if you are reading this you already know. But perhaps you want to tell other people about interactive fiction, and you are wondering; where do I start? One option is here. This game will take the player through the basics of moving, and taking and dropping items, leading on to some more complicated interactions, including talking to other characters. At each step, the tutorial text (in blue) will explain what to do and why. There is also a comprehensive hint system.

You can find it here.

The TUTORIAL command allows you to toggle the tutorial comments, and play the game normally if you refer (just wait three turns at the start for the tutorial to open the door to the north) – I cannot claim it is classic, but the option is there.

It also showcases some of the features of Quest 6. It is quite a challenge creating a tutorial as the steps in the tutorial have to appear at the right moment. You need a game system that allows you to hook into every bit of it; for example, responding to the player saving the game. I also made the mistake of putting a rope in – boy was that tricky to do!

Have a play and let me know what you think. Any glaring omissions or errors?

Quest 6: The Cloak of Darkness Returns!

The Cloak of Darkness is a specification for an adventure game that has been created in numerous systems, with the purpose of giving prospective authors some idea of what is involved in each system.

That is how I started my last post on this blog. It describes how Quest 5 was used to create an adventure game according to that specification.

Now here I am nearly two years later, and I have a new version. This was written in Quest 6.

Quest 6 is a complete re-write of Quest, and is written entirely in JavaScript. That means everything I wrote to create Quest 6 is in JavaScript and everything the author writes when creating a game is also in JavaScript.

This has two big advantages:

1. Games run in the browser. Everyone has a web browser, which means everyone already has all the software they need to run your game. Players can save their game progress on their own PCs to “localStorage”. Compared to Quest 5 (and most other systems too):

  • As games run on the player’s PC there is no lag and no time-out
  • Games can be easily uploaded to any web site (as well as textadventures.co.uk)

2. Anything can be customised. The whole system is written in the same language you create your game in, and the entire framework is part of your game package. Anything you want to change, you can. You can re-write the parser, you can rebuild the interface from scratch or you can just slightly tweak how containers work. It is all there for you.

The game itself is very small, but take a look. In particular, see how responsive it is, compared to the Quest 5 version. For me it took about a second for the page to download, compared to 3 to 5 second for Quest 5, and its responses were instant.

Quest 6
http://textadventures.co.uk/games/view/y02ja5kbyuccmbcelrooza/cloak-of-darkness

Quest 5
http://textadventures.co.uk/games/view/fol1tly36kc0pfy4qynrqq/cloak-of-darkness

If you are keen to take a look, there is a Wiki here, with a tutorial. Quest 6 has nearly all the features of Quest 5 (the only exception I am aware of is the map), and some new ones too.

That said, there is no editor yet, which I appreciate is going to put a lot of people off. However, if you have ever worked with code in Quest 5 you should be up to this (and error messages are a lot clearer and easier to track down than Quest 5!).

This page discusses the code for Cloak of Darkness, so gives a good feel for what it is like to create a game.

The Cloak of Darkness

The Cloak of Darkness is a specification for an adventure game that has been created in numerous systems, with the purpose of giving prospective authors some idea of what is involved in each system.

IFWiki says of it:

This adventure is a tiny adventure designed to be easy to port to a given Authoring system. It is, if you will, the interactive fiction equivalent of “Hello, world!”

The Cloak of Darkness has its own web site that at one time kept up to date with IF authoring systems and their implementation of it.

Unfortunately it has not been updated in well over a decade, and apparently that is not about to change. Quest is on there, but a very early version, 3.5, which is very much a different system. Back then, Quest had two programs, one that was free, to play games on, and the QuestPro version, which you had to pay for, and could be used to create games. The file format was also completely different.

Modern Quest dates from August 2011, and the introduction of Quest 5, when it went open-source, free for everyone and XML-based.

I recently came across a thread on intfiction.org about the Cloak of Darkness (the first I had heard of it), and thought it would be interesting to do a modern version of it.

There is a problem with the concept behind The Cloak of Darkness. It is attempting to show how easy it is to create in each language, by showing the source code. But with Quest – and other systems too – you do not look at the source code. You would need to look at numerous windows and tabs (things that make authoring much easier, but make documenting authoring rather more trouble!).

So you can look at the source code for the Quest version, but really that does not tell you much. You need to understand the steps involved in creating it.

And so I present:

The Second Quest Tutorial!

This is a new page in the Quest documentation that describes how to build a full version of Cloak of Darkness from scratch, explaining at each step not just how to do it, but why it was done that way. There are links to a working game, and you can download the source code and open it up in the desktop version to take a look too.

Quest 5.8 is out!

This is my second major release for Quest, and in fact most of it has been done by other people, and in particular KV and SoonGames. Thanks also to the beta-testers and other “helpful helpers”: Anonynn, Darryl Huen, DavyB, Dcode, Pertex. Also to Luis for his support with regards to the web site (it has taught me what a pain in the neck that is!).

Apologies if I have missed anyone. This has very much been a community effort, which I think is great.

Some issues, hopefully now resolved

So Quest 5.8 is out, and not without a few issues… This was a rather more ambitious release than Quest 5.7 (which made hardly any changes outside the core libraries). Turns out the rest of the code has all sorts of inter-dependencies and pitfalls that only Alex was aware of. It was also unfortunate that while my side of it was ready several weeks ago, Luis could only upload to TextAdventure.co.uk just a couple of days before I was away on holiday, so we had a couple of weeks where it was up and running – more or less – but no one was around to address issues. I guess we will chalk it up to experience. In the future we will be much more careful of changes to any files outside the core .aslx files. We will also have a better idea of what needs testing; issues with publishing from desktop and uploading to the web site, and problems in the web player not finding files.

We are still very much learning how to do this since Alex retired from Quest, and that will probably continue for a couple more updates. As a “one man band” Alex knew Quest inside out; I doubt we will ever get to that stage! That said, some documentation in the code might have helped…

Hopefully the issues have now been resolved.

So what is new?

New Interface

The big change in this version is the new interface. This is all thanks to SoonGames. Take a look! We hope you like it.

Internationalisation

All the work on getting Quest better set up for internationalisation was also done by SoonGames. Thanks also to everyone who contributed translations:

– Danish: Benny Askham
– German: SoonGames
– Greek: Thanasis Chrysos
– Italian: Skarnisk
– Spanish: Luis

If you can help to get Quest translated for your language, or to update an existing translation, please get in contact. We can now offer translations for the editor, but only where we have the translations available, which so far is only German and, to a limited extent, Spanish.

Other changes

Quest will not allow bad attribute names in the editor (“object”, “turnscript”, etc.). Previously these could break your game. You can still use these in a script, which is still a problem.

A new command, TELL <char> TO <text> or <char>, <text> has been added to the _Ask/Tell_ tab.

Turnscripts have been revised a little. There is a new function, SuppressTurnscripts, which will stop all turnscripts for one turn. You might want to do this for a HELP command, for example, or for events caught by the map. The UNDO command now does this automatically, so turnscripts make more sense in that context. Also, turnscripts now run in alphabetical order (previously the order of global and local scripts would be reversed in a loaded game; now the order is always the same). If you allow multiple commands on one line in your game, each command will trigger the turnscripts.

Scope for a command can now be set to an object list attribute of the player object.

It has been the case that cloning an object also clones its child objects. Now they get the correct “alias” and “prototype” attributes set.

Following a suggestion from mrangel, text processor directives are now extensible. More towards the end of this page.

You can use the QuickParams function to quickly create a dictionary with up to three entries, useful for quickly sending parameters to a script.

The GetDefiniteName function will return the name or alias of an object, with “the” prepended where appropriate.

Thanks to KV:

You can now check if your game is being played on webplayer, desktop or mobile.

RESTART command added.

Advanced popups added.

LOOK AT now counts how many times an object has been looked at.

TAKE ALL will ignore any object with “not_all” set to true (which it is for NPCs by default), and this has generally be made more sensible with regards to items in containers. Will now give the correct response if there is nothing to take. If you have your own take/drop command this should not be affected.

Transcripts and logging now possible.

Improved VERSION command.

You can now check the “isroom” attribute to see if an object is a room, and use AllRooms to get a list of rooms in the game.

New functions DictionaryAdd and DictionaryRemove, the first will overwrite an existing entry if it exists, rather than throw an error, the latter will do nothing if it does not exist.

Thanks to Pertex:

Games can now send data to external sites, for processing, eg by PHP. This means you could set up a site that saves high scores, or records the number of people who chose a certain path through your game.

Thanks to SoonGames:

DeveloperMode (see here).

Creating with Trizbort and Quest

Trizbort is a map-making program specifically designed for text adventures, first developed by genstein, and now maintained by JasonLautzenheiser. It is partly for players to be able to map a game as they play through, but also for designers. It has been around for a few years, but recently the ability to export a map to Quest has been added.

You can find it here:

www.trizbort.com

There is a discussion here, with more instructions and images too.

 

So how would you use it?

The first thing to realise is that this is a one way trip. You start creating with Trizbort, then export to Quest, and then create with Quest. You cannot go back to Trizbort once you have started to make changes in Quest.

So with that in mind, the way to approach it is to design the geography in Trizbort, then turn that into a game in Quest.

Trizbort is available as a .zip file, and should be extracted into a folder called “trizbort”. You can then double click the app to start it. You will be presented with a blank page.

 

Rooms

Press “R” to create a room. When a room is selected you can drag it to move it, or select it and then drag its square handles to change its size. Double click on the room to change its properties. Here you can type in a description. You can tick it as dark too.

You should make sure one room is flagged as the start room so the exporter will create a player object there.

Rooms can be named any way you like. When exported, it will be given a name that is made up of just letters and numbers and underscores, but it will also get an alias that is just as you typed it.

Rooms in Quest have to have unique names; it is a good idea to select Validation – Rooms must have a unique name, so Trizbort will warn you if that is not the case.

Note that Subtitle, Regions and Room shapes will not be exported to Quest.

 

Exits

To create an exit, make sure no room is selected (just click outside a room). Now if you hover your cursor over a room the circular exit ports will appear. Drag the port from one room to another. Ports line up to the normal compass directions. Trizbort actually supports sixteen compass directions; I am not aware of _any_ text adventure that uses that many and Quest certainly does not. Jst use the standard eight (you might want to use the others for up/down and in/out).

Double click on a link to change it. You can do this to make it up/down or in/out (otherwise it will use compass directions as you would expect), or one way. One way exits will have arrows to indicate the direction. For up/down and in/out, the exit will be labelled. The label indicates what the player in the room will see. If it says “Down” at that end of the link, then the room has a “Down” exit.

You can make other changes too, but nothing that will get exported into Quest.

 

Objects

You can add objects to rooms. Double click the room to open the properties box, and go to the _Objects_ tab. It is a simple list; one object per line. Each object can be flagged to be of a certain type, the flags should go inside square brackets. The following are supported:

s scenery
f female
m male
! proper-named (only with f or m)
c container
2 plural named (singular is by default)

Other flags will not be exported.

In this example, the room will have a sofa, which is scenery, a named, female called Mary, and curtains, flagged as both scenery and plural.

sofa[s]
Mary[f!]
curtains[s2]

Objects will be given names and aliases in the same way as rooms, however two objects can have the same name; they will get modified on export so the alias is the same, but not the name. Objects must NOT have the same names as rooms – Trizbort does not check, you need to ensure this yourself.

This is a great way to ensure everything mentioned in the room description gets implemented.

Note that position just determines where the list appears in Trizbort, and is not exported to Quest.

 

Map Settings

Go to Tools – Settings to see general setting. Here you can give your game a title, add yourself as the author and add a description. This is just as easily done in Quest, and you may prefer to do it there.

None of the other settings will be included in your Quest game.

 

Exporting

Before exporting, check: Do you have a start room (it will have a yellow glow around it; Trizbort will not let you have more than one)? Do you have any objects/rooms with the same names?

You do not have to, but it is probably best to follow the Quest convention, and to create a new folder for your game inside the “Quest Games” folder.

Once you have completed your map, go to File – Export to export your game, and select Quest. Navigate to the folder, and click “Save”. The exported file is your new Quest game.

 

In Quest

You should now be able to open your game in Quest.

Remember to give all those objects a description. If any can be picked up, you will need to tick the box for that. Note that if you have rooms flagged as dark, you will need to turn the feature on in the Display tab of the game object.

 

Quest Maps

You will need to go to the Interface tab of the game object to turn the map on, if you want to have a map.

Quest handles maps very differently to Trizbort. Quest tries to guess where each room is in relation to each other, whilst Trozbort is a drawing package, and allows rooms to go anywhere. Quest uses exits and Trizbort uses links. The upshot is that map itself does not export from Trizbort. The only values that are exported are the colours and size of the room.

Alternatively, export the Trizbort map to an image, and add that to your game.

 

Languages

If you want to create a game in a language other than English, you just need to add the language file to your game. Go to Tools – Code view. You will see the code behind your game. It will start like this:

<!–Saved by Quest 5.7.6597.24702–>
<asl version=”550″>
<include ref=”English.aslx” />
<include ref=”Core.aslx” />

You need to add a line to add your language, after English, and before Core. This example is for French.

<!–Saved by Quest 5.7.6597.24702–>
<asl version=”550″>
<include ref=”English.aslx” />
<include ref=”Francais.aslx” />
<include ref=”Core.aslx” />

Go to Tools – Code view to go back to the normal view.

 

Adding to an existing game

Another way to use Trizbort is to create a new region in an existing game. You will need to be careful to make sure every room and object has a unique room, as Trizbort will not be able to check against rooms and objects already in your game. I recommend backing up your Quest game before doing this!

After creating the new region, go to File – Export to export your game, and select Quest to clipboard (no header). All the new rooms and objects will be copied to the clipboard. In Quest, go to Tools – Code view. You will see the code behind your game. Right at the bottom, you will see this line:

</asl>

Put in a couple of blank lines above that line, and then do Edit – Paste to add all those new rooms.

Go to Tools – Code view to go back to the normal view.

 

Get creating!

Now it is even easier to create games in Quest, so get creating!

 

 

Quest Group Project

We are experimenting with creating a large game as a group project. This was started on the forum, and has now moved to Github, where the basic ideas are being thrashed out.

The basic idea is that the player starts at a hub location, and can travel from there to numerous dimensions, with each author creating their own dimension (or two?). We have a framework to handle this, which allows each author to work on their game starting from a simple template, and when we are ready to go live, each game will be sent in, converted to a library and added to the master version. This means people can join the project at any time (even after it has been released potentially), and it can keep going if one person drops out – and in fact it would be quite easy to convert your game to a standalone game, if the whole thing ends up going nowhere.

The project wiki is here:
https://github.com/rheadkid/Quest-Group_Project/wiki

And there is a forum thread here:
http://textadventures.co.uk/forum/design/topic/3usjedp8bkcgxdbfsd-jza/were-starting-up-a-group-project-who-wants-to-collaborate-the-pixie-has-a-temp

It looks like it will be a science-fiction/fantasy romp across time and space in a classic, old school style. If you want to get involved and to have a say in how the game will develop, now is the time to join, before it all gets set in stone!

Quest 5.7

At long last, Quest 5.7 is officially out. It has been on the web server for a couple of days, and beta-testers have had access to the desktop version for some time, but as of now it is officially here!

Alex has been developing Quest since 1998, and this is the first release since he handed over the reins, so firstly I want to wish Alex well, and to thank him for bringing Quest to this point. I would also like to thank him for help over the last few months with getting Quest 5.7 ready.

I would also like to thank Luis for his work on the server; I know this has been a learning experience for him, as it has me, and I appreciate the effort.

I have tried to achieve a number of objectives in this version, and as a result there are a lot of difference. That said, it is just Quest, so all existing games should run fine, and any game you are currently creating can be opened in the new version – you will just find there are new options available.

One thing I wanted to do is make it easier to customise the user interface. Up to now that has required some technical expertise, and for users on the web version has been very limited. Now there are numerous extra options in the GUI, new functions (JS.setCss, JS.setCommands, JS.setCustomStatus and JS.setPanes) for the more adventurous, and for the expert the inituserinterface script can be accessed by both web and desktop users

There is now a comprehensive system for handling clothing. Money has been implemented similar to health and score, but with options for how to display it. Objects can be given a price, facilitating an economy in games. Text can be added to an exit; this will get printed when the exit is used, so now you can easily describe the player’s trip from one location to another.

Many more changes are described here:

http://docs.textadventures.co.uk/quest/quest5_7.html

If you have looked at the Quest documentation recently, you may have noticed changed there too. This is a work in progress, driven in part by the types of questions people ask on the forum. There is a huge amount you can do with Quest, which is one of its great strengths, but does mean a huge amount of documentation to cover it, and that then leads to issues with how to find it! Hopefully we are getting there.

 

The Pixie

The website have now messaging system

We have been working for several weeks on an internal messaging system so that users can exchange messages and solve doubts in a faster way than the forum.

Now, any registered user can send a message to another user easily and intuitively from the profile page of the user to whom you want to send the message.

We hope that this improvement will help you to have more closeness with the rest of the community of users!

Thanks for all the suggestions we have received!