Evaluation of Inform - Part 1 Taken from the "Which Authoring System is Better" FAQ By Bob Newell (bnewell@gobblernet.sputnix.com) As in the last article on TADS, the evaluation category weightings have the following approximate meanings: 5 Critical 4 Very important 3 Important 2 Desirable 1 Nice Release discussed: 5.5 Author contact information: Graham Nelson, nelson@vax.ox.ac.uk Description. Inform is an interesting creation, in every imaginable way, and arose from a unique concept: Graham Nelson's inspired idea of creating a compiler that would produce Infocom format story files, in a sense calling upon and reviving the greatness of the Infocom era. Along the way, Graham developed Inform to the point at which it is clearly in the premier tier of interactive fiction authoring systems. Inform's heritage delineates Inform's peculiarities and strengths at the same time. The Infocom story file format imposes limitations; it also ensures high portability and a well-understood run-time environment. Inform has recently been used to produce works such as Jigsaw, which leads IF in new directions and set new standards. Inform, in a rather short time, has evolved from curiosity to a pre-eminence shared only with TADS. Inform is not especially like Pascal or C, although probably closer to C than to anything else. It is an object-oriented like language, in that building blocks make up the structure of an Inform program; yet it is not "pure" in the way TADS is. Inform, while it has its own peculiarities, has its own elegance as well. 1. Documentation, Weight 5. Rating: 4. The Inform documentation has been the subject of recent newsgroup controversy. Graham has published three documents: The Inform Designer's Guide, The Technical Manual and Z- Machine Specification, and The Craft of the Adventure. The Designer's Guide is the programming manual for the system. Esoterica are covered in the Technical Manual, while Craft of the Adventure deals with authorship and stylistic matters. The second edition of the Designer's Guide is up-to-date with the current release of Inform, 5.5. The Guide is over 200 pages in length, with extensive discussion, examples, and exercises, with a good index. Nearly all of the omissions of the first edition have been cleared up and the Guide as it stands is complete and highly useful. It is available in all sorts of electronic formats, from an ASCII version suitable for on-line use, to a TEXversion which formats elegantly. The Designer's Guide reflects Graham's eclectic tastes as well as his phenomenal literary knowledge and depth. As such, it is very much to the liking of some and less to the liking of others, on stylistic grounds. On technical grounds, some feel it is not as "beginner-friendly" as the printed TADS manual, and have criticized the exercises as being too difficult and requiring knowledge beyond the level the reader is likely to have reached at a given point. Although I cannot be fully unbiased, having lived with Inform for a long time at an intimate level as the maintainer of the DOS ports of the compiler, I feel the criticisms are largely unwarranted. Separately written Inform tutorials are available, and the manual does not in fact purport to be a tutorial for beginners (as indeed, it is not). The manual is complete, well-written, and filled with useful examples. It is an indispensable reference guide which seldom fails the user who has gotten beyond the stage of rank beginner. And, for the beginner, a separately written hyper-text tutorial of high quality is readily available. The Technical Manual will be needed by those few who want or need to do assembly-language Z-machine coding, or who are simply curious about the internals. The run time format is well documented and a wealth of detailed information is at hand. The Craft of the Adventure is well-done and should be read by any prospective author regardless of the authoring system finally chosen. The paper gives some very good hints, suggestions, and ideas which are highly worthy of consideration. 2. Ease of Use, Weight 5. Rating: 4. Every language has its peculiarities, and Inform is no exception. Coding is quite clean and modular, with each object (be it location, actor, or material object) having its own logically- arranged block of code. Syntactical peculiarities creep in with the need to distinguish between "description" and "describe" and "name" and "parse_name", and various conventions about printing strings, return values, and other exotica. Verbs are applied to nouns within the block referenced by the noun, similar to TADS. Instead of verification and action methods, Inform uses "before" and "after" methods, as well as an easy to use grammar table. Objects are easily reused; and the coding structure of even disparate objects is enough alike to make programming go a lot faster than it would otherwise. It is my feeling, not backed by analytical evidence, that the neophyte will get more done at an earlier stage with Inform than with TADS; and at a later stage, when the language is learned well, there is little difference although TADS might have a small edge. This is not to say (like TADS) that Inform is a language for a neophyte. Again, with a powerful, broadly-applicable system such as Inform, it is only reasonable to expect the prospective author to spend time up front working with the language and learning to understand and leverage its many features. 3. Parser, Weight 5. Rating: 5. The parser is as good as they come, dealing well with compound sentences, antecedents, resolution of ambiguities and the normal range of parser problems and issues. In these respects it is the equal of the excellent TADS parser. The advantage of the Inform parser, though, is ease of modification and adaptation, since it is largely contained in the libraries rather than in the program (as indeed, given the nature of the Z-machine, must be the case). Ease of parser modification comes up frequently in newsgroup discussions; surprising as this might seem to the beginning author, at a rather advanced level, this becomes an issue. It is also an issue, as noted once before, to writers wishing to create IF in a non-English language. (Off-the-wall irrelevant comment: some day I would love to see a parser for Tagalog. With its extensive use of passive voice constructions, it would be a challenge. Although, the Inform parser already has been translated into Spanish: :): 4. Support, Weight 4. Rating: 5. Support for Inform is readily available on the newsgroup, and Graham, the author, is quite responsive to compiler-related questions, although he evidently receives all too much e-mail and should not be bothered unless there is no other alternative. Newsgroup support is generally very fast and of high quality. There are a few really high-level Inform experts who seem able and willing to respond to all sorts of enquiries about Inform programming. The various ports of Inform seem well-supported also. I jealously protect the integrity of the PC ports, and this approach is shared by the other porters as well in fact, the Mac porter, Robert Pelak, is continuously enhancing the interface. 5. Language Depth, Weight 4. Rating: 5. Language depth is very great, nearly as great as TADS; and in fact it is possible to do just about anything in Inform that can be done in TADS, and in some cases a few different things, which amounts to a lot of power. Inform offers a good set of operators, a library which provides a good set of objects and functions, and some unique and powerful features such as "scoping" rules. Scoping rules are a powerful and flexible means of determining when an object is in-view, "takeable", etc. (A significant part of the TADS "World Class" libraries deal with issues that amount to scoping questions.) Inform also allows for objects that span multiple locations, a useful feature for implementing something like carpet, grass, or snow. Although this is perhaps more of an ease-of-use issue, I do feel that the advanced features of Inform are a bit less integrated than they are in TADS. Inform features have a layered feeling; they have been built-up as the language and especially the library have grown. You would expect this to be the case; we are dealing with the Z-machine and this imposes many restrictions. TADS is able to implement a lot more in the compiler and in the run-time, giving a better feeling of integration. (This is a mixed blessing, in that you can't directly alter the TADS compiler or run-time behavior.) For instance, a limitation in Inform is on attributes and properties of an object. These attributes are a predefined set (the library leaves 11 of them free); and private global variables for an object are not available (you must use public properties). In TADS there are no restrictions. The Inform limitations arise mostly from the Z- machine, and largely cannot be avoided. An Inform author will often find the need to use a particular named attribute for some unrelated purpose; attributes may be reused and change their meaning; and all of this leads to the need to take extra care in coding. But to return to the main point: the power of Inform is in the libraries, and the standard libraries are very powerful indeed. 6. Portability, Weight 4. Rating: 5. Inform games run on more platforms than any other system, period. The run-time, unlike the other systems, is not part of the Inform package. Various Infocom story-file interpreters are freely available and freely distributable. On the PC and Unix platforms, JZIP (John Holder's modification of Mark Howell's ZIP) is one of the best, and Frotz is a promising new entry in this field. Similar quality implementations exist for many other platforms, including some palmtops! It is safe to say that an Inform game is playable nearly anywhere - with one caveat. The new Z8 format Inform games, which allow for really large works such as Jigsaw, use a story file which can be as large as 512k. This, combined with the memory needs of the interpreter, can impose limitations on some machines, notably low-end PCs, with not enough available free memory. However, any of the other formats, such as the common Z5, which still allows for a very large game, will run virtually anywhere. 7. Run Speed, Weight 4. Rating: 4. It is difficult to come up with an objective benchmark for interpreter run-time speed, and, with the variety of story file interpreters available, results are highly dependent upon individual environments. In addition, I have received quite contradictory reports from newsgroup correspondents. That said, my subjective impression has always been that Inform games run faster than TADS games, and I think measurement would bear this out. I think this has to do with the way TADS matches verbs to objects, but I invite commentary on this from the individual system experts. In any event, Inform games, even very large ones, have very good run-time performance on interpreters such as ZIP and JZIP. @~To be concluded next issue - o -