Pure .NET Based IF Platform

I started working on an IF platform in .NET using VB.NET. Like many wishful thinkers, I got to the point where you have to start making serious decisions about how the parser, actions, and world model come together. My experience is with Inform 6 and 7 and I am by no means a string developer in either system.

I do, however, have a good grasp of the concepts involved. I could complete a workable system and spend time making a basic library for people to use. But then I switched gears.

I now want to think about ways we can leverage .NET (any of the languages) to create IF games. This includes using xml configuration files, an embedded sql database, winforms, silverlight, wpf, xaml, web services, blend, LINQ, and anything else we can come up with.

The other thing I’ve always believed, from the moment I gave up on Visual Inform back in 1998, was that IF has different problems that might be better served with varied tools. One syntax might not be the best way to offer authors a simple path to making great works. It seems there may be multiple problems with multiple solutions. The trick is to allow all of the solutions to point to a single result.

So those are my two main design requirements. Pure .NET and Domain Specific Tooling.

Some of the .NET things I’ve been thinking about include:

A declarative syntax that pre-loads a database with facts which is then managed by rules. The state of the game is contained in the database at all times. Each turn, a decision tree is created and once the entire path is determined, a transactional update to the database is made, including a list of things that need to be reported.

Some of the problems in .NET that appear to beg for a DST include:

  • mapping (we have some visualization tools…the box and line style is okay, but it’s also nice to see the floor map style too)
  • conversation (let the author pick the style of conversation, and then develop a tool to enable the easiest way to edit that style)
  • npc’s (I see a tool that sort of looks at the world model from the npc’s perspective and allows the author to make rules based on this view)
  • automation (a tool to automate portions of the world model in interesting ways)
  • output (no thoughts on this at the moment)
  • rules (nothing to add here for the moment)

So anyway, I have a Subversion repo and a few Google Waves for people to peruse, but I thought I’d also bring the conversation over here.

If any one wants to chime in, feel free.

David C.

Just one comment – are you familiar with language oriented programming (jetbrains.com/mps/index.html)? I’m not sure that anything useful has been created with that, but I was reading about it recently and there were some interesting ideas.

Coincidentally I’ve been thinking about the same kinds of things lately, partly as a result of using Leo (webpages.charter.net/edreamleo/front.html). Because IF combines code and prose to an extent unlike most programming languages it seems especially suitable for development with a variety of tools.

The Python library pyf (code.google.com/p/pyf/) separates the world model (as an xml file) from the game logic (as a Python file). To be honest editing xml by hand is not my favorite thing in the world but it does open up the possibility for a more user-friendly tool to create the same data.