This interview is part of our Road to the IGF series. You can find the rest by clicking here.
Elsinore places players in a time-looping vision of Hamlet, having them guide Ophelia through a living, active world as their decisions shape its tragic conclusions.
Gamasutra had a chat with Connor Fallon and the team at Golden Glitch to speak about fleshing out the world of Hamlet with their game, creating a cohesive world that moved outside of the player's actions, and tasking players with deciding what matters to them rather than what will give them the 'best' ending.
Band of bards
We're Golden Glitch Studios. We're a group of friends who met online during nights and weekends for six years in order to develop this game. Bios for each of us individually can be found on our website.
We started this project when we were a bunch of chumps fresh out of college that had made some hobby-level games or had done a few internships. Now, a significant portion of us are full-time game developers. We've learned a lot over the course of the project about how small game businesses are run, which is a very different experience from the larger-scale development many of us are used to in our day jobs. Elsinore also allowed us to flex some skills we normally wouldn't in our roles, such as marketing, production, user research, and outsourcing management.
An explore-able Hamlet
Elsinore was initially started from a "Shakespeare" jam theme in the game development club at Carnegie Mellon University. It began as an Adventure Game Studio prototype and was meant to be a simple branching exploration of Hamlet where the player could try to make different choices to watch the outcome of the plot change. They could replay the game if they wanted to and try different decisions, and there were only a few of them. But we didn't end up making anything very compelling for that jam week, and we set the project aside for a while.
We picked it back up in 2013 after some of us worked together on a Molyjam summer project, and a lot of the elements that would define the game (like having events that could happen at any point in the time loop if conditions were satisfied) came in then. It went from being more of a choose-your-own adventure to a true simulation game at that point.
The most important development tools we used were the ones we built to support writing the game content and story. Designing and managing the narrative simulation and and its complex moving parts was a major challenge. We built an in-house scripting language for writing Elsinore scenes, which was built in F#.
In addition to the base scripting language, we built various tools to help manage content. Our tools would check for obviously contradictory narrative states - in the way a compiler might check programs for errors - to catch things like "dead characters who could be referred to as living" or "character you are currently in a relationship with responding like they don't know you."
The compelling narrative possibilities of the time loop
In 2011, Groundhog Day-style time loops were not as popular a concept, but a few of us were reading visual novels like Umineko no naku koro ni and watching anime like Steins;Gate - the concept has been popular in Japanese storytelling for much longer. So, when we picked the project back up in 2013, the idea to add time loops into the choice-based Hamlet game sort of made sense.
Many games are essentially time loops in that you try something repeatedly hoping for a different outcome - usually success. The only difference with Elsinore is that information carries over from loop to loop. This allows us to do a few interesting things. For example, we can have characters go through enormous personal change, like the death of a loved one or a reunion of two lovers, which allows us to push them to dramatic extremes in interesting ways. In a more linear game, a player might spend hours waiting for that kind of dramatic character moment. However, we don't have to actually pay that off in the "long term" narrative because the world gets reset and those characters are effectively wiped clean, so the player can see many interesting character developments in a relatively short time.
The time loop also allows us to develop Ophelia as a character. In one time loop, she might be sharing deeply intimate, warm moments with someone who she knows is capable of doing awful things in other time loops. Her reaction to that is, as you can imagine, complex. Once you understand that someone is capable of both enormous kindness and enormous cruelty, how do you continue to have a relationship with that person? That's what we try to explore through Ophelia's views.
On using the narrative of Hamlet
Hamlet is one of the best-known stories in western literature. Outside of the Bible, it's arguable that "to be or not to be" is one of the most widely-known quotes from any text. It's also a super malleable story; it's been molded into some very different adaptations like The Lion King, and many people are familiar with the core concept of "young boy seeks revenge against the uncle who killed his father." Many of us also have a personal interest in taking things which are normally inaccessible, like Shakespeare, and making them understandable and learnable for all kinds of people. This mix of factors made Hamlet a great candidate.
Often at gaming conventions, we'll meet people who are tagging along with a friend that doesn't play games themselves. However, they'll come see the Elsinore booth and get really excited. "I know Shakespeare!" It helps us connect with a totally different type of person.
We also knew we had a great protagonist in Ophelia, who is often ignored or treated as a small side character in many Hamlet adaptations. There's so much about her personal background, her motivations, and her history with Hamlet that isn't really expounded upon in the original text, so we thought she would be a great opportunity for us to fill in the blanks.
Expanding on a classic
Our goal with Elsinore was not to seriously modify the world of Hamlet such that it would be unrecognizable to someone who knew the story well. Rather, we did a lot of work to expand and clarify things which are left undiscussed in the original play (Hamlet got captured by pirates? Who was Ophelia's mother? Why does Horatio describe King Hamlet's assault on King Fortinbras as though he were a soldier on the battlefield? What was Hamlet like before his father died?) and add our own twist on them. The real major additions are extra characters like Irma and Brit, which helped flesh out an overwhelmingly male cast, and other Shakespearean characters like Othello and Peter Quince.
Additionally, we knew we wanted to make the story accessible to a modern audience. Shakespeare told stories that were intended to appeal to all kinds of audiences, and that has been lost over time. Elsinore was a chance to open the story up once more.
One of the most common sentiments from people after they watch static-story tragedy, like on stage or in film, is "if the characters had only done X, they would have avoided the tragedy." If the Titanic hadn't been sailing too fast, it wouldn't have hit the iceberg. If Romeo had just waited a little longer, Juliet would have awoken. We wanted to put that power of "if I'd done X" into the player's hands and let them try that resolution for themselves. But the truth is, the world is full of flawed people and circumstances which can't be so easily solved with quick fixes. This is true of Elsinore, too.
Making decisions about what you value
After describing the game to someone for the first time, the most common question we get is "So you're trying to get the good ending where no one dies?" That question reveals both that people usually know what we're trying to do, and also that they understand how much of a trope it is for games to have a "correct" path with the "real" ending that is "objectively" better than the other, failure endings. Games have pretty thoroughly trained players to expect a Golden End.
Many people appreciate a game that forces them to instead make decisions about what they value. Elsinore is not about solving a tragedy and making everything okay. It's about grappling within the free will we all have within the confines of a bad and ultimately-inescapable situation.
Maintaining logic and cohesion
The largest difficulty in creating any simulation is maintaining a sense of logic and cohesion. In Elsinore, characters are often forming dramatic plans that won't make sense if another character is dead, so we need to check for all those cases. Sweeping methods to remove edge cases, like hearsay no longer being presentable if it's fundamentally invalid, or characters being upset and unwilling to talk to you if you've told them something really extreme, were essential in keeping the possibility space manageable.
On the other hand, what's nice about a simulation is that once you've been working on it for a while, solutions start to present themselves. If you already have behavior for Polonius when he's lost all hope, it makes sense to link into that behavior from other places. The dynamic, shift-able nature of the story elements means we are able to pull in consequences at all sorts of points.