Archive for July, 2010

It’s been very clear over the last six months that the direction Textfyre needs to go is mobile. Desktop products are extremely difficult to sell without physical media and selling physical media requires a marketing budget, a luxury we don’t have.

Our plan to sell directly to the education market has been moved to a back burner, if not entirely removed from the plan. Selling directly to schools or school systems is nearly impossible without the right connections. With those connections,  it’s still a nightmare. I’d been warned by other people that trying to sell to schools is impossible. I guess they were right. The closest I came to tapping that market was a connection with Follett Library Resources, the people that offer a search engine of product to schools. The lead dried up almost immediately.

To move to a more generalized publishing market, I’ve directed everyone developing content for Textfyre that the restrictions are mostly off. There’s no need to direct our stories at middle-school students. I’ve asked them to simply develop great stories that can be appreciated by any reader.

We’ve made a splash in online sales and those will continue. With more marketing, we can reach more customers, but that still will take more time (and money). But I have other opportunities coming up that may move online sales to a back-burner as well.

The mobile market is composed of phones like the iPhone, Droid, and any other phone that has some way of publishing an application. We’ve been working on an iPhone application for a while now. We haven’t looked at the Android platform, but are likely to in the future. The iPad is obviously very interesting and the iPhone code that Andrew has been developing can target it as well as the iPhone (as well as being a desktop OS X application).

The problem with the iPhone and iPad is that there are so many applications available that it’s extremely difficult to get noticed and to be able to price your application above $.99. Some people may think it’s a good idea to sell IF at $.99, but I’m not one of them. That would be an unsustainable price point, at least for initial sales.

I’ve also been talking to Microsoft about partnering for the new Windows Phone 7 launch coming this fall. In fact, they called me and they have a strong case. With assistance, I could easily port our Silverlight implementation of our games to the WP7 platform. The UI would take some work and we’d have to run through very rigorous testing, but we’re automatically closer to publishing to the WP7 marketplace than any other.

The last mobile device, the Amazon Kindle, is probably the sweet-spot and I am now talking to the Kindle team about publishing Textfyre games to the device. They opened up a Kindle Development Kit awhile back and although we haven’t gotten into the beta program, I have been able to get Amazon’s attention and we’re discussing the technical details. I should know more in the next week or two.

Of course working with Microsoft or Amazon might require contractual obligations that limit our publishing capabilities (they may expect exclusivity in exchange for support). It’s a business afterall and if I can land a partnership that enables us to build the business, then that’s the direction we need to go.

No decisions have been made, but the fork in the road is coming quickly. I’ll know more about Microsoft and Amazon soon. I already know where our iPhone/iPad strategy is as well as online and physical media sales. I also know that we’re done focusing on schools and students, for now.

Once I know where we stand with Microsoft and Amazon and with the iPad development, it will be time to choose a way forward, rewrite the business plan, and Textfyre will shift into an entirely new business model.

So somewhere way back a couple of years ago, Jesse McGrew helped build FyreVM with a new IO layer we called Channel IO. This has turned out to be extremely useful, especially when building different kinds of user interfaces.

Recently at work I’ve been tasked with designing and building a customer service chat system. The best way to do this is using AJAX Long Polling and the best way to do that is to use a Comet library based on the Bayeux Specification. All of this is some older networking patterns being reworked into existing and future HTML specifications and the underlying pattern is a publication subscription model.

All of my research on Comet got me thinking about Channel IO and that got me thinking about Zifmia and how best to serve many users a particular IF game or to even allow them to play the same game at the same time. It also got me thinking about how we implement output in Interactive Fiction.

Leaving the Zifmia impact for another post, I want to focus on IF output and this has been something I’ve been thinking about for awhile, even outside of the Comet stuff.

In an IF game we have different targeted locations of output. Channel IO handles this great. We can direct text to a main channel, a location channel, a score channel and in the UI place these pieces of text where we want them. Now I’m wondering if we can’t dig deeper into the IF engine and provide a completely different output paradigm. I believe Emily and a few others have actually done things like this in their code, but I think the pattern should be extended as a standard layer.

The idea is to output textual parts given some meta data. Let’s focus on what we consider main output. anything that shows up in the main window. However, we want this process to work for any channel.

The different kinds of parts include sentences and items with descriptions. The meta data might include things like “sentence beginning”, “sentence end”, sentence middle”, “can be preceded”, “can be followed”, “must be listed separately”, and “must be output with a pattern” (and the pattern is somehow included in the meta data).

From here we allow the author to identify pieces of output beyond using just a “say” or “print” command. Possibly:

say “From the crib you hear a wimpering toddler” as sentence-beginning, can-be-preceded.

The result is likely to be some type of markup that has to be processed within the VM.

The idea is that within the IF game, the author is less concerned about format and more concerned about content. The question is, can a post-output processor be smart enough to string everything together properly? Does this break down the talent of an author or does it enable them to do interesting things?

The reason I bring all of this up is that I continue to think of alternate user experiences, server based IF, as well as mobile device output.

The idea is obviously not well-formed, but bothered me enough that I needed to blog about it.

While working on zifmia it occurred to me that I might want the VM to continue running in the background. What if I have a real-time daemon that interrupts the command line after the player has taken too much time? and then I got to thinking about how this could be hacked into the existing I6/I7 infrastructure.

And then I thought that if this were possible, I’d want a more elegant solution and came up with the idea of meta-turns or background turns. The idea is that while the player is contemplating their next move, the VM is offering that spare time to the game to do anything it might want to do. There have been discussions about the need for threading in our interpreters and VM’s and I think I’m starting to see the value.

The most interesting idea is comparable to a game of hide and seek in a house. I do this with the kids once in a while and it’s fun. But it’s really funny when they run to one side of the house and I move to a location they have already searched. This drives them mad, but eventually they start logically nailing down potential hiding places and figure it out.

The same thing could happen in an IF game where state is changing internally, but unless it happens in the current player location, there is no output. So an NPC could walk through ten rooms while the player thinks being none the wiser. This opens up some interesting puzzle development possibilities.

The two main features required would be somehow tagging certain code to execute what I would call a “meta turn” in the background and then allowing the background to interrupt the command line and send output if anything “in scope” changed.

I’m not interested in math or path calculations in a background thread. I’m much more interested in the thematic possibilities.