How to make scenes like in Spider and Web?

I’m having trouble making scenes that serve as flashforwards in my game. I don’t know where to begin in terms of making a scene which will automatically transport the character to a place in the future, only to return when the dialogue concludes (similar to Spider and Web). Any help would be much appreciated!

The easiest way is to have an alternate player object ready in a separate room. Then you can change the current player (“now the player is …”, see chapter 8.9) as desired.

If you want to “reset the world”, and put every object back in its original place (like S&E did), that takes more work.

(EDIT-ADD: Inform 7-specific answer. If you’re using a different system, you’ll have to say.)

1 Like

In Apocalypse i just implemented 3 different containers. I moved the player to a new location, changed his appearance and moved everything he was carrying into one of the out-of-the-world containers. When flashback ended I moved the player belongings to the second container and swapped back the things to the PC from the first one. And so on.

1 Like

Thank you very much. I’m new to this whole Inform thing!

This is what my proposal for acts addresses. It encapsulates these things in order to make it a modular action.

Voting for it may make implementation more likely.

Instead, it has been rejected, with a rationale I don’t quite understand.
I suppose I could make a scene now…

These things are ultimately Graham’s call, and it’s his feedback that I posted there. But my sense of the matter is that a) you’re asking for something really nontrivial to implement b) with a lot of fuzziness about the precise specification (sandboxes but ones in which some rules could be made into exceptions anyway?) c) that goes against existing expectations about how Inform works (which would make it painful to document and lead to support issues, in my experience).

And the main thing it could accomplish that cannot already be accomplished in other ways, as I understand it, would be to handle these cases where you wanted effectively to play multiple authors’ games next to each other – which has already been done in proof-of-concept by Guncho, in a way similar to the way described on the uservoice forum.

Well, one of my problems is that I can’t write - which shows in me having programmed more than a dozen different IF systems, and not written a single piece of IF, despite lots of ideas and scores of failed attempts. Very frustrating…

My specification was probably quite unclear - Zarf also choked on it. Implementing the proposal would theoretically not be difficult: coroutines are a well-understood concept; at the frontend it requires a scoping mechanism, and at the backend continuations. A metacircular Scheme interpreter, with scope, efficient tail calls and full continuations takes less than a page of code - but of course the existing Inform 7 system may be such that adding such features is hard.

I don’t propose sandboxes, except in so far standard coroutine scoping offers sandbox facilities. Of course general coroutines would allow communication through global state, which I did not propose - I suppose that makes things a bit more sandbox-like. In my proposal the only communication would be through the yield call - I am not sure what kind of ‘exceptions’ you were thinking of.
I am not opposed to allowing global state, though, for advanced users. It should be clearly marked as advanced, though, because it is easy to create unmaintanable code that way.

But I am not flogging a dead horse - the proposal has been rejected; so be it.

The existing I7 system (and both VMs) are extremely procedural; they don’t even have an efficient way to do cons, much less implement Scheme. (Yes, I did it in Z-code. It sucked and had no garbage collection.) Porting the I7 model to a functional language would be a top-to-bottom reimplementation.

Anyhow, I didn’t need coroutines to make Spider and Web.