Overview

What is this?
=============

QQW is an experiment at merging an adventure video game with a wiki website.
The players can walk around the maps and interact with them like in a game,
but at the same time they can edit the maps and create new ones, extending the
game's world and adding their own pieces of the story.


How is it made?
===============

There are two parts to the experiment. The server-side is just a wiki engine
-- I have chosen to use my own wiki engine, Hatta, because I'm familiar with
it and it has some nice features. In theory, any wiki engine could be used, as
long as you could make it generate the right kind of HTML output for the map
pages.

For simplicity, the maps are just text files in format based in Windows INI
files. This format is relatively easy to edit by hand while giving quite a bit
of flexibility to the author. The exact syntax and options available are
documented at the sample wiki at http://qqw.sheep.art.pl.

The client-side part is just a couple of hundreds of lines of JavaScript code,
to render the map graphically using browser's DOM and to animate the sprites.
It was one of my assumptions that there should be nothing technically
sophisticated in there, only very basic stuff is used -- this way the whole
thing should even work on Microsoft Internet Explorer 6 (although I didn't
test it on that browser). The position of the player (the entrance to the map)
is stored as an URL fragment, and the list of items in the player character's
inventory is stored in a cookie -- so that the items can be used outside the
map on which they were acquired. No other state is kept.


How to run your own?
====================

First you will need to have Python and the required Python modules, Werkzeug
and Mercurial, installed -- you can get Python from http://python.org and
install the requirements with ``pip install -r requirements.txt``. Once you do
that, you can run the server with ``python qqw.py`` -- then just visit
http://localhost:8080/ and make some map pages. It's also possible to run
``qqw.py`` as a WSGI application -- that's how it is deployed on
http://qqw.sheep.art.pl.