The Marshmallow Murder Mystery is a murder mystery game, where the player has to find the murderer before they get away. This Project was inspired by an absolute favourite Japanese Mystery Anime of mine, ‘The Kindaichi Case Files‘. It is an episodic series surrounding the grandson of a famous private detective and a young high school boy, called Hajime Kindaichi, solving the crime cases he happens to encounter. I’ve always been interested in crime mysteries such as CSI during my childhood and I had also developed a different marshmallow game prior in college, so I thought this would make a nice follow-up project idea for my final year in university.
Unlike normal murder mysteries out there, this game is based in a little neighbourhood house within a community inhabited by little pink Marshmallow people. The story is about a Marshmallow (the player) who is invited to a neighbourhood dinner but had arrived late to the gathering due to work. The other Marshmallows had already arrived by the time the main character gets to the scene, and finds out that a murder had just occurred. The victim is the host and the culprit is one of the attendees but the main character is accused. This is due to the perfect timing of their arrival and having no alibi that could be used to defend their case, as everyone else had arrived to the gathering on time. Your job is to look for clues and find the culprit before they get away, leading to you receiving their punishment in their stead.
There are five attendees other than yourself, who may accuse each other and riddles scattered around the house in an attempt to confuse you. By finding all four riddles and solving them, you will bring yourself a step closer to finding out who the culprit behind the murder is.
The controls are very simple and are made to be easy to manoeuvre around even for a not so experienced player. You move with the WASD keys, change camera angles with the mouse, use the left mouse button when needed and press ‘E’ to interact with the non-player characters (NPCs) and clues.
Week One. Level Layout and Keypad System
To start with, I created a rough level layout of how I imaged my game to look like. I added small detailed notes around the level so as to help me picture the environment and mechanics better, followed by some research into different house styles and such as that is where my main game level will be based.
The first task I tackled once I had the general idea for the game, was to create a prototype scene implementing the mechanics. I decided to create a sample as it would help me figure out how the mechanics would work out and if it’d go the way I thought they would in my mind or of I’d need to make any changes. To start with, I created a basic house environment using the 3D shapes available on Unity. Once I had a simple modelled game level ready, I then created the keypad system for when the player interacts with a specific object from the scene, a mini vault hidden inside the wardrobe. This is considered the most important mechanic as the player will find a crucial clue within the vault, allowing them to point out the murderer leading to a win or lose screen.
Once the player interacts with the object, the player will be prompted by a canvas UI overlay of a keypad, and will need to input the correct combination of numbers in order to open the vault. The Keypad UI will be created using images and buttons on the canvas. Once I had a basic outline for this system completed, I tested it and ran into a setback. The collider for triggering the door of the wardrobe to open, and the collider for the keypad of the vault were overlapping, causing glitches as the player would not be able to trigger the keypad UI over the door collider, upon interaction. There wasn’t much space within the wardrobe to move around the objects, so I decided to simplify this process and made it so that instead of having the player interact with a vault inside the wardrobe, the player would just need to interact with a keypad on the wardrobe door. By doing so, there would be less colliders overlapping each other on the same spot, and it would make it easier for Unity to pick up what the player is trying to do.
Week Two. Paper scraps can defeat the Keypad System!
Upon completing an interactable and working keypad system, I started to create animations using the animator function to show the different states of the wardrobe door. The door would stay in a Closed’ state until the player inputs the correct number code into the keypad, allowing the door to rotate open, into an ‘Open’ state. To create this effect, I had to animate the two states separately, for the ‘Open’ state, I rotated the door from the starting position to about 90 outwards to show the door swinging open, and in reverse for the ‘Closed’ state. Once I had both animations recorded and ready, I put them into the animator and linked up the two animations so that if the door was opening it would use the ‘Open’ state, and the ‘Closed’ state if the door was closed. Following this example, I made a few doors to connect each room in the house, each needing the player to stand in the area of the collider in order to trigger the animation when ‘E’ is pressed.
Next, I had to create a way for the player to figure out the correct number combination once they access the keypad. To do this, I thought a great idea would be to have riddles scattered around the house, which the player would have to search around for. Following the riddles, there will be numbered scraps of paper littered around and the player would need to solve the riddles in order, for the correct combination of the code to be known. As this is just the prototype scene, there is only a few objects around the house; however, there will be more objects placed around for the main version of the game, so as to better hide the numbered scraps of paper from the player.
Week Three. Dialogue Menu
After this, I needed to create a dialogue system for my NPCs. I decided to give each NPC a dialogue box as a way for the player to see the personality of each NPC in hopes to help catch the culprit of the murder. I created the dialogue system through the use of text on the canvas UI, which would be called every time the player is in range of the specific NPC and is pressing the ‘E’ button to interact with them. Once the player leaves the area of the box collider placed around the NPC, then the dialogue box will disappear. Each NPC introduces themselves upon entering the dialogue UI and is given small accessories such as hats, scarfs or glasses, as these can come in handy when figuring out the murderer.
Week Four. You’re the culprit!
The final mechanic I tested is one where the player will choose the culprit they suspect. A button is shown in the dialogue menu of each NPC which will say “murderer!” on it. By clicking the button, the player would be accusing them of being the culprit and a corresponding win or lose screen will follow up.
If the player were to pick the correct answer, then a win screen where the culprit is arrested will be shown. On the other hand, if the answer is wrong, then the lose screen will load, showing the player getting arrested instead. These scenes are loaded through the use of scene management in the script; once the win or lose screen is triggered, the player will be given the option to return back to the start screen or quit.
Week Five and Six. Prototype Testing and Feedback
Now that the main mechanics of the game had been laid out into a prototype, I decided it was time to get some feedback through player testing. I asked around to get some people to play test the game for me and most comments made were quite similar, I agreed as well. A few people stated that it was too easy, as the numbered scraps of paper scattered around the house had a set number to follow the riddles given, meaning if they didn’t know the answer to the riddles then they’d just look around for the pieces of paper and match the location as close as they could to each riddle.
Therefore, to make this more challenging, an interesting suggestion was offered and I took it. It was suggested that I should create more numbered scraps to scatter around, so that the player wouldn’t just cheat by guessing the order based on the locations they were found. This meant that there were more possible combinations of number, which additionally helps raises the difficulty a little because by doing so, the player would actually need to solve the riddle first before going to the correct location to find the number. Additionally, I added a few more riddles most people found it to be quite fun and had requested for more of them.
Similarly, another person’s feedback mentioned that finding the culprit was too easy. They didn’t even have to play the level properly as they could just straight away interact with an NPC and click the button to find the culprit which would instantly lead to the win or lose screen. They would test this repeatedly on all the NPCs until the correct culprit was chosen. Hence, to make it so that the player would actually play the game properly, I changed the mechanic so that an option to pick out the murderer is only given, after the player has accomplished some checkpoints, an example being that they had to have been into the wardrobe. Once the player had seen the crucial evidence in the wardrobe, a button will appear on each NPCs dialogue menu to allow the player to click on once they’ve decided who the culprit is.
However, this didn’t go as planned as I couldn’t get the button to appear correctly when the event was triggered. I attempted to use tutorials on YouTube as a guidance to create a clickable button that appears on the NPCs once the wardrobe is opened. I tested out the mechanic and the button wouldn’t appear on the screen. So in order to make it work, I attempted to simplify this mechanic by creating an object which would look like a round bell or button. This object will appear in front of each NPC once the condition is met, which is having had entered the wardrobe, and then the player will be given a chance to interact with the object in front of the culprit, through the ‘E’ button. If the player were to pick the correct answer, then a win screen where the culprit is arrested will be shown. On the other hand, if the answer is wrong, then the lose screen will load instead, showing the player getting arrested instead. These scenes are loaded through the use of scene management in the script; once the win or lose screen is triggered, the player will be given the option to return back to the start screen or quit.
There were a few more decent ideas to change or implement, which would’ve made the game better but as my time on this project is limited, I decided that I was happy with how the game is right now, so it was time to just move on to the next step.
Week Seven, Eight, and Nine. Here comes the 3D Models
The prototype is complete and I’m happy with where it’s gotten. So, following this, it’s time to finally start creating the 3D Models for my game environment. The main software I use is 3DS Max. I start off big by modelling the layout of the house first as well as the more important and bigger objects.
Following this, I start creating the smaller and more detailed object pieces.
Week 10 and 11. Exporting the goods and Photoshopping.
As I finish up on the final model in 3DS Max, I begin to export them in an attempt to bring them over to Unity, where my prototype game awaits. However, as soon as I import the package over to Unity, I notice a massive size different between the substitute objects I made using Unity and the proper objects I made through 3DS Max. In order to fix this, a few things need to be resized and repositioned into their correct positions. One of the first things I notice when I attempt to play test the game in the renewed environment, is that the doors connecting each room had started bugging out. When the player interacts with the doors, they would swing too much this way or that way and go the wrong direction. I had attempted to fix them by recreating the door animations to no avail, and as I was nearing the end of the time I had left on this project, I decided to remove these doors. The decision made wasn’t as tough, due to the fact that they played no major role in the level but were just nice to have aesthetically.
Once I had everything in working order again, I went on to create my Start, Lose and Win screens, using Adobe Photoshop.
Final Game playthrough.
Final Reflection of the Game.
The aspects that I think worked well for this game are the 3D models and the main mechanic. I feel that the models I made are quite detailed and fit well together, to create the final environment for the game. Although the modelling was great, I feel as if the materials used on them could’ve been better. I should’ve used more realistic looking images of materials over the simple bold colours provided by Unity. By doing so, I feel as if my 3D models would’ve looked to be more detailed and more realistic.
Although at first the opening and closing animations for my door mechanic was working well, it did not work well as once I had imported my 3D models from 3DS Max, they started bugging out. However as I was limited on time I felt as if I shouldn’t waste it on a mechanic that wasn’t as important. If I had more time on hand, I would’ve attempted to remodel the door completely and re-animate that new door, creating a new state machine for it; as I feel that starting from scratch is the best way to figure out what was wrong and to fix something.
Similar to the door mechanic, the keypad mechanic also did not work as I had planned. I had wanted the keypad to be on a vault, which would’ve been stored inside the wardrobe in the bedroom. This would give the player a chance to look for it, rather than having it be so easily noticeable on the door of the wardrobe.
If I wanted to further develop this game in the future, I would implement more levels and more puzzles as the player increases in levels. This would lead to a slow but steady increase in difficulty and possibly increase the replayability of the game. An example of a puzzle could be a jumbled up picture framed on the wall, where the player has to unjumble the pieces to the picture and possibly find any missing pieces around the level. Additionally, I could expand on the world outside of the house, I could build a level around the neighbourhood the game is located in by solving other cases given by the neighbours or looking for hidden objects and treasures.
Final Reflection of the Project.
The aspects of that worked well for this project was my time management when creating the 3D models. I am not that great at scripting, so I kept getting distracted and wasn’t able to focus well, this is also mainly due to the fact that the Pandemic is keeping all of us locked up at home which added onto the stress. However whilst creating the 3D models, I felt as if I could concentrate better and had a much more consistent work flow. Something that definitely didn’t work out for this project was the software made available to me during Covid-19. As it was safer to stay at home and away from people, I had to stick to using the free student version of the software’s which were needed, such as 3DS Max and Unity. During this time, Unity had required an update one time and the free license I had on 3DS Max had expired 2 times. This caused a slight disturbance to my work flow, as when I had needed to work on the game, the software needed wasn’t available which made me feel as if I should just leave it to be done later.
If repeating this process for my project, I would manage my time differently by keeping myself away from my family members, which were the main source of my distraction – the idle chatter, laughter and games. Especially since I share a room with a sibling who loves to game as much as I do, as well as voice chatting out loud with friends, it is much more difficult to concentrate. If I were to change my approach, I would walk out and attempt to find a quiet room to work on the project, or just kindly ask my sibling to corporate with me by giving me a fixed time of silence to work on the project every day.
Thank you for following me along the creation of this project! I hope you enjoy playing The Marshmallow Murder Mystery.