True. Only we don’t care about any languages other than English. Any project needs boundaries and focus. We decided to focus entirely on English, as making sure the library is prepared to support other languages would make the library bigger and make the project take longer time. Some people are translating the library anyway, which is fine, but the library nowhere near as well prepared for translation as the standard library.
A dead object is neuter in English. While you may want to assign it an additional gender like male, the standard library doesn’t really support this. I.e. if you create a statue and give it both male
and neuter
, and the player types “turn the statue then open it”, the parser doesn’t know that “it” refers to the statue. This bothered me a bit more for Swedish than for English, so I added support for it in the Swedish translation of the standard library. But this is a nice-to-have feature, which we can live without for a minimalistic library.
I guess it depends on your programming style. I think they’re very handy and use them, and they’re especially good to have when story file size is important.
While there are ways to do the same thing without an attribute, they all produce slower and/or bigger code.
We could skip a lot of properties and attributes. We could leave it to the author to write a system of classes which set all the rules instead of using attributes such as static, scenery, animate, edible etc . before
is unnecessary because you can always use react_before
instead etc. But we’re trying to strike a balance where we provide just the right amount of functionality to make it as fun and easy as possible to write a text adventure, while doing everything we can to keep the size down. It’s a struggle, and it means saying Yes to some things and saying No to other things.
Not sure if you think this helps, but as a result of this thread we just added a way to make animate objects takable, since we think it makes a lot of sense that you should be able to pick up say a chicken or a puppy. Before including puny.h, define a routine for this new entry point, like this:
[ DisallowTakeAnimate;
if (noun ofclass Puppy) rfalse;
];
This was added the way we like to add things to the library - if you define the routine it is used, and adds the routine’s size plus a few bytes to the game. If you don’t define it, this mechanism doesn’t make the library bigger or slower in any way.