Archive for January, 2011

So I have a working version of Zifmia, a client/server implementation of FyreVM. Basically, this is FyreVM with a state management wrapper where state is stored on the server. The wrapper and engine are hosted in a web service. I started developing the client web behavior with very basic html controls and it’s now time to design and create something interesting.

I was wondering if anyone with mad jQuery/CSS/HTML skills might want to help out and that’s not even a request to actually write code. Even ideas on how to translate an IF game onto a web page would be great. For instance, I don’t plan to implement a running scrollable textbox with game transcript text. I want to develop a paging mechanism and use jQuery to make it fluid within the browser, so keystrokes will allow movement to previous turn output and returning to the latest “page”. I’d like to implement a CSS based compass rose that shows available visited exits and possible unvisited exits (I’ve recently implemented a new channel that reports, in XML, what the visted and unvisted exits are).

I’m not much of a designer and defintely not a jQuery/CSS developer. I also have many other tasks on my plate.

The result of any work is open source and will be documented and shared with the IF community.

We’re deep in the planning phase for PAX East in Boston March 11-13. Some of the IF community are planning to be in early. There’s a dinner planned for Thursday night, and panels throughout the weekend either in a suite or in our planned 1,035sqft conference room in the connected Westin Waterfront hotel.

For more information, visit the IFWiki page at:

I have a story that I want to develop into a series of small IF games for Textfyre. I think it has a great potential to be an expansive universe with many interesting characters. It’s science fiction and fantasy set in a future earth. Technology has been developed to give people the ability to do “magic”. The story has action, but will also focus on who attains the power, who is trained for the power, and who is left out. There are existing assumptions within the power structure that can be tested and altered so there are many variations on the basis for the power structure.

The person I choose must have some IF authoring experience, be passionate about developing something real and long-term, and be willing to work on a sales-based contract.

The goal is to outline stories similar to a television season. So possibly 20 episodes with smaller plots that also develop a larger plot. Each game will be small, but the writing is important. It’s important to offer something exciting and memorable so that the reader/player wants to continue the series.

If you’re interested in heping develop The Cil Wars, let me know.

Sorry….no vampires or werewolves.

Shadow Meets Zifmia

Posted: January 5, 2011 in Uncategorized

Over the holidays I got back to working on Zifmia and made significant progress. The backend is functional, although there are peripheral tasks to implement, such as security.

The service is working perfectly and I’ve begun implementing Shadow in the Cathedral with Zifmia as its own stand-alone website.

A snapshot of the current site is shown here. There are many features to add via CSS, but the basic work is complete. The game is loaded each turn on the server where state is also saved. Currently, the game is loading a single instance, but the method for having multiple instances is there and work will begin on that shortly. For each registered user, one or more sessions can be created. The user will be able to save/restore a session or continue the session from its latest point. I’ll be adding tabs for the introduction, hints, and other things. The current session will automatically load and I’m going to implement paging capabilities to see previous turn text. I should be able to hook in keyboard shortcuts to do some of the work too.

You can play with the current page by starting out with a “look” and play from there.

Now, some of the guts.

One of the key files is the jQuery code to call the service.

function GetResponse(obj) {

        type: "POST",
        url: serverURL,
        data: data,
        processData: true,
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: handleOutput,
        error: function (xhr, textStatus, errorThrown) {
            $("#error").text("Error" + xhr.status + "...");

function setChannel(channelName, channelData, append) {
    if (append == true) {
        if (channelData) {
            filterText = Filter(channelData);
            $("#" + channelName).append(filterText);
    } else {
        if (channelData) {
            filterText = Filter(channelData);
            $("#" + channelName).html(filterText);
        } else {
            $("#" + channelName).text("");

// The author can modify this file to adjust what happens to channel data on return from the server.
function handleOutput(zifmiaData) {
    if (zifmiaData.Prologue) {
        setChannel("mainChannel", zifmiaData.Prologue, false);
        setChannel("mainChannel", "<br/><br/>", true);
        setChannel("mainChannel", zifmiaData.Main, true);
    } else {
        setChannel("mainChannel", zifmiaData.Main, false);
    setChannel("chapterChannel", zifmiaData.Chapter, false);
    var cmd = document.getElementById("command");

function KeyDownHandler(buttonId) {
    var btn = document.getElementById(buttonId);
    if (event.keyCode == 13) {
        event.returnValue = false;
        event.cancel = true;;

There are still more channels to implement, but the idea is straight-forward. Once the service returns the channel data, it’s written, Ajax-style, to the proper html element. I have a filtering mechanism, but currently it’s only changing newlines to <br/>’s. I will probably be adding more markup and therefore, more filtering.

This is just a sampling of the work surrounding Zifmia. There is much more work to do before it’s ready for primetime. And when I do get to a completed state, it might be fun to have a sort of IF Zen Garden, to see what sort of layouts people can make through CSS.