I spent much of today porting my 2006 game “Castle Adventure” from TI-83 Basic to Inform 6. Here is the result. Link to the I6 source code:(link to source)Bug reports gladly accepted, although terseness and lack of character motivation aren’t going to be considered bugs. The point of the original was to fit a passable text adventure into about 7K of RAM and a 96x64-pixel screen; the point of today’s Inform port is to reproduce the original’s behavior as exactly as possible.
The TI-83 game had a sort of “autocomplete” feature on the parser, so you could just type “W” and it would expand to “WEST”, then hit up-arrow and it would change to “WEAR” (but only if you were carrying something wearable). If the letter you typed wasn’t valid in the given context, nothing would appear on the screen. Certain verbs, like “PUSH”, would appear only in certain locations, and certain nouns would only appear when given a specific verb (for example, I didn’t need to worry about the response to “PUSH OIL” because that input was literally impossible). Inform doesn’t have a good way of simulating these features, but I don’t think I really need to provide a spoiler list of verbs, and I think I managed to cover all of the wacky input possibilities with messages like “Don’t be silly!” If I missed some, feel free to let me know.
matt points out that “OILCAN” is not recognized; the only noun for the oilcan is “OIL”. In the original game, this was to reduce the number of bytes devoted to noun-spellings, while allowing commands like “PUT OIL ON DOOR”. Since “OILCAN” and “OIL” began with the same letter, a player wanting “OILCAN” would see it autocomplete to “OIL” instead, and get the idea.
I should probably add a message like “To refer to the oilcan, just say OIL”.
In the Inform port, “put oil on X” is treated as its own verb, synonymous with “oil X”, and you get a slightly misleading “That’s not a verb I recognise.” message if you aren’t carrying the oilcan (to simulate the original game’s input interface).
I’ve just started to play with the I7 source code of “Under Doom”. Compiling it unmodified, and after installing the two needed extensions off of the I7 website, this is the report produced by Inform 7 (build 6G60) on its most recent run-through:
I haven’t yet found any examples of how to use “VM_ReadKeyboard” in I7 (only playfic.com/games/RedTulip/lost-and-afraid which uses it in some injected I6 code). I’m continuing to look, but perhaps someone’s reading this right now and will post a reply before I find my own answer.
EDIT — I got it! Apparently it was just a mismatch between the version of Glulx Input Loops and the version of Under Doom. If I cut-and-paste the code out of the documentation for Glulx Input Loops, it all works! inform7.com/extensions/Erik%20Te … oc_17.html
EDIT 2 — …And Erik himself answered my question the same way right before I edited my comment.
I changed the I7 name for accessibility (now it’s “main input loop” or something like that) before releasing the Glulx Input Loops extension. Just use the version included as an example in Glulx Input Loops and it will work fine.
I got turned off again by the fact that Inform (all the way down to Glk, unfortunately) wants to treat the main window as a “stream”, which means there’s no way to erase the user’s input if he hits backspace — only hacks such as having the input system use a different window. (And I think such hacks would have to be ugly, aesthetically I mean; I suppose it’s still possible that you could make it look like the user was really typing in the main window.)
I will at some point soon do something about the OIL/OILCAN issue and reupload the .z5, although I might not bother to post in this thread when I do.