Why only nine characters for reading input?

I was introducing someone to Inform and we were going through the manual a bit. He noticed something I glossed over. The manual says:

“A small limitation here is that probably only the first 9 letters of each word are read from the player’s command.”

The “probably” is a little odd. Either this is the case or it is not, isn’t it? My friend overlooked that being as he doesn’t have the preciseness of a programmer, but he didn’t overlook trying it out and he felt it was not a “small limitation.”

He did this:

The Cobble Crawl is a room. A superhero is here. A superheroine is here.

This displays as:

You can also see two here.

Notice that blank space in the output? Also if we type in “take superheroine” the superhero is in fact what gets taken. That certainly validates what the manual says. The question is why is this limitation on place? I hadn’t really run into this because I actually wasn’t coming up with too many names that were similiar enough in nine character incarnations such that the above conflict would happen.

So I guess I’m giving a “new person experience” report here, for what it’s worth. My friend got a bit discouraged until I showed him that it might not be a problem given how you name things. As a programmer, saying the system will “probably” act a certain way is just bad. Even if this nine character limit can be overridden, this would be a good point to say it. (The manual part I’m quoting is from 3.1.)

The Z-machine architecture is hard-wired to nine characters. In Glulx, it defaults to nine, but you can change it:


I imagine the manual glosses over this because it’s a bit much to explain so early.

As for “You can also see two here,” that’s a bug – you should report it. It arises if you manually create two things with exactly the same dictionary words referring to them, but no shared kind other than “thing”. (You normally wouldn’t do this, of course. If both objects are people, the game correctly says “You can see two people here.” If you give either of them an additional synonym, it lists them separately.)

I should add: there are a couple of other ways of working around the dict size limit, which work on both Z-machine and Glulx.

The “probably” may refer to the fact that although there is the hard 9 Z-character limit, some characters from other alphabets may take up more than one Z-character, giving you less than 9 real characters. (A Z-character has only 5 bits.)

As usual, Glulx removes most of the limits.