What was the intended use of the posture property in the old 2006 Inform 6 Library?

What was the intended use of the posture property in the old 2006 Inform 6 Library? This question came up as an issue at https://gitlab.com/DavidGriffith/inform6lib/-/issues/123. I tracked this down to a commit made by Roger Firth back in 2004 (https://gitlab.com/DavidGriffith/inform-2006/-/commit/7bc4bf3804f2a931daf72edf99dd9f7cb7db9049).

I suppose one could have a series of constants of STANDING, SITTING, PRONE, and so on. I can’t seem to find anything talking about how this was intended to be used. My only clue so far is ExitSub() in verblib.h. From this, I guess that a posture of zero is for STANDING and any other value is either in or on something else or sitting or lying. Is there anyone here who was privy to whatever discussions went on at the time this was committed who can enlighten me?

[ ExitSub p;
    p = parent(actor);
    if (noun ~= nothing && noun ~= p) return L__M(##Exit, 4 ,noun);
    if (p == location || (location == thedark && p == real_location)) {
        if (actor provides posture && actor.posture) {
            actor.posture = 0;
            return L__M(##Exit, 6);
        }
        if ((location.out_to) || (location == thedark && real_location.out_to))
            <<Go out_obj, actor>>;
        return L__M(##Exit, 1);
    }
    if (p has container && p hasnt open && ImplicitOpen(p))
        return L__M(##Exit, 2, p);

    if (noun == nothing) {
        inp1 = p;
        if (RunRoutines(p, before)) return;
    }

    move actor to parent(p);
    if (player provides posture) player.posture = 0;

    if (AfterRoutines() || keep_silent) return;
    L__M(##Exit, 3, p);
    if (actor == player && p has container) LookSub(1);
];

I wasn’t there, but the inspiration may have been this Sit and Stand r.a.i-f thread from 2003.

I was at a party over a decade ago in London, invited by a friend of mine. Nick Montfort happened to be there as it was party a medialab thing (and I have a name very similar to his, so people kept confusing us). One of the jokes that evening was about some video game from the turn of the millennium that had something like five levels of “crouch” state. You could be standing, ducking, kneeling, crawling, or prone. We actually joked that this was what caused IF to fail in ThE mArKeTpLaCe.

I don’t think this has any direct bearing to the question, but perhaps posture was a more current concern in simulationist thinking of game development around that time?

1 Like

“System Shock” 1 and 2 are like that with multiple postures. I found the first game hard to control and I never tried the second. Rediscovering that Usenet discussion has provided me some inspiration to work out a posture mechanism that won’t annoy players.

1 Like

You should, the second one is excellent and is often included in “top N games of all times” lists (routinely for N=50 or 100, sometimes even for N=10), and quite deservedly so. :slight_smile:

As far as I know, the controls were changed significantly between the first and the second game, because many found the controls unintuitive in the first part. (Although I can’t compare them personally, because I’m in the opposite position, having only played the second part, not the first.)

If you decide to give it a try some time, you can find some mods and remastered versions which provide higher-res textures to make it more pleasing for today’s eyes.

1 Like

System Shock 2 is amazing! One of my favorite villains of all time.

2 Likes

Looks like it was meant to distinguish between different ways of being in/on an object, so the game could easily adapt to whether the player is sitting on a chair or standing on it etc. Maybe if the player is standing on the chair, they can reach the hatch in the ceiling, or see what’s on top of the cupboard.

2 Likes