This perhaps goes more in general design discussion but it’s also specific to Inform 7. So I’ll put it here and see how that goes. There is an Inform 7 implementation question here, which is why this felt like the better place.
In my latest classes that use text-based IF, I find a lot of people really want to do what I would call contextual knowledge descriptions for locations. As an example, consider a slightly modified example from the game Reliques:
Longwall Street is a room. “Almost overgrown in the deep forest, collapsed and at once standing, the cyclopean east-west Longwall of the fallen city sinks here to a mostly flat, lichened stone clearing. You figure that it must once have been a customs post or something very much like that. To the west, an old wall turret like a broken chess piece still seems enterable by a dark doorway, whereas the eastern side of the wall’s gap is only a shapeless ramp of masonry. Northwards, to what was once the interior, stubborn, wiry trees grapple with ancient pavings.”
Easy enough. Now the bare minimum writers like to do is something like this:
Longwall Street is a room. “[if unvisited]Almost overgrown in the deep forest, collapsed and at once standing, the cyclopean east-west Longwall of the fallen city sinks here to a mostly flat, lichened stone clearing. You figure that it must once have been a customs post or something very much like that.[paragraph break]To the west, an old wall turret like a broken chess piece still seems enterable by a dark doorway, whereas the eastern side of the wall’s gap is only a shapeless ramp of masonry. Northwards, to what was once the interior, stubborn, wiry trees grapple with ancient pavings.[else]OTHER TEXT HERE.”
You can see I just added a check for unvisited and then they will fill in the suitable text for “OTHER TEXT HERE”.
But where things get complicated is that people also want to be able to indicate whether the player has been to a place before. The logic to this is sound in that if we were truly describing something, that would factor in to how we describe it.
So consider that the OTHER TEXT HERE might be replaced with:
“To the west is the old wall turret and to the east is the stond mound.”
Here I’m being as simple as possible. Basically just an abbreviated list of where you can go and what’s there. Easy enough.
However, if the player has been to one of those locations, that description might change. For example, consider if they have been to the stone mound but not the turret:
“To the west is the old wall turret and to the east is the stond mound you climbed up before.”
Likewise, though, maybe the player went to the old turret at this point but not the stone mound:
“To the west is the wall turret you visited and to the east is the stond mound.”
And, of course, there’s the situation where the player has been to both:
“To the west is the wall turret you visited and to the east is the stond mound you climbed up before.”
Conceptually, this can make sense and can give vibrancy to the story in the sense that the protagonist’s description is being changed based on what they have visited prior since their contextual knowledge of the world has now grown. Something that was unknown or only vague may now be known and specific.
The question is: how would you implement this in Inform where it’s not a huge mess of ugly code?
There may be many different possibilities. It’s essentially treating knowledge as a conditional and applying that to descriptions. I’m just curious to see what people think makes the most sense, particularly when a key aspect of this would be the ability of an author to make the descriptions of the world as variable as possible given what the player has seen.