For 20+ years I have used Stages as the proxy for spatial locations. An actor occupies a stage; that’s his location. All actors within a stage can interact with each other, and only with each other. Any actor offstage cannot interact with the actors onstage.
That’s a simple scheme, and it has worked well all these years, but now I am encountering a problem. I have previously determined that there is no need in Siboot for any more than two actors to interact. In any 3-person situation, there simply isn’t anything to talk about, because conversations have a strong conspiratorial element to them.
To implement this, I set up a set of stages, one for each pair of actors. Actors can only access stages for which they are one member of the pair. Thus, each actor has exactly 6 stages to access. At any moment, an actor must be located in one of those stages.
This creates some new problems. Let’s designate each stage by the pair of actors that can occupy it, using the letters A through G to designate the actors. Suppose that actor E is along in stage A-E, when actor C decides that he wants to go see actor E. But C cannot go to stage A-E; he wants to go to stage C-E, and actor E is not there. So what happens?
If actor E is alone, then he should be transported to stage C-E. If he is not alone, then he should remain in place until the interaction with the other actor terminates, at which point he should transport to stage C-E. Meanwhile, actor C should remain in the stage called Nowhere (stage # = 0) until E is free.
But this raises all sorts of hell of its own. What if actors A, B, D, and F are all waiting to see actor E? Who gets to go first?
We could reduce the problem by confining an actor’s choice when deciding whom to visit to those actors who are free. In that case, the act of motion would move both actors to their intersecting stage.
That still has one small flaw: what if two actors plan the same move at the same moment? One way to prevent this is to look into other people’s plans to see if they have already made such a plan.
The problem here is that consequences are executed when the verb is executed, not when the plan is made. There is simply no way to anticipate plans. Therefore, I must have a fallback behavior when an actor attempts an impossible move. The obvious solution is that he simply waits until the person he wants to visit is free, but as previously noted, this runs into a problem when multiple actors pile up outside somebody’s virtual door.
But wait! What’s wrong with letting actors sit around doing nothing? They don’t have watches; they don’t know what time it is. If the player gets stuck as fifth in line, and must way for four previous actors to have their conversations with the desired actor, he ends up waiting a few milliseconds longer.
Once again I run into one of those deep-seated biases that blinds us. I was assuming that time must proceed in conformance with physical laws. This is drama, not physics; the laws of “dramatic physics” ignore the passage of time in many situations. So let them pile up and wait for hours; I can make the day as long as I want and in fact, I’ll terminate the day based on the amount of activity that has passed, not the count of minutes.
This doesn’t directly solve all the problems, but it looks solid. More mulling must ensue.