Posts Tagged ‘open source’

So I had set aside a lot of IF work in the past month for work and health reasons. I found myself with a very bad case of whiplash after several wild rollercoaster rides at Six Flags which uncovered high blood pressure, which led to me to get a stress test, a physical, and to see a foot doctor. The neck pain and dizziness are gone, the new orthopedic shoe inserts are wonderful, and the blood work all came back normal. I feel better. Relieved.

I had left Zifmia in a nearly working state, outside of details like security and the client aspects. The server was very close to being completed. So I’ve spent the last three days working through the issues and it’s now running perfectly. Here’s what I did.

I’ve developed FyreVM in a new WCF web service. For newcomers, WCF is a framework from Microsoft that allows you to easily build web services. The service has a single interface, GetResponse:

    [ServiceContract(Name="ZifmiaService",Namespace="FyreVM")]
    public interface IZifmia
    {
        [OperationContract]
        [WebGet(ResponseFormat=WebMessageFormat.Json)]
        ZifmiaResponse GetResponse(ZifmiaCommand zCommand);
    }

The ZifmiaCommand is parameter class:

    [DataContract]
    public class ZifmiaCommand
    {
        [DataMember]
        public string SiteKey { get; set; }
        [DataMember]
        public string GameKey { get; set; }
        [DataMember]
        public string UserKey { get; set; }
        [DataMember]
        public string Command { get; set; }
    }

The main parts we’re interested in today are GameKey, UserKey, and Command. The GameKey is a reference to a server-side game file. The UserKey is a user’s identity. The Command is whatever the user has typed into the game window.

WCF has a built in test client that helps us test:

In the first frame, we’ve opened up our test client. We click on the GetResponse interface, which displays our available zCommand interface. Then we add in our start up arguments and invoke. You can see the results in the third image. Each channel has a value or is blank. Then we add a command and invoke a second time. This shows the channels again with different data. In the final image there is a couple of files that represent the state of the game. The main file is the save data and the numbered XML files are the channel data saved for each turn. We can re-use this data to display previous turns in the browser (or any application that consumes the Zifmia service).

It all works and is very fast.

Next up, the client with fancy jQuery controls to display our channel data.

Andrew Pontious started working on an Apple implementation of FyreVM and he’s moving his work from a private source control repository to the new SourceForge.Net FyreVM repository soon. This will also be released under the MIT license, which means anyone can use it for personal or commercial purposes.

The harder part is the user interface. Andrew will likely have a very basic UI implemented for testing FyreVM, but it will be up to the community to help bring about something more visually appealing and usable.

I’ve found a user experience consultant to work with the community, but the quote is rougly $4,000. This would include 5 weeks of iterative user experience work. Andrew is partially committed to helping out with mocks and Chris Cavanagh, a Silverlight developer, is also open to doing mocks.

The result of this work wouldn’t be the actual UI. It would be the general look and feel. We’d have to then work with someone with graphic arts experience to take the usability designs and make them pretty as well as having a programmer implement any of the active components of the experience (rollovers, transitional animations, etc).

I’m committed to finding a way to fund this effort. I’ve started a Kickstarter campaign, but haven’t launched it yet. I want to put a video together that tries to explain to potential contributors how important this is to the IF community.

Remember, the user experience isn’t just about Apple products. The results could be implemented in Parchment, on Windows, in Silverlight…or in any other interpreter.

As I begin working on Zifmia, an open source project to develop a cross-ifplatform client/server system, I needed to take an initial first step.

FyreVM, a glulx implementation with a different IO system, is now a sourceforge project under the MIT license.

We’re looking to have TADS 3, z-code, glulx, hugo, and any other systems integrated into zifmia. If you want to chip in programming, it would be greatly appreciated.