Welcome to the Mystery Machine

Synopsis

The mystery machine is an application for writing freeform games.

In particular in is a database ,targeted at building highly intricate and linked documents. These documents are expected to be in a natural language . The system has to merge paragraphs from different sources. This paragraphs can contain embedded references and conditionals based on other parts of the system.

Each System (eg, complete game or other project) developed in Mystery Machine is created from a collection of Objects

Object Model

The 'prototype' object model will be the dominant object model used by the system although it will separate objects into Categories.

Categories can be defined by the users, and these are aligned with the different types of documents the system will need to produce

ie.
  1. Character Sheets
  2. Rule books
  3. Item Cards
  4. GM Plot Summary's

Object Identity

The other primary use for the Category system is to provide a structure for naming the objects in a consistent and unambiguous way. Each object will be designated an id , which is unique only within it's Category. As such a Objects can be referred to as Plot:1 , or Character:10. The ':' Character is used as the separator.

Object Structure

Each object is made up of a number of Attributes. These Attributes can represent a number of different things such as:-

  1. A paragraph for inclusion in a final document.
  2. A reference to another object.

The value of each attribute can include by reference the value of any other Attribute in the system. So if you always refer to a character by its 'Name' attribute, you can rename it later in the development of the game - safe in the knowledge that it should get rename automatically everywhere it is mentioned.

More complex use of attributes can bring together various information stored say in the Plot category and add it into each characters background, keeping track of any custom modifications required to keep the text reading smoothly.

Templates

Templates are the prototypes used by the object system - and are used to help predefine and new object in the system when one is created.

I currently have a choice about when vivifying an object whether I copy all the data actually out of the template object into the new object or just use the system to fall back to the 'prototype' object when an undefined value is referenced.

Templates must will be stored within each project so they are also under revision control, this is critical if editing a template can effect it's children.

However I suspect the application will have to provide support for a template catalogue so that user less familiar with some the advanced concepts in the system can get started.

More here - DeveloperInformation