Undum is tool for writing works of hypertext interactive fiction, designed for HTML 5 and CSS 3. Undum provides a basic framework that the author/designer can customize to the needs of his or her work of interactive fiction. This framework incorporates three key features:
- Situations
Actions
Qualities
A situation is narrative space for the user to explore/read and perform some sort of action (by clicking on a link). In other words, a situation is a chunk of code that is responsible for adding content to the screen and then responding to user interaction.
A link may change the current situation, in which case another situation is loaded, or perform some other action. The default design structure dictates that when a situation changes, all links that were previously available are removed, so that the reader/player cannot go back and try alternative options after committing to one. (It is possible to override this behavior.) There is always exactly one active situation. These situations, and the links between them, form the structure of the narrative/game.
A situation may contain several actions for the reader/player to perform. These actions are internal to that situation and normally do not cause the situation to change. Actions may output more content, including new links for the user to select or additional information.
Qualities represent the current state of the character. Internally they are all numeric values able to take on any decimal value positive or negative. They have no meaning to Undum, rather they are given meaning by the author's code. For example, available actions may be dependent on their value, such as whether or not a specific link or bit of information displays. Qualities can represent any kind of value, as determined by the author and then incorporated into the narrative environment.
Undum uses HTML, CSS, javascript, and jQuery. The Undum Tutorial takes the form of an interactive narrative, giving the user a sense of the basic reading environment and structure. It is available free for download at github.