In this post I’m going to do a postmortem/reflection on Moirai. I highly recommend that you play through the game before reading any further as doing so will provide you the appropriate context. The game is very short, taking less than 10 minutes to play through. So be sure it give it a quick play.
- Pairing Previous Players
- Other Design/Implementation Thoughts
- Things we would have done differently
- Take Aways
Moirai is a collaboration between Brad Barrett, John Oestmann and myself. Brad was primarily involved with doing the graphics, John did the music and I was responsible for the design and programming. The game started as an entry for the 7DFPS jam however towards the end of the week we realised that we needed more time to complete the game. It was eventually released about 100 days later. We spent a few hours on it each week between jobs, study and other projects. It took us about two months to finish the game and we tested the game over a month long period.
To make sure that everyone is on the same page I’ll quickly explain the core ideas in the game. Firstly, there are three paths to go down when you enter the cave. The path of the left leads to a room with a shiny object and bones. The shiny object is meant to represent the ‘hidden’ gold nugget and the bones are those of Julia’s child, who ventures into the cave looking for his Daddy. The path to the right leads to a room with markings on the wall. The number of markings represents the number of people who’ve played through the game. The book in this room lists the names of the last four people to finish the game. The most important path is the middle path. As you traverse this path you run into a farmer who has a lantern, knife and is covered in blood. This farmer is actually a stand in for the previous person who had played through the game(This is a bit more complicated. I’ll explain later). You can choose to let them pass, attack them or ask them one or more questions:
Why do you have blood on your overalls?
Why do you have a knife?
I heard moans, what have you done?
By the end of this confrontation you will have either killed the previous player(and have blood over your hands) or have let them pass. If you let the previous player pass then it’s not possible to see them again. At the end of this path you run into Julia and no matter the outcome you will always leave with blood over you. If you refuse to help her she will spit blood at you, if you aren’t already covered in blood. Or if you choose to kill her then you’ll be covered in blood. As you leave the cave you run into another farmer who is a stand in for the next player of the game. They ask you the same three questions that you could have asked the previous player before. The game then asks you for your name and email address and your results are stored in a database. You should then receive an email once the next player runs through the game.
Pairing Previous Players
One of the technical problems with this game was pairing the current player up with the previous player. A good question to ask is, what happens if two people play through the game at the same time? Won’t they have same previous player? Then who is the next previous player? This was an issue with the game, especially considering how there is a long period of time from when you read the previous players responses until you finish the game. This situation is handled by letting several previous players exist, then when the next person loads the game they are paired with a random previous player who hasn’t been matched before. In terms of deciding the previous players fate, I just choose the response of the first player to finish the game.
This solution leads to another problem that I didn’t anticipate. What happens if the number of previous players gets so big that people are waiting ages for an email? These players might assume that the email system is broken, or that you don’t really interact with other people. This actually happened and so I needed to come up with a way of dealing with it. Initially I was just manually filtering people out who had clearly entered a fake email address. Then I moved to removing people who had entered racist, sexist or disgusting messages(will definitely talk about this later). Then I decided to release a new version to properly address the issue.
Firstly, I decided to tighten the window over which you could be paired with the previous player. Initially the pairing occured when you loaded the game. I updated the game so that it could check to see if the player you were paired with had their fate decided since you started playing the game, if so then I would re-pair you with another player. I did this check in the background when you entered the cave and then on the screen right before you need to know the previous players responses.
Secondly, I noticed a lot of people that entered fake email accounts had also entered inappropriate content. So I decided to remove the email validation checks from inside of the game and just flagged the players as invalid outside of the game.
I released both of these changes in the one update and so it’s hard to say how effectively they were on their own. But together they greatly fixed the problem. These techniques cut down the list of previous players from over a hundred to less than five. Currently the game doesn’t extend out to any more than four previous players, usually it’s at one or two. This does however lead to another small problem being, what happens if there are no previous players because they all entered invalid email addresses? I resolved this by randomly pairing them with another player. Players would only receive one email from the first person that chose their fate.
Other Design/Implementation Thoughts
As mentioned earlier, there is a room with markings that represents the number of people who’ve played through the game. Initially this room was only programmed to support 3500 marks but was updated to allow for markings on the walls behind and around the book. The room now supports 5250 carvings, which we’ve surpassed.
When play testing the game we received several suggestions. One of these was to change the option of ‘Kill’ to ‘Attack’ when choosing the fate of the previous player. I liked this suggestion a lot because it toys with suggested meaning and outcomes. eg. “I didn’t mean to hurt him. I was only using self defence.” Another suggestion we had, was to allow the player to kill the sheep. This was added into the game, you can try it if you like. I was really quite torn about adding it into the game. In the end I decided to do so because it did make me feel uncomfortable and I wanted to test that feeling.
Moirai received much more attention than we were expecting. Here is a listing of some of the press we received:
- Indie Statik – Making Moral Choices That Matter In Moirai
- Rock Paper Shotgun – Live Free Play Hard: Flowers to Womans, Guns to Mans
- IndieGames.com – Freeware Pick: Moirai
- Jay Is Games – Moirai Review
- PC Gamer – The Best Free Games of the Week
- FreeIndieGames – Moirai – Highly Recommended
- Animal New York – Game Plan: Making Moirai, A Game About Suicide and Other People
- Kill Screen – Playlist 12/4: Moirai asks the tough questions, Icycle is a post-apocalyptic trip, and Proust parties
There were quite a few Youtubers who did play throughs of the game. From the developers point of view these are great to watch, it’s one of the best parts of releasing a game. Some of my favourite Let’s Plays were by RaedwulfGamer, RockLeeSmile and Things We Play.
The game also received a nomination for Kotaku’s Australian GOTY which was a bit strange. The nominations were sourced by the public. I tried to reach out the author to see if he played the game but I didn’t receive a response.
Moirai did received quite a bit of traffic from non-english speaking sites. This lead to a significant number of Russian and Spanish speaking players. In fact the most popular Let’s Play with over 40,000 views wasn’t in English.
All of us are super appreciative of the writers and youtubers who took the time to produce content about the game.
Total Play Throughs: 10581
Total Play Throughs marked as invalid: 1289
Percentage of Invalid Playthroughs since first invalid marking: 17.87%
Number of Players who were killed: 4360
Number of Players who were free: 6221
Percentage of Players who killed: 41.21%
Multiple Play Throughs
Total Play Throughs with unique email address(excluding invalid): 6534
Number of unique players(email) that played the game more than once: 1374(21.03%)
Top 5 Highest Counts of play throughs by email address: 52, 44, 29, 25, 20
Average number of times played per email address(excluding invalid): 1.42
Number of Players that asked no questions: 279(2.64%)
Number of Players that asked no questions and killed: 155(1.46%)
Number of Players that asked no questions and survived: 124(1.17%)
Number of Players that asked all 3 questions: 9325(88.13%)
Number of Players that included ban-able words in replies: 5592(52.85%)
Number of Playthroughs Per Day Graph
Looking at these stats there are a few interesting tidbits that jump out:
- Over half of the players entered some kind of profanity into the game. Worth noting that not all profanity was used in an offensive way.
- Most players asked all three questions and hence likely didn’t feel as though the other farmer would hurt them. They might have felt as though they had control.
- There were a few players who were really keen to replay the game. Over 150 people played the game at least 5 times!
- There is still a steady stream of players per day. At least 30 per day. I wonder if the tail for this game will be longer because people are more inclined to recommend it to a friend in order to find their fate.
Things we would have done differently
There are two things that I wished we changed about the game. Firstly I wish we logged if the player decided to kill Julia and secondly if we logged whether or not they killed the sheep. These would have been interesting stats.
Here are some important things we learnt having made the game.
Adding Mechanisms to support virality
One of the early changes we made was to add a short message at the bottom of the emails encouraging people to share the game with their friends if they enjoyed it. This was a simple way to help the game spread without having a negative impact on the player’s experience.
Game Portals can improve your exposure more than you think
We uploaded Moirai to my website, GameJolt and IndieDB. GameJolt by far increased our exposure the most, with many of the news posting linking directly to GameJolt and not my website which would be considered the ‘source’. IndieDB didn’t attract anywhere near as much interest and my website pushed through about the same numbers as IndieDB(mostly because some articles directly linked there). I think there are several factors that made the game more successful on Game Jolt. They seem to have a community that’s more interested in trying smaller, experimental games whereas I think IndieDB community is more interested in longer games with higher production values. This would make sense as IndieDB spawned from ModDB. Ontop of that I think there are a quite a few Youtubers and games journalist that casually check the GameJolt. We were also featured on the front page of GameJolt for quite a while. The featuring system here works much better than IndieDB which floods you with a lot of featured games but for a shorter period.
The amount of racist/sexist messages and/or comments with profanity is hard to appreciate
It was expected that a lot of horrible responses would be entered into the game. After all it’s the internet right? What I didn’t anticipate was the amount of this. You can’t really appreciate it until you see it. I spent an hour every day over a few weeks(while the number of previous players was high) going through and flagging these messages to prevent other people from seeing them.
Email Validation is can be used to trick the trolls
Invalidating a user record behind the scenes and telling them that they’ve successfully completed the transactions isn’t a new idea. It’s a pretty neat one that you may want to consider sometime.
That’s from me and Moirai. Feel free to contact me if you have any questions.