QML - Create Your Own Adventure

QML on a server

QML comes in a client- and three server-versions (Windows ASP/ VBScript, and PHP and Python for Linux/ Apache). They're all included in the QML-Package download.

The client-version won't run in every browser, since the data and script languages that handle it need the Internet Explorer 5+.
The server-version however runs in every browser, since all data is prepared by another computer before it's send to the browser, which now only has to understand the language every browser understands.

Preparing data

You don't need to adjust any of your quest files to run them on the server. The same data will be handled by the server-side code.
You are completely on the safe side if you remove any positioning on your QML-style settings, since certain browsers like Netscape 4 have buggy CSS support.

Differences to client-version


QML server-version in Lynx text-browser

QML server-version in Netscape 1

Windows version

The game runs on the IIS (Internet Information Server), using the file "qml.asp" from the QML Package as entry point. MSXML needs to be installed. If you're looking for free ASP hosting, try www.brinkster.com or find more ASP hosts at ASPCode.net and free-asp-hosting.com.
To select a certain file, for example "test", the adress has to be given as:
QML1: http://webroot/myfolder/qml.asp?quest=test
QML2: http://webroot/myfolder/default.asp?quest=quest/test

No scripts need write-access.

Apache/ Cross-server version


The PHP4 port of the QML-interpreter runs on Apache and Windows (if PHP is installed). It doesn't include all features, but most.

To select a certain file, for example "test", the adress has to be given as:

This version should cover most of the server market (about 65% Apache, and 25% Microsoft). PHP is installed on about 45% of all Apache Servers.


The Python port is called like the following (the "qml" folder is in the webroot):

The Python version doesn't use XML XPath, and should be faster on big quest files.

Both the PHP and Python version sends all state data to the client and returns it by using form method post.
This has good and bad sides: on the one hand, the user can easily save the quest by saving the HTML file and continue it any time later on. But, a knowledgeable user might edit the HTML file and change values.