While working on zifmia it occurred to me that I might want the VM to continue running in the background. What if I have a real-time daemon that interrupts the command line after the player has taken too much time? and then I got to thinking about how this could be hacked into the existing I6/I7 infrastructure.
And then I thought that if this were possible, I’d want a more elegant solution and came up with the idea of meta-turns or background turns. The idea is that while the player is contemplating their next move, the VM is offering that spare time to the game to do anything it might want to do. There have been discussions about the need for threading in our interpreters and VM’s and I think I’m starting to see the value.
The most interesting idea is comparable to a game of hide and seek in a house. I do this with the kids once in a while and it’s fun. But it’s really funny when they run to one side of the house and I move to a location they have already searched. This drives them mad, but eventually they start logically nailing down potential hiding places and figure it out.
The same thing could happen in an IF game where state is changing internally, but unless it happens in the current player location, there is no output. So an NPC could walk through ten rooms while the player thinks being none the wiser. This opens up some interesting puzzle development possibilities.
The two main features required would be somehow tagging certain code to execute what I would call a “meta turn” in the background and then allowing the background to interrupt the command line and send output if anything “in scope” changed.
I’m not interested in math or path calculations in a background thread. I’m much more interested in the thematic possibilities.