A few months ago I mentioned that I was working on a book about Inform 7. That book, Creating Interactive Fiction with Inform 7, has just gone to the printer, meaning it should be shipping in about three weeks. It's 448 pages with a foreword by Don Woods (co-author of Adventure) and a closing thought by Richard Bartle (creator of the MUD). It is, I believe, only the second book specifically about interactive fiction to be released by a mainstream publisher since the 1980s (the other, of course, being Nick Montfort's Twisty Little Passages). Needless to say, I'm honored to be in esteemed company.
The book teaches readers how to tell an interactive story with Inform. Working through its chapters, readers will construct a complete IF called Sand-dancer, which I created in collaboration with professional game designer Alexei Othenin-Girard. This is a real game, not just a half-baked example, and I walk through every step along the way from initial design through beta testing and debugging (including diagnosing and fixing over a dozen real bugs encountered by testers).
The book assumes no prior knowledge of programming, but also doesn't treat I7 like a regular programming language: loops, for instance, are barely mentioned. In fact, Thinking in Inform 7 might have been a good title. Writing this book has taught me much about the language that I never knew: some more elegant syntaxes, better ways to use others, how to write with rather than against the strengths of the language. I hope the book can help pass on this knowledge, both to newcomers and those who've already fired up an Inform project or two. The book is also up to date with the latest release, showcasing much of the new power and flexibility introduced in recent months, and uses none of the deprecated features that will soon be removed.
I feel it's impossible to design good IF without learning some of the fundamentals of storytelling, so in addition to teaching syntax, the book also delves frequently into narrative theory and design. I talk about good practices and design patterns, and style tips like how to write good descriptive text or good library messages. I also look into why things work the way they do: why are rooms so common in IF, and what are the pros and cons of an ASK/TELL based conversation model? Finally, I also heavily employ and recommend the use of existing extensions, in the hope that new authors will be able to bootstrap themselves past the struggles and coding challenges that have already been solved.
I'll have more to say about the book in the weeks ahead, but in short, I'm proud of the result, and grateful to the many who have helped make it happen.