Part two of the Mark of the Ninja prologue. This is part one.
Content and additional software and design © 2012 Klei Entertainment Inc.
Parts of the software and design © 2010 IDM. Undum is available here. Derivative works must include this copyright line and link.
As you decend upon the guard, the light shines in your face. The guard yells out, draws his rifle, and shoots you dead.
In Undum, all interaction takes place in a situation. You can think of it either as a 'Room' in traditional interactive fiction (although it is less flexible than that), or as a 'Page' in a Choose Your Own Adventure book (though it is more flexible than that). At any point in time, the character is in exactly one situation, and that situation is responsible for everything that happens to them. Situations are chunks of code that generate the output you are reading here. For example, this text was generated by the enter method of the first situation.
Lets move on again.
The only piece of the UI we haven't talked about is the 'Save' and 'Erase' buttons on the left panel. These are only visible if your browser supports client-side data storage. Clicking 'Save' stores your game, so you can pick it up again later. There is currently no 'Load' button, the game loads when the page loads. There is also no way to save multiple games, and select which one you want to play. These are both things I'd like to change in the future.
Potentially your game could generate huge amounts of text. And that would be difficult to store client side (there are unpredictable limits), especially when we move towards having multiple save files. So instead Undum saves your character as the list of links you clicked. Loading a save-file consists of playing through your game again, quickly. This is a beneficial approach for debugging too. It means when you're polishing and correcting typos, you can save and load the game and scroll through the transcript to see your corrections. If we saved the text, your save file would have the error in it and you'd have to manually replay the game to see the correction.
Time for the last section.