Making of: A New Christmas Carol (Part 1)

Our Adventures in Twine

Behind the Screens:
In this new series of blogs by the National Videogame Museum, we want to give you the inside track into how we build some of our award-winning programmes. In this first post, our Curator Lex Roberts takes you through how they built our special Christmas workshop!


On 12th December the NVM hosted our A New Christmas Carol Twine Workshop. It was one of our most lively and popular workshops this year.

Here we’re going to talk in more detail about the Christmas Carol Project and how the Twine story was built to incorporate your contributions. We hope to inspire you to check out the game, send us your own ghost story and become part of the project. We’ll also be explaining how we put it together, so others can recreate more stories and run similar projects in the future!

The NVM was approached by Sheffield Libraries in September 2020 to take part in their Libraries Connected project, Novels that Shaped Our World. The idea was to develop something game-related around Charles Dickens’s A Christmas Carol that would engage new audiences with reading. 

Words + games + creative participation meant we quickly settled on Twine as the platform! It’s easy to use, and something we like to teach. Rather than just ‘playing’ through the story, we wanted participants to write the story first, and for all contributions to become part of one large final interactive story. The first step was working out what parts of the story could be changed. We chose the Ghost stories – participants would be able to choose the past, present or future and write the ghost as they wanted.

The stories could include telling us what the ghost looks like, where they take Scrooge, what happens when he gets there, and how he gets back to his bed. This wasn’t a lesson in morality but a creative writing exercise. Scrooge didn’t need to learn lessons from his past, present, and future so we invited stories from any place or time in history.

Next we had to summarize the original story. As this project aimed to encourage reading and building literacy skills, we felt it was important to include some of the original text, and give readers the opportunity to read the story, without overwhelming them with the full ~31,000 words. Using widely available BBC Bitesize, and Spark Notes summaries, we divided the text up with summaries of each section ready to be further embellished and expanded in Twine. We were also able to add in some definitions for the trickier words and ideas found in the original quotes, a useful feature for younger audiences!

twine screenshot of story overview showing 9 passages describing the story
Original story overview

Twine works really well with short passages, it’s easier to build tension and easier to work with the code we’d need later on. After reading the Staves (chapters) of the story one at a time, the sections were added to, quotes were selected to include. 

After reading Jacob Marley’s arrival in Scrooge’s rooms, we wanted to make this build up exciting and dramatic. This was achieved through a mixture of short passages with lots of links, timed passages, so text appears after a few seconds, and sound effects.

Eventually we ended up with a fleshed out story. We used Twine’s Snap to Grid tool to tidy it all up and take a good look at our work.

Twine screenshot showing all the passages in the story
First draft of the completed story

Happy with how the story flowed, we began to add CSS (the style sheets that dictate how your webpage is laid out and what it looks like) and code to bring the story to life with suspense. We also had to add in the credits, an introduction, help sections, and a restart button. Finally we branched out and wrote the example ghost stories as separate Twine games, and then the code that would bring them all together in the main story.

And that concludes the basic introduction to A New Christmas Carol Twine Workshop. If you’d like to learn about the detailed technical aspects of the project; looking at the Twine macros we used (the functions you can use in Twine, like (if:) and (set:)) how we introduced Javascript (the programming language usually found on websites) and how the contributed stories are pulled together into one single game experience, please continue to section 2! There’s lots of code samples, and detail about how each part works.