Category Archives: Uncategorized

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

Squiffy 5 – an improved editing experience

Squiffy 5 is now available – you can use it in your web browser, or download it for Windows, OS X and Linux.

This release makes various enhancements to the Squiffy Editor. The number one request by far has been to add an option to change the font size – so that is now done!

There’s also improved syntax highlighting. Section and passage headers are now highlighted, and in-line JavaScript code gets its own highlighting.

It’s now easier to work on larger games. You can collapse sections and passages, so it’s easier to focus on just the one you’re currently editing. The section and passage lists at the top of the screen are now searchable.

You’ll find shortcuts to collapse and uncollapse all sections and passages on the new Tools tab. This also features new shortcut buttons allowing you to easily add new sections and passages. Let’s say you’ve written a paragraph of text and want to add a link to it. Now you can simply select the text you want to link, hit “Add section” or “Add passage”, and a new section or passage of that name will be created, with the text linked to it.

Squiffy 5

Try it out… Squiffy works in your web browser without downloading anything, or you can download versions for Windows, OS X and Linux.

Squiffy is free and open source, and you can find both the compiler and editor on GitHub:

Open-sourcing “Moquette”

A year ago, I released my first work of interactive fiction “Moquette” into the IFComp.

Today, I’m releasing the source code for it: https://github.com/alexwarren/moquette

It might be useful if you’re interested in implementing similar text effects in your own Quest game – if so, this blog post may also help.

Or who knows, maybe you’d like to adapt it – fix up the writing, change the ending, whatever… you can now fork it and do what you like with it.

The commit history goes all the way back to when it was a very primitive London Underground simulator, so you can see how it evolved over time. You can see the bursts of activity on GitHub’s commit graphs, which give some indication of the ebbs and flows of my energy for writing.

I haven’t had so much energy for writing for the last year, though I’m kicking around ideas again. Who knows where they will end up. Perhaps we haven’t yet heard the last of Private Rod…

Starting a new chapter

I’ve been building Quest and working on textadventures.co.uk full-time for a couple of years now, on and off. Despite my best efforts to turn this into my living, I can no longer continue to work on this basis. As of January, I’ll be moving on to work on something else, with interactive fiction becoming a side project once again.

We applied to Emerge, a new startup accelerator focusing on education, with our aim of building up ActiveLit. I’m told about 80 companies applied, and we were one of the 20 selected for interview.

Unfortunately we are not one of the 7 or 8 that have been selected to join the programme.

We would like to thank you for taking the time to apply to and interview for Emerge Education ’14.

Places are limited and the applications were excellent. It was difficult to select participants from such a strong group. Unfortunately on this occasion, we are not in a position to offer you a place in Emerge Education ’14. We hope you will apply to our future programs.

We include below a brief summary of how we arrived at this decision and hope this is helpful to you:

  • Your product was more developed and had more traction than that of any other applicant to Emerge Education and we were impressed by the user demand it has received;
  • The selection committee’s main concern was a lack of clarity around whether your team had the strategic intent to take ActiveLit from an (already) successful product to a high-growth business;
  • In addition, applicants that did better in the selection process tended to have more business experience as part of the co-founding team.

I find it difficult to understand the logic here, and in fact this email makes less sense every time I re-read it. The highest traction product of all applicants, but a question mark over our “strategic intent”?

Whatever. You can’t expect too much from rejection emails. Any “reasons” given are always post-hoc justifications of the decision made. I expect the most typical would be “your product is not sufficiently developed”, so at least it’s novel to be turned down because our product is too developed.

It would only require one reason to say yes – “we think there’s a good chance of making money if we invest in you”. At least in this way it’s a more straightforward and honest process than awarding grants – it’s refreshingly simple compared to working out why, say, a government body won’t award funding. Any rejection from an accelerator is fundamentally because they couldn’t find this reason to say “yes”, rather than any reasons that may be given for saying “no”.

This is the feedback we’ve been waiting for, then – the simple yes/no answer to the question “Can we convince people that know about money and business and stuff that what we’ve been working on is viable?”

And the results are in, and the answer, at least from Emerge (and also Wayra), is “no”. And that’s fine.

They say that it takes grit to succeed, but what if you never give up on an idea that is fundamentally never going to work? Maybe it simply makes more sense for Quest, textadventures.co.uk and ActiveLit to be run as side projects. I’ve sunk a lot of time into these now – 2 years of full-time effort. I’d be much richer now if I hadn’t done this.

Of course, I’d be unhappy. I’m really pleased with what I’ve achieved. I used to sit at work, seething in frustration, because there were things I wanted to do with interactive fiction that I didn’t get time for. That’s changed now – I’ve built a lot of software, explored a lot of angles and spoken to a lot of people, trying to work out how an interactive fiction business might succeed.

And what I’ve discovered is, I can’t make it work. Not right now anyway. Maybe it just needs to live and grow organically for a while. Maybe something external will change, as more and more people discover interactive fiction, or as more teachers use Quest and text adventures in the classroom. I’ve got nothing left to “push” from my side, and I’ve run out of money anyway.

And even if nothing external changes, and it never grows beyond what it currently is, it will still have been worthwhile. I don’t regret anything. I’ve built what I wanted to build. I’ve scratched the itch. I’ve created software that is being used by all kinds of people for all kinds of things. Children are learning programming, being engaged with reading and writing. More and more people are playing and creating games on the site. I’ve met some great, interesting people. It’s been a lot of fun. It’s been totally worth it.

But I can’t do this for a living, so it will have to become my hobby again. There are plenty of other things I can do – there are loads of opportunities for software developers at the moment, and there are some great companies out there doing interesting things which I can contribute to. It’s an exciting time, and I’ve now got some great experience that will hopefully prove useful in whatever I move onto next.