Trapped in a time cave

For those who don’t know, time caves in IF are heavily branched stories which do not merge. There’s a good explanation here:

My husb and I are planning a new parser game and it’s shaping out to be a time cave, which is kind of intimidating. The basic idea is you’re going backward & forward in time a bunch (to simplify: an NPC’s youth, middle age, & old age) and the things you say to them create different timelines. Thankfully there is an end point (after their death), but it can be convoluted to get to the various far future endings, especially desireable ones. There is state tracking as well to see what’s changed in the past, present, & future.

Thinking about all the variations of what changes based on the rules we’ve set for the game is getting rapidly very broad and complex, even though the rules are very simple (you can only say things, no messing with objects or whatnot, but you can say them at any point in time). we have like 10 planned out branches starting from one statement & its sensical consequences right now. And having multiple things route to the same endings (say, “bad”, “good”, “middling”) seems unsatisfying when time manipulation can affect a lot in radical ways (slight conditional variations on endings would help, but not fix it entirely).

How would you prevent a time cave here, or implement & write it in a way that wouldn’t take you 50 years?

4 Likes

The original appeal of The Cave of Time was that it was wild and unpredictable. Every choice was some new wacky scenario. So it felt like a huge amount of content to explore, even though it was just 115 passages.

At the same time, there wasn’t any sense of directed exploring. You weren’t really making decisions based on what you had learned earlier in the story. That’s what Sam is talking about when he says “vast freedom but little ability to comprehend it”.

So I guess your first decision is, is that the experience you want? Or should the player be learning systematic rules that will allow them to reach a particular ending?

as structured right now, what you learn in certain timelines (like a natural disaster happening in a certain year or some faction having consistent wants across timelines) can be used to say new things to the npc & discover new timelines, but the timeline results themselves are pretty unpredictable–the gap between ages is big and a lot that is completely unpredictable happens in the span of several decades spinning off from what you said (butterfly effect stuff). so I think both? time cave in the original sense of totally new scenario applies to a large degree, but you are applying old knowledge. would not go as far as saying “systematic rules” there.

1 Like

Sounds the “looping info-metroidvania” pattern is a good model, then. (Outer Wilds, etc.) It’s not literally a time-loop game, but the player always has the option to rewind to the initial state and make different changes. Right?

My only implementation advice is to map out the whole thing before you start coding. You probably already thought of that. :)

You may want to think about shortcut affordances. Maybe a player-visible map of possible paths, which get unlocked as the player reaches them. (Like some visual novels do.) Or you could show even more information, like which nodes have available options that the player hasn’t tried yet.

Or you could not do any of that! It depends on how much you want the player to keep track of themselves. And how much you think the player can keep track of. This is where the game-design rubber hits the road: trying to imagine the player navigating your game.

4 Likes

outer wilds is a good pull yeah! I don’t know what that sort of branch graph would look like, but I’ll mention it to husb so we can noodle on it (he loves outer wilds).

we definitively are mapping the branches out before coding it. I did make a little barebones prototype to see if the implentation was possible (tads 3).

I think I’m fine with the player just exploring things and experimenting, at least right now before playtesting (this may change). there will be topic suggestions as tads 3 affords, to help guide and limit a bit.

I really mean, I don’t want us to have 400 or something timelines to write, ykno? obviously we can stop at a certain point, but even 50 seems intimidating…it does seem somewhat unavoidable with our current structure so I guess, how to implement the time cave / looping metroidvania w/o being intimidated and never finishing?

2 Likes

Be aware a time travel narrative needn’t be structured as a “time cave” - which is the name for a branching choice narrative than never regroups or doubles back. It’s called a time cave because that was the structure in the CYOA book that was called “The Cave of Time”.

Time caves seem like the easiest structure but beyond a certain size invariably get out of hand due to combinatorial explosion and due to no world-state tracking lend themselves to absurdity. (You Are Lin-Manuel Miranda! Can You Avoid Blowing All Your ‘Hamilton’ Money At The Mall? - ClickHole)

Zarf’s advice is good. Time travel is difficult to write. Many authors will purposely shave a narrative down to a very short period of time that loops due to the natural variations. Or, have very specific nodes of time and only specific changes that can happen.

One structure to think about - imagine you have five discreet time period nodes the player can exist in, consecutive hours from 1pm to 5pm. Depending how much your world changes, you might have two parallel branches to the main one - five “bad” hours 1-5pm and five “good” hours 1-5pm. The time will move forward, but depending on what the character does (or in your case says, it sounds like) they might hop to the “bad” branch for a while, or may loop back in time based on remembering saying something in another iteration.

For me, at least, it helps to kind of imagine the time flow physically - even if you’re not changing rooms, there is still a “map” through events. You might think of it as music tracks on a timeline you can solo or turn down or loop…or you can think of it as a chessboard where a pawn can only move forward unless they get an opportunity to interact with another piece diagonally.

When I made RSPM, I had to write four versions of the same events from four characters’ perspectives. In AXMA I literally just made 20 passages for each character and lined them up so I could match between them.

That may not work for you (depending if it’s parser or choice), but understand in a magic scenario with time travel or time looping, you may want to increase granularity and reduce agency so you don’t have to account for every single “OMG, what if someone drops THIS scrap of paper in the past?” permutation.

TL;DR: For time travel, you don’t have to let your character do everything to have a satisfying story. Build the time-jumps and variations you want and hand wave a reason why they can’t go elsewhere.

1 Like

I remember playing the demo (first chapter) of a game with complicated timeline-hopping once, but it was twine-esque/choice-based, so they were able to constrain the options a lot. Structurally, it was basically a fairly linear puzzle-based game, despite the branching-timeline narrative conceipt. In most cases there was only one “correct” timeline intervention that would unlock new information / new timelines, and the puzzle was figuring out what that would be.

Unfortunately I can’t remember the title and haven’t been able to find it again.

EDIT: It was themed around a sort of mix of quantum physics and Kabbalah, in case that helps anyone identify what I’m talking about. I don’t remember a ton of specific details.

All Things Devours is a well known time travel narrative.

so here’s a basic and hopefully parseable structure as an example of what we have

. note that we do have a structure currently where you can only say one piece of advice to the npc per age (due to certain story constraints and also to make it easier on us) so the jump-backs are usually more like restarting the game (except you can say nothing, hop forward to get info, & hop back to give actual advice based on that info). we wanted to eventually change it so it is more of a hop back and forth (to tack on more advice in an age) as opposed to just restart, but I worry about it being even more branching then.

4 Likes

Hey! It doesn’t look that complicated! (knows it’s always that complicated)

that’s just with one thing learned per age though, in a single branch…(also just realized I missed a branch where you say 3 at middle age B…)

But you’re doing it. You will make many more charts and drawings. But you’re doing the right thing - you’ve got four phases of time mapped out, and you know there are variations that can happen.

The trick now, do you have a passage/room for every variation in each time phase, or are you using world state/variables to alter individual time phases to remember past details and changes?

Again, remember to tell the story(s) you want, just because it should be possible for the player to do every gosh darn thing that isn’t a requirement if that’s not the story you want. You don’t have to let them travel superfluous branches. Your metaphorical Time Machine may have a broken 5 button so they can’t go to the 1950s. (you probably don’t have a Time Machine, but you can narrate your way around any invisible wall as long as you understand it!)

1 Like

Might the themes of the story suggest ways to group or bundle or partition things other than good/bad/middling? Stay? maybe isn’t the right reference but IIRC the endings are mostly about who you spend time with and what location you’re in when the end comes.

Where can you have choices butterfly-effect by themselves rather than interacting with other choices in a combinatorial explosion? That’s kind of the big one from the sheer math of how-many-paths-are-there? When can you keep different aspects of the timeline changes separate so you can mix-and-match or braid them together with small cross-references rather than each of them having major effects on the others?

What’s resilient about the timelines? What are the natural disasters or large scale factional or cultural events that are beyond the NPC to change? Can you group things by the NPC’s relation to those things? Enjoyment, acceptance, resignation, outrage, misery?

Dunno. Maybe some of those are places to look for how to direct the complexity into something manageable…

2 Likes

I’m trying to remember what @pinkunz entire brain-breaking stool concept was - if you have a broken stool in the present and you go back in time and fix it, then return, the stool is fixed? Or it was like - if you take a broken stool back in time before it was broken, does it fix itself in your backpack, or does it disappear from your backpack and put itself where it’s supposed to be, or does the stool meet itself and wink out of existence like matter and anti matter?

(If you’re doing time travel, find a way to make sure no objects can be picked up!)

I’m trying to remember what I did in Alice Aforethought - there was present tense, past tense, future tense, and there were only like 3-4 portable objects. If you picked up the hourglass from the future you still had it in the past, only the sand changed. And the mirror was a dimensional portal, and could only be moved and not picked up, so it remained wherever you left it regardless of time-frame. I don’t even remember everything - it was weirdly complicated and confused me throughout.

1 Like

In general theory, yeah, but All Things Devours has quite a few takeable objects, and yet it wirks. I think it’s just to do with how the areas become off-limits at certain times is quite well done. But if you’re not going to implement it at that length, then yeah, don’t do that.

yeah dw I disabled pretty much all verbs except examine, look, the talking category, and going forward & backward in time :joy: it makes sense in context. sorry preemptively to rovarrson’s licking attempts during playtesting.

3 Likes

I have a thing going that has a lot of variation based on choices. & mechanically, I tried to do what you’re doing. Have a map, limit choices. My thought was that in a game like this, reading a response tailored to player action can be its own reward and that not everything has to affect world state. To me

conditional variations can do a lot of work, but that could be down to taste.

Another idea I had was that some players like to see are statistics or information about their playthrough. It’s very video game-y, but another way to help players reflect on their choices or style of play. That became a way to (hopefully) encourage replays.

The hardest thing about my project has been managing the text. As we’re discussing here, there can be a huge amount of variable text in a design like this. I have tables everywhere, and lookup tables for tables, it’s a lot. Esp for a non-programmer like me. If I could start the project all over again, I’d probably rethink things. I eventually separated tables by type/use into different files so that I could read everything all at once.

One thing I’d second is zarf’s suggestion about conveniences. I don’t think anyone who loves Pentiment loves the way it simultaneously encourages and discourages replay. One idea for eliminating drudgery is that the ending of a game doesn’t end the play session… instead of restarting just return the player to the beginning. That way, the game can recall the player’s previous decisions. Or that could be overkill. My experience (I think I also had a poll here once) is that people usually don’t replay parser games, but I think that can be overcome if the game is designed for it.

2 Likes

While there is really only one path and one ending, a really satisfying (to me) example of time travel in a game is Day of the Tentacle.

1 Like

That’s a good example of how they very smartly limited the concept of time travel: The characters don’t travel except in cutscenes. Each of three characters you can switch between is in their own separate time period on a similar but separate map, and the “time travel” is basically passing inventory objects to each other through what is basically a holdall. Though actually I don’t remember if the Chron-O-John could contain more than one object at a time.

I did the same thing in my Cragne Manor room - separate characters switching on separate but similar maps, and the whole purpose was to pass an object from the past to the future by dropping it in a container that existed on both maps by being connected to an I7 backdrop that spanned the same location in both time periods.

I know you’re not using Inform 7 but that’s one of the cool cheats - backdrops are objects that exist in multiple locations, so you can have a supporter or container attached to a backdrop so the contents of a table can update between both locations. So you could set your backpack on the table and then time travel forward to retrieve the same backpack with a varying description “It’s dusty now.” Or put a bottle of grape juice in a cabinet, travel forward, and retrieve it where it now behaves like wine.

1 Like

But even All Things Devours dodges the problem of “what if you go back into the past and mess with stuff before your past-self interacts with it?” Specifically, you can’t do that because attempting to violate causality destroys everything in a massive nuclear explosion.

2 Likes