Workshop in Interactive Fiction A Sample Syllabus Nick Montfort http://nickm.com Prerequisites: 1. Familiarity with interactive fiction (a.k.a. text adventures). If it seems like you might be interested in the course but have had no exposure to interactive fiction, set aside three hours and interact with a couple of short interactive fiction works start-to-finish, then sample a few longer ones to see what they are like. Recommendations for beginners are at . 2. Previous programming experience will be extremely helpful; previous writing experience will also be. Each student will be required to do both programming and writing, as this is what is involved in creating interactive fiction. I hope the class will provide a way for those students more experienced in one aspect to help others with their expertise and learn from others about the aspect they are less familiar with, and for everyone to develop both as programmers and writers. 3. Motivation to write your own creative works and come up with your own ideas for such works. Texts: 1. "IBG" -- Firth, Roger and Sonja Kesserich. Inform Beginner's Guide. IF Library, 2003. This will supplement our approach in class of modifying code. Those without much programming experience will find it essential; others will want to at least look over the book to see what Inform is like specifically. 2. "TLP" -- Montfort, Nick. Twisty Little Passages: An Approach to Interactive Fiction. MIT Press, 2003. We will read and discuss this during the first several classes. 3. "DM4" -- Nelson, Graham. Inform Designers Manual, Fourth Edition. IF Library, 2001. This will be an essential reference for everyone as we work in Inform; it also contains some good writing about IF which we will discuss in class. Development system: We will use a language called Inform, which comes with its own libraries and parser, compiling to the Z-machine. Inform is an object-oriented, procedural programming language created especially for the development of interactive fiction. Inform, which is free, was developed by Graham Nelson in 1993. The Z-machine is a small virtual machine developed in 1979 to enable interactive fiction that is portable across platforms. While the Z-machine has some limitations that become irksome when working on very large works of interactive fiction, it is a stable and widely supported platform and will be the one we use in this class. I will only make exceptions if there are students who have already completed interactive fiction works using TADS, Hugo, or Inform/Glulx, and if these students are willing to fend for themselves with regard to technical support. Select primary sources for study: (Throughout the course we will look at works of interactive fiction to help improve our authorship in the form. Students will be asked to interact with some works at length and will be asked to report on one of these briefly in class and to lead the discussion of that work.) Cadre, Adam. Photopia. Cadre, Adam. Varicella. Disch, Thomas. Amnesia. Meretzky, Steven. A Mind Forever Voyaging. Nelson, Graham. Curses. Nelson, Graham. Jigsaw. Pinsky, Robert. Mindwheel. Plotkin, Andrew. Shade. Plotkin, Andrew. Spider and Web. Short, Emily. Galatea. Primary sources in related forms: The Exeter Book. Selected riddles. Swenson, May. Selected riddles from Poems to Solve. Weizenbaum, Joseph. Eliza. Grading: Project 1: 30% Project 2: 50% Class participation (showing up, doing in-class work): 10% Leading discussions (each student will be assigned to lead one): 10% Academic Honesty: You are to write your own works of interactive fiction -- this means writing the text yourself and doing the programming yourself. We will discuss the details of how you may use pre-existing code while giving proper credit, but basically, you are not to have anyone else write text for you or have anyone else implement your IF work. Computing requirements: A computer lab is probably not the best place for work related to this class, although students who are used to working there may find it adequate. Students will have to do a lot of "reading" or interacting with interactive fiction outside of class (as in a literature class, when one is assigned books to read), and will have to complete two sizable works of interactive fiction outside of class. I hope students will show their works in progress to others inside and outside of class and seek their comments and advice. For these reasons, I would strongly suggest using a notebook computer for such work and study -- even an old DOS computer will work for this class and for future IF development, and one can be obtained for less than $200. I can help students set up Inform on DOS, any flavor of Windows, Mac OS X, Linux, FreeBSD, and maybe even other systems. Having a desktop computer at home is preferable to not having a computer. For interacting with (but not developing) IF, even a PalmPilot will work, as there are two Z-machine interpreters for Palm. Generally a system with a keyboard is preferable, however. Classes: This course is organized in sixteen long class meetings (one meeting per week), although it could be run in twice as many shorter meetings. Some class meetings will be split between discussion of exemplary interactive fiction and discussion of student work. At the beginning, the basics of programming and writing interactive fiction will dominate the discussion; then we'll move to work on the first project more or less full-time in order to get deep into creative work. In between classes I will be available by email to answer questions, carry on side discussions, and talk about specific points of your work in progress (which you can send to me via email). This is a sketch of what will be covered, with "//" dividing topics that will be discussed before and after the break each week. 1. Create a work of IF in class by modification of existing code, start.z5. (Discussion of the basics of Inform and IF as we go.) Read "A short history of interactive fiction" from DM4, Read TLP 1-2, Interact with Shade. 2. Discussion of TLP 1-2, Shade; More on Inform. // Adding onto start.z5 and dealing with added complexity; libraries and abstraction. Read TLP 3-4, Look over IBG. Interact with Eliza. Examine Shade source code. 3. Discussion of TLP 3-4, adding an NPC to start.z5. // Discussion of how writing for IF is special, poetics of IF. Formulate project 1. Read TLP 5-6, play one Infocom work at length. Consult IBG, DM4 as you work on Project 1. 4. Inform: select advanced topics such as daemons, library entry points. In-class work on project 1. // Discussion of Project 1 plans and problems encountered so far. In-class work on project 1. Finish reading TLP. Continue Project 1 work. 5. Discussion of formal aspects of IF, cultural situation of IF, purposes for writing IF. // Discussion of Project 1 plans and problems encountered so far. In-class work on project 1. Have project 1 substantially complete and ready for testing and polishing. Read riddles. 6. Riddle discussion. Conducting beta testing, asking others for comments on design and writing. // In-class beta testing and comments. Interact with Photopia and Galatea. Finish project 1. 7. Project 1 critique and discussion. Interact with Varicella. Formulate your project 2 idea. 8. Discussion of Photopia, Galatea, and Varicella. // Discussion of project 2 ideas and starting points. Interact with Mindwheel. Begin work on project 2; implement one puzzle or task. 9. Discussion of Mindwheel. Poetry and IF. // Discussion of student puzzles and the riddle framework. Interact with Spider and Web. Continue project 2. 10. Discussion of Spider and Web, revisiting Shade. Puzzles and riddles in IF. // Discussion of student work, focus on text as existing for both interpretation and operation. Interact with Curses. Continue project 2. 11. Discussion of Curses, the house as world, the treasure-hunt. // Discussion of student work, relationship of the world to the player character. Interact with Jigsaw. Continue project 2. 12. Discussion of Jigsaw, gender, frameworks. // Discussion of student work. Interact with A Mind Forever Voyaging. Continue project 2. 13. Discussion of A Mind Forever Voyaging, transformation of world. // Discussion of student work. How to scale projects down and actually complete them. Interact with Amnesia. Test project 2 -- it should be essentially complete at this point. 14. Discussion of Amnesia. Levels of awareness of interactor and player character. // Discussion of student projects (due next class). What to do with projects when done? Continue testing project 2 to have it finished next week. 15 & 16. In-class critique of project 2. == END ==