I am currently writing a story for a game that will have multiple narratives the player will be able to play through in any order depending on their choices.

I wanted to make it so that the grand narrative is going to be comprised of these "chunks" of stories and still make sense regardless of how the player goes through the content.

Eventually, once the "chunks" have all been played through, the story will end up on a single track for the finale.

What I'm asking for are writing strategies that will work for this setup. I tried looking it up but all I find are tackling the issue from the perspective of writing a book which is different because it's a far more linear experience than a game where the player has agency.

  • I can't give you a proper answer, but some pointers. Consider watching this GDC talk where they explain how to make dialog in games. One of the example games is Left4Dead2 where the characters talk to each other but may be dead, incapacitated or under attack by zombies and they go into detail how to deal with that. It also talks about what tools are needed for writers to be productive. Unfortunately I have not found such a tool. Things like Twine don't seem to have the critical functionality of choosing the appropriate line of dialog
    – nwp
    Apr 26, 2021 at 12:23
  • Just from playing experience, the various narratives are usually physically isolated (space, levels) with dialog that CAN be affected tied to if/then triggers so a different conversation happens with Jane if John has died. Deus Ex does a pretty good job with this. It's a game, and if you have too much fixed content, you'll need to force the narrative into a certain timeline to make it fit. Keep it loose, keep it simple, or put it on rails.
    – DWKraus
    Apr 26, 2021 at 13:33
  • 1
    @DWKraus The talk I linked above goes into some detail why if/else chains are not suitable to do this sort of thing. It's fine for 1 thing, but once you have 3 binary choices the cascading layers of if/else become unmanageable and you will spend most of your time maintaining the syntax which is a waste of writing talent and also unnecessary. I strongly recommend to avoid going that route.
    – nwp
    Apr 26, 2021 at 14:57
  • @nwp That's why I didn't give a full answer. Outside my expertise. I'd keep it as simple as possible.
    – DWKraus
    Apr 26, 2021 at 16:21
  • What have you tried? In which ways you feel it fell short of your desired target?
    – Levente
    Apr 27, 2021 at 21:55

1 Answer 1


1. Make a causality map.

This is a graph that shows you how the different chunks (or modules) affect one another and whether it is possible for them to occur in any order. It will also allow you to see nested dependencies that you might have missed at first (e.g. to light a fire in the romantic dinner scene you need wood, and to get wood during the outdoor trip scene you need an axe, and you get the axe during the visit to the uncle scene.)

2. Break each narrative module in static and dynamic

Static is the part of the narrative that is unaffected by other narrative modules. For instance, ordering a drink at the bar may always occur in the same manner (static), but the news on the tv may change depending on the progression of the game (dynamic).

Static parts are easy to write.

3. Consider writing the dynamic parts in the modules that affect them and include them in the target module

It may not work for you, but for this has worked for me.

If module A determines what happens in module B, then I write the dynamic part of B that depends on A in the module A and dynamically import it in B.

It is like writing a flash-forward. Cleaner, simpler to edit.

Also, time-saving advices:

  1. set the default for each dynamic scene as if nothing else has occurred and update the scene when the causal event occurs.
  2. save the progression status in some global and easily accessible format to enable you to include and exclude the correct items. You don't need to store every decision, but only the ones that would lead to mutually exclusive outcomes.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.