PRIME DIRECTIVES - An interactive fiction should be simple enough that one paragraph of instructions are enough to start playing, and details can be learned during play. - An interactive fiction should understand every word that it itself uses. - An interactive fiction should never place the blame for misunderstood input on the player. - An interactive fiction should make every effort both to understand player input and to teach the player to enter more understandable input. - An interactive fiction should be about a story or experience, not a parser or interpreter. - An interactive fiction should be meaningfully interactive, and not tell a story that would be equally effective in a non-interactive medium. - An interactive fiction should make interacting with people as fun and easy as interacting with objects. - An interactive fiction's author should be able to control every aspect of the words and letters the player sees, even if not all players will experience the work identically. BRIEF DIRECTIONS - Enter any single word used by the game to focus your attention on something - Enter commands beginning with verbs to perform actions. - Enter GO and a location, or a direction to move around. - When speaking with other characters you'll get a double prompt. Speak as if actually talking to them, but try to speak simply and avoid slang and colloquialisms to be best understood. - Enter nothing and press enter to let the time pass. - Enter UNDO to take back something you accidentally did. - Enter HELP for more information. DETAILED DIRECTIONS TO SEE THINGS: Type anything the game describes to you to examine it in more detail. The game will understand any word it uses. TO DO THINGS: Give commands beginning with a verb to interact with the world. Some commands need only one word (LISTEN, WAIT, SLEEP, JUMP), while others requires two words (PUSH BOULDER, OPEN DOOR, READ BOOK, GO OUTSIDE, SIT DOWN). You may use more than two words if it feels appropriate (TALK TO ATRUS, SIT DOWN ON THE CHAIR, FOLLOW THE MOUNTAIN GOAT) but in almost all cases the two word version will work just as well (TALK ATRUS, SIT CHAIR, FOLLOW GOAT). TO MOVE: Type GO . This may be a nearby area such as BUILDING, PATH, or ENTRANCE, or a more distant place you've already visited, in which case you will move in the appropriate direction (but usually not all the way). Directions such as NORTH, SOUTH, EAST, or WEST may be abbreviated as GO N or just N). TO HAVE CONVERSATIONS: Begin by saying HELLO. Whenever you see the double prompt >> , you are conversing with a character and whatever you type will be interpreted as conversation. Speak clearly and succinctly to be best understood. >>HELLO MY FRIEND HOW ARE YOU TODAY? will probably produce better results than >>WHATS BEEN HAPPENING ALL MORNING YOU CRAZY FOOL YOU. To finish your conversation, just type a normal command, or type GOODBYE. TO LET THE TIME PASS BY: Just hit enter to do nothing and let time pass. You may also type WAIT. TO BRING UP THE "CONTROLS": Type HELP to bring up a list of commands for things like saving and restoring, adjusting game settings, and other actions which occur outside of the game world. GRINform Features - Input which matches the name of any object will act as if the input was EXAMINE OBJECT. X If the object is not in scope, an error message will acknowledge that the game recognizes what the player is talking about. ? If the object has never been seen before, behavior will be identical to input asking about a nonexistant object. (assumes if only one.) X If multiple objects seem to be referenced, disambiguate. - GO allows the player to type a word in the description matching an exit location to act as a synonym for the direction. X GO BACK will return the player to the previous location, if possible. - GO and a distant location or a previously visited location will move the player one room in the direction of the location. X GO in a room with one location will go that direction. X EXITS will summarize the ways out of a location. - Preparsing is done on the player's input to prepare it for validation. 1) Words not in the dictionary are checked for possible misspellings, then replaced or stripped. 2) All punctuation ('?!.," etc) is stripped & gaps are closed. 3) Checks are made to insert a verb and/or noun if shorthand is used. - The best effort possible is made to convert the player's input into a valid command, if it is not. After each step the input is reparsed to see if it validates (matches a grammar line). 4) If the input contains non verb words before a verb, the first word is stripped until the first word is a verb word and the command is tried again. 5) Irrelevant words like prepositions and body parts are stripped. 6) The first word (now a verb) and the next word are tried alone. (D) 7) The first word is tried by itself. (D) 8) If steps 6 or 7 produced a valid input, disambiguate then continue as normal. Otherwise, fail the command. - The valid command produced is then checked for sensibleness: 1) If the command is a verb with no noun, disambiguate. 2) If the command is a verb with a noun not in scope, mention this. 3) If the command makes sense up to a point, disambiguate. 4) If the command references an object that the player has not discovered yet, print an appropriate error message. - Disambiguation questions number the options and get special input on the same line as the question. Pressing enter returns to the standard prompt. If there is only one option possible, no question is asked. - Parser errors, disambiguation questions, meta information, etc. are printed in a different style than the story text. X Mentions of body parts or clothing will, if not otherwise parsed successfully, produce an error message instructing the player that it's usually not necessary to refer to these. X Entering no input maps to WAIT. ? Some actions will have fallback actions if there is no custom response for the initial command. If the object has no response to PUSH, the game checks for a response to TOUCH before printing the PUSH failure message. (might be tricky to implement.) - Search --> Examine - Take --> Pull - Remove --> Take - LookUnder --> Search - Touch --> Examine - Push --> Touch - Turn --> Push - Pull --> Turn - PushDir --> Push - Rub --> Touch - Squeeze --> Touch - Cut --> Attack X Conversation is begun by typing HELLO or variations. During conversation the prompt changes to >> and the player types what they want to say. A limit is placed on the number of words/characters that can be entered. Natural language processing is done on the input to look for keywords (mapped to ASK ABOUT), tone, and imperatives (mapped to ORDERS). Conversation ends when the player says GOODBYE. NPCs may start or end conversations. If player input seems to be a command, a disambiguation message is printed. X GRINform provides three types of "name" properties to assist authors in achieving the goal of recognizing every word used: 3) The standard "name" property is used for nouns referring to the object. 2) An "adj"(ectives) property is used for descriptive and supporting words. 1) A "supp"(lemental) property is used for words indirectly referring to the object. These three properties are hierarchical. A word which matches the name property of one object in scope but only the adj property of another will match the former. If multiple words are used, the word receives a score of 3, 2, or 1 depending on category. "supp" words are not checked when looking for references to items not in scope. TYPES OF ERRORS - Misspellings (TAEK BOOK or TAKE BOOKE) - Misunderstood words in otherwise valid input (TAKE THAT COOL BOOK) - Commands with no valid verb (CONFOUND ATRUS) - Commands with no valid noun (TAKE CHAINSAW) - Commands with no valid verb or noun (CONFOUND SIMPLETON) - Verbs that require a noun, but none is entered (TAKE) - Complex commands understood up to a point (PUT APPLE IN SDFSDF) - References to objects not in scope (TAKE TREE) - Commands that do not seem to be imperatives or references to objects, or that contain I or other warning words (I AM READY TO FIGHT) - References to objects not yet discovered by player (TAKE ROPE) Issues: - If an unknown verb is used and the input becomes just the noun, EXAMINE NOUN will be generated, which may be misleading for the player: >BRING BAG The bag is heavy and laden with herbs. - A command in the wrong format might be reduced to a verb which produces undesireable actions. >I AM READY TO FIGHT! You attack the storyteller savagely. >BOOK Did you mean 1) the bookshelf or 2) the book of recipes? Just press enter for neither.> - OK. Try rephrasing your command. >BOOKK Do you mean Atrus's journal?> > - Saying GOODBYE to end a conversation is awkward if the player wants to perform an action (like EXAMINE or ATTACK) in the middle of a talk.