Posts Tagged ‘education’

It’s been about a year since I have actively worked on the educational aspects of Textfyre. I have been spending most of my time putting the Windows 8 Store version of Shadow together and doing other things.

The Windows 8 Store app is in a holding pattern until I solve a save/restore issue within FyreVM. When I do a Quetzal restore, the engine goes into an infinite loop. I’m afraid this crossed the border of my programming capabilities, so I’m at the beck and call of others to solve this problem.

On Wednesday, the IES posted two educational technology grants (http://1.usa.gov/1hFd61j) worth $150,000 and $1,050,000. I wasn’t really prepared for these grants in many ways, but I’m trying to gauge if I can ramp back up to complete all the work required to submit the proposals.

We would probably need about $12,000 to complete the proposals and associated work, but that’s a lot of money to gamble when you’re a lean start-up. On the other hand, I do believe the idea of creating educational material through Interactive Fiction is a viable solution. The $150,000 grant would go a long way to either validating or invalidating my vision. Certainly the larger grant would go further.

I need to figure everything out as quickly as possible. Proposals are due in a month and the grant-writing process would require all of that time. I’m wondering if this is the sort of thing I could push out to Kickstarter or Indiegogo. I’ve already approached one private angel investor and may talk to a few others.

I’m looking for guidance on the proposal process and the cost of getting into the game, so to speak. If I did a Kickstarter, I’d have to set a quick deadline. I couldn’t do a 30 day project. It would have to be 10 days at the most. I’m not familiar enough with Indiegogo, but I assume it’s similar. There are other funding sources, but I am not familiar with all of them.

So we’re making a lot of headway on our product, both the student game playing side as well as the teacher dashboard. Take a look…

Image

 

We’re about to start working in schools with teachers and students to further refine the system and we’re talking to Gates Foundation and New Schools Venture Fund to see how we align with their programs.

I’d like to extend an invitation to anyone that wants to join the evaluation and refinement process. I can give you access to the system and you can offer your thoughts on the user interface and system overall.

I’ve written several times about the development of a client-server Interactive Fiction platform. Parts of this system are called FyreVM, Zifmia, and other parts are just plain old web application development. FyreVM was created years ago and is a very stable implementation of the Glulx virtual machine. Zifmia is a state-machine wrapper that allows FyreVM games to run on a web server with all of the commands coming through AJAX calls and output returned as JSON. I wanted to provide a more detailed view of the new Textfyre system’s construction.

Technology
I spent a good portion of my spare time last summer working through the technical issues of a client-server implementation of FyreVM/Glulx. I’d had a very rough prototype, but last summer I sanded down the rough edges and came away with something solid. There were still major issues to resolve, including the design and persistence, but eventually I was able to send commands into the server-side engine and receive story data and display it on a web page. The next step was to turn it all into something “enterprise” ready. Something that initially could handle hundreds of users, but also be able to scale.

The first thing I worked on is making a reasonably clean “library” of JavaScript and jQuery code that was layered and maintainable. I then took all of that code and implemented an ASP.NET MVC 3 website. This allowed me to implement Clean URL’s, but also has a built-in capability for creating RESTful web services. It also allows me to continue using C#, since that’s how FyreVM and Zifmia were coded.

An additional benefit to using RESTful web services for all game play is that other types of clients can be developed later (iPad, Android, Windows 8 Metro).

Storage
One of the primary differences in this approach is that all of the game data is stored on the Textfyre servers. You might call it Cloud-IF since the player could conceivably play the same game from many computers and devices without any concern for saving, restoring, or managing files. The system stores the results of every turn and provides a user-interface that lets the player “jump” to any historical turn. The user interface even tracks branches, so the player can see where they jumped and where they changes paths.

This is done using Eloquera, an object-oriented database. It allows for very simple storage and retrieval of session data.

Design
Not to stress this too much, but designing a modern user interface for Interactive Fiction is very difficult. Juhana Leinonen set the standard with his Vorple demonstration a year ago at PAX East. Jon Ingold and his partner Joseph Humfrey are doing some amazing things at Inkle Studios (Note: Jon Ingold is the co-designer and writer of Textfyre’s The Shadow in the Cathedral). I’d like Textfyre’s offering to be capable of similar results.

Styling
With that in mind, I’ve left all of the styling capability of this system to external resources. I considered adding a bunch of CSS capability to an Inform 7 extension and asking the author to work under those constraints. After a few passes, this was simply tiresome and very much the wrong direction. I designed the IO of FyreVM to be design neutral for a reason. I believe firmly that content should not know about how it is formatted; outside of emphasizing text with boldface, italics, or similar in-line styles. Any placement or styling beyond that should be handled by the content type. Since FyreVM allows the author to channel output to different content types, this is easily handled in the “interpreter”. In this case, the browser is our interpreter. We simply take content types and associate them to browser placement and styling.

Templating
The next assumption I made was that whatever template I designed was only going to be the default or standard template. There are a set of guidelines for authors or anyone interest to develop their own template. It may be daunting for an author and certainly a non-programmer to develop a template using HTML5, but it’s certainly not impossible or even improbable. I think the results of Vorple and Inkle Studios is confirmation that the IF world has the talent.

The standard template is very similar to a standard desktop interpreter with a few changes. Images can be identified by the game by filename and embedded in-game play, a map can be identified, and a few other visual elements allow interaction with the game, including displaying the player’s current inventory.

It would not be difficult to modify the standard template to move things around. Swapping in a new CSS file could change the entire design, similar to the way CSS Zen Garden works.

Web Services
I mentioned that game play is implemented using RESTful web services. Each service is called with a Clean URL and returns JSON (JavaScript Object Notation). HEre is a list of all of the possible web service calls (all executed through HttpWebRequest, always from a jQuery command):
Register player – /Register/{username}/{password}/{nickName}/{emailAddress}
Player login – /Login/{username}/{password}
Is Authorized – /IsAuthorized/{authKey}
Validate Player – /ValidatePlayer/{validationId}
Session Start – /SessionStart/{authKey}/{gameKey}
Session Get – /SessionGet/{authKey}/{sessionKey}
Session History – /SessionHistory/{authKey}/{sessionKey}/{branchid}/{turn}
Session Command – /SessionCommand/{authKey}/{sessionKey}/{branchId}/{turn}/{command}
User Session List – /UserSessionList/{authKey}
List all installed games – /Games

Game Data
When the player enters a command, it’s sent to the Session Command web service. This service executes the command and gathers all of the data. This data has always been called “Channels”, but you could also call it labelling. When the author is emitting text in a game, there are different kinds of text. FyreVM automatically determines most of the types and labels them accordingly. So the room title and description get labelled “Main”. The room title also is labelled “Location”, the score is labelled “Score”, time “Time”, turn “Turn”, and so on. The list of standard labels includes:

Prompt This is the text that precedes the prompt. In a standard IF game, this has always been “>”, but in our system, it can be any normal text.
Main This is the main text of the game, which includes any ‘before’ text, the location title and description, any object lists, and ‘after’ text.
Time This is the time of day within the game. It’s not always implemented or used, so the standard template looks at the Settings text to see if it should be displayed or not.
Location This is the location name.
Chapter If a game implements chapter titles, this is that text.
Credits This is the list of credits for the game.
Hints This is the current list of hints for the game. This data has to coordinate with the browser properly, so modifications to the standard template are required.
Score This contains the current score, if one is offered. The Settings text will identify if a score is displayed or not.
Title This is the game title.
Prologue This is the text displayed in the ‘When play begins’ rule of the game.
Turn This is the current turn number.
Tips This is a tip for the player.
Version This is version of the game.
Verb This contains the verb in the last command.
Tutorial This contains tutorial text.
Maps This contains a map image filename or some other text to show a map to the user. The standard template uses images (that change throughout the game).
Dead This is the text emitted when the game has ended.
Settings This text contains information on whether other types of text should be displayed or not.

Authors can dynamically label alternative content, which can in turn be displayed in the browser based on author preferences.

All of this data is returned in JSON and looks like this (this is an excerpt from a running version of Cloak of Darkness):

"Channels": [
{"Name": "PLOG", "Content": "Hurrying through the rain-swept November night, you\u0027re glad to see the bright lights of the Opera House. It\u0027s surprising that there aren\u0027t more people about but, hey, what do you expect in a cheap demo game...?"},
{"Name": "CRED", "Content": "Cloak of Darkness by David Cornelson\nGame Engine (FyreVM) by Jesse McGrew\nZifmia by David Cornelson\nInform 7 Programming by Emily Short and Graham Nelson, with Channel IO updates by David Cornelson.\nSpecial thanks to Graham Nelson and Emily Short for all of their hard work on Inform 7."},
{ "Name": "SCOR", "Content": "0"},
{ "Name": "TUTR", "Content": "You might try going WEST from the Foyer of the Opera House"},
{ "Name": "TIME", "Content": "540"},
{ "Name": "LOCN", "Content": "Foyer of the Opera House"},
{ "Name": "PRPT", "Content": "What do you want to do next?"},
{ "Name": "MAPS", "Content": "cloakmap-dark.png"},
{ "Name": "MAIN", "Content": "You are standing in a spacious hall, splendidly decorated in red and gold, with glittering chandeliers overhead. The entrance from the street is to the north, and there are doorways south and west."},
{ "Name": "TURN", "Content": "1"},
{ "Name": "TITL", "Content": "Cloak of Darkness"}
]

There’s a framework in place to convert the JSON data into a known JavaScript class, so “PLOG” becomes game.Prologue and “LOCN” becomes game.Location. This can then be displayed by updating the web page through a jQuery command, like this:

$("#promptText").text(game.Prompt);
$("#locationTitle").text(game.Location);
$("#chapterTitle").text(game.Chapter);

Summary
The new Textfyre website is nearly completed and in coordination with several eReader publications, is due out soon. It’s taken a long time to work through all of the technical details, but I think the results will be very attractive to Interactive Fiction game players as well as authors, teachers, and educational content providers.

I know no one gets excited about vaporware, but the new Textfyre website will address some of the issues Jim talks about here.

Based on my work on Zifmia, which is a client-server engine based on FyreVM, which is a .NET implementation of the Glulx specification, I have been able to build a new Textfyre website. This new website is intended to be a portal for client-server Interactive Fiction games.

Here is the scenario I envision for the portal:

An author uploads a gblorb file that contains their game and images. In setting up their game, they select a template, which is used to display the game in any supported browser, including mobile and tablet browsers. The template is made up of JavaScript, HTML, and CSS. The author may offer their own template and a way to test templates locally will be enabled. The ability to use the portal in an IFRAME will also be available, allowing the author to show the game on their own website or blog. Facebook integration is an important part of the future of Textfyre’s strategy as well.

Games are played in a standard fashion, but mostly based on whatever template is devised. The template I’m working on is a hybrid of things we’ve seen over time and a slightly out of date version can be seen at http://beta.textfyre.com.

One of the major differences with the portal is that every turn of every game is saved on the Textfyre servers, in the cloud. If you play the game on any connected device, you will never lose your places. Save, Restore, and Undo become irrelevant. The user interface will have a mechanism to jump to any turn the user has played. If they type a new command at a previous turn, the history branches. These branches are displayed to the user and can be panned and zoomed and reviewed.

Obviously, this is a connected service. Future implementations may include client-side storage, but it’s not on the radar today.

I have Cloak of Darkness working as an example. I’m still (slowly) working on the standard template and Shadow will be implemented as a pay-to-play game when the site is released publicly. Secret Letter will follow and we’re working on getting Empath’s Gift completed, at which time it will also become a part of the portal.

I would love for an author to step up and offer to work with me on the standard template or a new template for their own game. If anyone is interested, let me know. This is mostly going to be undoing any Glk specific code in your game file and replacing it with FyreVM stuff and then working on the client-side code.

When I was at TechWeek, a start-up/entrepreneurial conference here in Chicago, I met a couple of representatives from Encyclopedia Britannica. We chatted about my company and what we could do if we worked together. This led to a meeting in their office in the city this morning.

I gave them a demonstration of various Interactive Fiction examples and we talked about how we could develop classroom oriented applications using their content and the IF medium. They were very excited about the prospect and we’re moving forward with a plan to develop a prototype. They’re offering access to all of their content and when the prototype is ready, they will do the leg work of putting in front of administrators, teachers, and students and gathering feedback. If the prototype looks marketable, they will take over the entire marketing and sales process.

Textfyre has moved away from a strictly education-oriented model, but this is likely to branch some of my efforts, which is a good thing.

I still need to get in touch with my contact at the Chicago Public Schools, so stay tuned for more education-oriented news.

I keep track of government grant opportunities, even though I would need a partner on the academic side to apply for one.

Check out the list at

http://ies.ed.gov/funding/ncer_progs.asp

Textfyre is extremely close to completing its delivery platform, proving its concept, and building a customer base.

In order to enable growth we are now looking for a Marketing Director to become a founding member of our company. The ideal candidate would be someone with publishing experience, education experience, and building trust with soccer moms or parents looking for supplemental education products.

This is an immediate and critical need. Please contact me directly if you’re interested.

David Cornelson, President
voice: +1 01 630 803 4302
email: david plaque textfyre dust com (where plaque is @ and dust is .)

I’m sure anyone reading the blog and interested in the progress of Textfyre is wondering when we’re going to publish our first game. As I have said from the beginning, “We’ll get there when we get there.” and that statement still holds true today. We make progress in spots and we’re learning a lot about the business and artistic needs of the company as we go. Here are some of the things that have happened recently…

I did indeed hire an assistant, Sara Lieberum, to help with the internal business processes. Sara is an expert at helping start-up companies get organized and she’s a welcome addition to our team.

In the search for an assistant, I also found Justin Greene. He didn’t fit the assistant position, but he has a a great understanding of school systems and so we’ve hired him as our educational consultant. Justin is busy learning about Interactive Fiction, our products, and will be developing the lecture and lesson plans for middle school language arts classes. This coincides with our plans to develop an institutional version of each game.

In the process of looking for a UI developer, two people approached me that may well solve many problems going forward. The first, Will Capellaro, is a brand design developer. He’s taking on the role as part-time Art Director for Textfyre and has already proven to be an excellent partner in helping me understand the business side of managing artwork development.

The second was Thomas Lynge from Tenteo in Denmark. Thomas is a big fan of Interactive Fiction and has already started to help with the UI programming. They’re experts with WPF and Silverlight and have suggested that they would be very interested in developing a Silverlight version of the UI. Since having an online playable version of our games is important, this is a fantastic development.

On the game side of things, Secret Letter is nearing completion with its testing, Klockwerk is in the final writing stages and I7 programming is in-progress, and Giant Leaps has just begun its writing phase.

I’m hoping to have teaser online playable version of Secret Letter ready the next time I post. Stay tuned.

A couple of things are happening right now as we prepare for launch.

In regards to content, we’re very busy testing and increasing the quality of Secret Letter. In conjunction, we’re also working on the design and writing for the second Miradania game, Trials of the Vedd. The first game in the second series, Klockwerk – The Shadow in the Cathedral, continues to to near its design completion and we will begin implementation in the coming months. We have other content in development and we will report their progress in the coming months.

On the user interface front, we have clear milestones to achieve and we’re working with consulting partners to complete those tasks. We should have a solid beta product within the next month or two.

We’ve begun working with marketing consultants to develop and refine our strategies for getting the word out on our company and our products.

And we are now in a major push to locate and obtain investment funds that will allow us to implement our marketing strategy at a high level. We would like to ask anyone with contacts in the angel investor world to bring our company to their attention and have them contact me directly at david/at/textfyre/dot/com or they can call me directly on my cell phone at 630 803 4302.