Witchmarsh Dev-Update roundup #1: Story

Hello everyone! I realise I’ve not been doing a brilliant job of keeping this website updated. Witchmarsh is still in development, and given our small team we’re doing our best. Most of the updates have been posted on the community Discord, but I thought I’d round them up here so that more people can check them out! So here we go.


Hello everyone! Lou here. I thought I'd talk about my role on Witchmarsh, which admittedly has changed a lot over the game's long development.

Initially, my position was 'writer and game designer', which meant a few things. For starters, I planned and wrote the game's story, largely in word processor documents, with lots of notes and sketches made in various notebooks. I also produced several hundred pages of dialogue scripts, and many pages of 'lore', pinning down and ironing out exactly how the game universe functions.

Building maintenance is clearly not a priority in this neck of the woods.

As a game designer I was also responsible for writing the project's Game Design Document, sometimes known as a 'design bible' or GDD. This is a common practice in game development, the goal being to set down all of the information a team would need to build the game's systems. It also highlights the game's concepts, goals, storylines, characters, control schemes, and so on. It's a bit like a rulebook, a blueprint, and a pitch document rolled into one. I think in the end the master document ran to about 100 pages, but I eventually split out some of the 'content' sections into separate databases to bring its size down to something slightly more reasonable.

These days, thanks to the tools made for me by Rob and Joe, around 90% of the work I do is in-engine, and is focused largely on implementation rather than writing. This intersection of code, story and content is often referred to as narrative design, and being more active in this role has allowed me to implement large swathes of the game since 2018.

At a rough count, there's around 170 NPCs and over 100* cutscenes in the game at the moment, along with around 850 story 'global variables' which record player actions, choices, their reputation in the game, and their progress throughout the story. For better or worse, we've started referring to these global variables as 'story globs'.

*Update: As of October 2022 this count is standing at 200!

Money-grubbing Necromancers are just one of the types of character you’ll meet in Witchmarsh.


Finally, for anyone interested in the narrative design workflow I use in Witchmarsh, I've created a brief rundown here:

1) Planning stage:

Although the overall story for Witchmarsh is fully planned out, I try to ask myself a few questions whenever I'm starting a new story arc: What is the player's goal as they move through this part of the story? Which characters will they meet? What is the mood, atmosphere? Is the area dangerous? What is its impact on the rest of the story?

2) Writing stage:

Using a set template, I write out an overview or list the plot-beats. Dialogue is then scripted in rough.

3) Global Variables:

I try to plan out all of the 'Story Globs' I'll need for the segment of the story. It's easy to add in more later, but having them listed and defined in the engine helps me keep organised and speeds things up. Each global variable must be given a name and a starting value.

4) Create environments:

Inside Game Maker, I then create the blank 'levels' in which the story takes place. These are usually based on a mockup created by myself or Joe, but functionally-wise this isn't hugely important. Story events can be easily transplanted into different levels and layouts if needed; what's important is there's a playable space in which the story can be tested.

5) Create events:

Cutscene events and NPCs use the same basic code structure, so whether the player is triggering an 'event' like a ceiling collapsing, or speaking to a 9-foot tall transdimensional ghost, it's the same basic workflow. I create the event, name it, set its location, then import all of the 'Globs' it needs to function. Any 'Globs' the event outputs also need to be stated.

6) Implement dialogue:

I then take any dialogue scripted and chop each line into a 'page' inside the dialogue script. These pages can be linear in progression, like reading a novel, or in the case of branching conversations; they can be hugely complicated (like a choose-your-own adventure book).

7) Other event actions:

Other event actions, such as teleporting the player, setting NPCs to 'hostile', or even triggering another cutscene are then set. Often completing a cutscene or triggering a Globs parameter will unlock another cutscene or event, also.

8) Test, re-write:

I've found that the biggest benefit to doing my own story implementation has to be seeing my writing in-game, rather than on the pages of a script. When playtesting cutscenes I also use the opportunity to re-write and copy-edit the dialogue heavily, with the goal of neatening it up and polishing. Only very rarely does something need to be re-written from scratch.


I think that covers most of my basic workflow. Thanks for bearing with us and stay tuned for something a little more entertaining than a wall of text!

  • (Written 16th April, 2022)