Process Behind the Game
Brainstorm the Idea:
One of the first steps in making games - especially games that heavily revolve around storytelling - is coming up with the idea! There is no set way on how I come up with an idea, but I usually have a journal of random thoughts or ideas and I work off of those first.
For Reversed, I wanted to create another mystery but put another fun twist with it. In my previous game, The Funny Thing About Trust, the game's theme revolves around trust and and what happens when that trust is tested. In addition, I had also been playing more games such as Phoenix Wright (in which I was really fascinated with their mechanic for obtaining and presenting evidence) and binge watched quite a few anime shows with my friends. As a result, all of this inspired me to focus on the idea of good and evil through reincarnation. In this chapter of Reversed, the criminal gets reincarnated as a detective, a role reversal that I think has a lot of potential to explore and play around with when making a game. Plus, this gave me the opportunity to try and create my own system for collecting and presenting evidence and how the player solves mysteries.
Though I was planning for more intense mysteries down the line that take a darker turn, I wanted to start off with a lighter mystery. I also wanted to show to the player that you cannot trust what everyone says. Therefore, I came up with the first case being a little kid named Kai, who asks Mike, the criminal reincarnated as a detective, to help him find his missing friend. With miscommunication and assumptions, Mike believes for a time that the friend was killed or kidnapped, but later finds out that the missing friend actually moved away and didn't tell Kai. Therefore, in this brainstorming stage, I get to think and plan out what kind of story I want to share with the player and what characters will be involved in the game.
One of the first steps in making games - especially games that heavily revolve around storytelling - is coming up with the idea! There is no set way on how I come up with an idea, but I usually have a journal of random thoughts or ideas and I work off of those first.
For Reversed, I wanted to create another mystery but put another fun twist with it. In my previous game, The Funny Thing About Trust, the game's theme revolves around trust and and what happens when that trust is tested. In addition, I had also been playing more games such as Phoenix Wright (in which I was really fascinated with their mechanic for obtaining and presenting evidence) and binge watched quite a few anime shows with my friends. As a result, all of this inspired me to focus on the idea of good and evil through reincarnation. In this chapter of Reversed, the criminal gets reincarnated as a detective, a role reversal that I think has a lot of potential to explore and play around with when making a game. Plus, this gave me the opportunity to try and create my own system for collecting and presenting evidence and how the player solves mysteries.
Though I was planning for more intense mysteries down the line that take a darker turn, I wanted to start off with a lighter mystery. I also wanted to show to the player that you cannot trust what everyone says. Therefore, I came up with the first case being a little kid named Kai, who asks Mike, the criminal reincarnated as a detective, to help him find his missing friend. With miscommunication and assumptions, Mike believes for a time that the friend was killed or kidnapped, but later finds out that the missing friend actually moved away and didn't tell Kai. Therefore, in this brainstorming stage, I get to think and plan out what kind of story I want to share with the player and what characters will be involved in the game.
Creating the Whitebox:
With a plan in mind, I created a general layout of what the world would look like using Unreal Engine 5. This helped me figure out what key locations were important for this chapter and where each building should be, including where the people and puzzles will be for the players to interact with. Whiteboxing also helped me with figuring out the scale, such as how big a room needed to be. In my opinion, even though whiteboxing may sound like a lot of work, it definitely makes the later stages easier and prevents you from over-scoping. For me, it was mostly the latter because I thought the world will be a lot bigger, but I saved myself a lot of time when I realized that my world did not have to be as big to accomplish my needs.
Here are a few screenshots of my whitebox:
With a plan in mind, I created a general layout of what the world would look like using Unreal Engine 5. This helped me figure out what key locations were important for this chapter and where each building should be, including where the people and puzzles will be for the players to interact with. Whiteboxing also helped me with figuring out the scale, such as how big a room needed to be. In my opinion, even though whiteboxing may sound like a lot of work, it definitely makes the later stages easier and prevents you from over-scoping. For me, it was mostly the latter because I thought the world will be a lot bigger, but I saved myself a lot of time when I realized that my world did not have to be as big to accomplish my needs.
Here are a few screenshots of my whitebox:
Coding the 2D Movement:
For this game, I wanted to use fixed cameras and have the players only move left and right, giving the illusion that it is a 2D game in a 3D world. With a whitebox already built to test this out, this was my next step in making Reversed. I not only limited the input so that players can only move left and right, but I added another input, the "F" key, to move from one place to the next. This allowed players to go in and out of buildings, as well as go down alleyways without breaking the illusion of the 2D movement. |
Writing the Story:
Next step was writing the story! Now with an idea and the world I'm working with, I had a lot of fun working on the characters and their dialogue lines. In fact, each character's name is purposeful and adds to the character themself. For example, Mike Insen is an anagram for Nimenseki, a two-faced statue that represents good and evil in Japan (in fact, in later updates to the game, there will be a character called Ken Mesini, who is a detective reincarnated as a criminal, whose name is also an anagram for the same statue!). Another example is the town name, which is the Town of Pazura. Pazura is Japanese for puzzles, and I thought that was a really fun name for the town because one of the game's main features are the puzzles that players will solve. In turn, there was quite a bit of research then went into the writing of this story.
In this stage, I also created the characters using the RPGMaker, not only to later implement into the game but to help me visualize what the characters would look like. For instance, Mike Insen will be wearing the typical clothes of a detective, while the Goddess will dress more elegantly and have a fantastical flair to her with her purple dress and her gold jewelery.
When working with stories, especially a mystery, I always go back to my handy sticky notes. I would write down the characters, scenes, evidence, and important dialogue lines on sticky notes and put them on my wall. That way, I can arrange them and rearrange them so that I establish a nice flow with the story and that the evidence makes sense for the decisive conclusion of the case. It can look messy but it helps with organizing the story.
After that, I let the story write itself and start typing away on my laptop! Sometimes I'll get so invested and write for hours at a time, and I find that this uninterrupted flow produces quite a few good lines and moments in the story. And it's also a good idea to just get everything down on paper, because you can always go back and edit it later.
Once the script was done, I put everything into an excel file for the next step.
Check out stories to see both a sample of the script and the excel sheet!
Next step was writing the story! Now with an idea and the world I'm working with, I had a lot of fun working on the characters and their dialogue lines. In fact, each character's name is purposeful and adds to the character themself. For example, Mike Insen is an anagram for Nimenseki, a two-faced statue that represents good and evil in Japan (in fact, in later updates to the game, there will be a character called Ken Mesini, who is a detective reincarnated as a criminal, whose name is also an anagram for the same statue!). Another example is the town name, which is the Town of Pazura. Pazura is Japanese for puzzles, and I thought that was a really fun name for the town because one of the game's main features are the puzzles that players will solve. In turn, there was quite a bit of research then went into the writing of this story.
In this stage, I also created the characters using the RPGMaker, not only to later implement into the game but to help me visualize what the characters would look like. For instance, Mike Insen will be wearing the typical clothes of a detective, while the Goddess will dress more elegantly and have a fantastical flair to her with her purple dress and her gold jewelery.
When working with stories, especially a mystery, I always go back to my handy sticky notes. I would write down the characters, scenes, evidence, and important dialogue lines on sticky notes and put them on my wall. That way, I can arrange them and rearrange them so that I establish a nice flow with the story and that the evidence makes sense for the decisive conclusion of the case. It can look messy but it helps with organizing the story.
After that, I let the story write itself and start typing away on my laptop! Sometimes I'll get so invested and write for hours at a time, and I find that this uninterrupted flow produces quite a few good lines and moments in the story. And it's also a good idea to just get everything down on paper, because you can always go back and edit it later.
Once the script was done, I put everything into an excel file for the next step.
Check out stories to see both a sample of the script and the excel sheet!
Coding and Implementing the Dialogue System:
After I finished writing the dialogue, I started working on the dialogue system to implement it. Dialogue plays an important role in this game when it comes to the storytelling and collecting evidence, so it was one of the first systems I wanted to work on for the game. By importing my excel sheet into my own dialogue structure, I was able to go through each line with the correct character images, names, dialogue line, and later voice lines, one by one. To do this, I made sure that the data table not only had the dialogue lines, but the name of the character and the images that need to be on screen when that dialogue plays. The lines that play also depend on what the players ask when given the option. To do this, I have a variable that the system checks to see what answer the NPC should give. Rather than having the player hit a next button over and over again, I made it so that players can click anywhere on the screen to move on to the next line. There is also the typing text animation, but if players want to skip that, I coded it so that if players click once before the line is finished "typing", it will automatically complete the line. And if players click again, it will move on to the next line. This allows players to breeze through dialogue if they choose to do so. |
Creating and Coding the Puzzles:
Since I was already working with widgets for the dialogue system, I decided to move on to the puzzles because it also involved the widgets in Unreal Engine 5. I also created simple art at this time to use for these puzzles, such as the items in the Find the sticky note with the password puzzle.
There are 4 puzzles in Case 1: A Child's Request:
Since I was already working with widgets for the dialogue system, I decided to move on to the puzzles because it also involved the widgets in Unreal Engine 5. I also created simple art at this time to use for these puzzles, such as the items in the Find the sticky note with the password puzzle.
There are 4 puzzles in Case 1: A Child's Request:
Find the sticky note with the password:
In this puzzle, players must move the objects on the table to find the password on the sticky note. One of the challenges I faced was figuring out how to get the win state, because I couldn't find a way to test if there was an item overlapping the sticky note. Therefore, I came to the conclusion to, instead, keep track of what parts of the player's mouse goes over the sticky note, and if it goes over a certain percentage of the sticky note, then the player wins. |
Hack into the computer:
This correlates with the Find the sticky note with the password puzzle, because the sticky note has the password to access the computer. All players have to do is type the right password into the textbox to win. Because this widget simply checks if the player inputs the right password, it was the easiest one to code. However, I made it so that players can type the password in all caps or lowercase and it will still work. Players can also choose to submit the password by pressing the arrow key or by pressing "enter" on their keyboard. |
Get into Akira's locker:
Players are tasked with getting into Akira's locker to search for more evidence. However, unlike the Hack into the computer puzzle, the lock combination can be obtained by talking with the teacher. Specifically, if the player asks a certain question, the teacher will give the player a phonebook, which has Akira's phone number and address. And the address just so happens to be the lock combination! Putting in the right lock combination solves this puzzle and gives the player a letter from Akira, which is added into their evidence folder. Just like the Hack into the computer puzzle, checking for whether the player inputs the right lock combination wasn't challenging. However, I made it feels like you're using a lock. What I mean by that is, if the number is on 0 and the player clicks on the left arrow, the number won't stay stuck at 0 or go into the negatives, but goes to 9. And the reverse is true too. If the number is at 9 and the player clicks on the right arrow, then the number will go back to 0. |
Sort the evidence:
To officially solve a case, players must complete the Sort the evidence puzzle once they have enough evidence. Here, they must sort the evidence in chronological order to ultimately explain what happened to the client. Out of all the puzzles, this one was the most challenging to code. I originally made this using widgets, like the other puzzles. However, I could not find a way to check if the evidence was in the right spot without having to use a bunch of child widgets. Therefore, to work my way around this, I made this puzzle using 3D blocks that can be moved with the player's mouse. With this, I was able to check if the blocks of evidence were in the right collision box, which I believe was a more efficient solution to what I was trying to do. And because the camera was fixed and the player still had to use their mouse to move the evidence, it still gave that widget feel when almost all of it was done without it. |
Creating the Main Widget:
The last important widget is the main widget that is always on the player's screen, which is the street name and the folder button. Whenever the player moves or "teleports" with the "F" button, it changes the street name variable to the street the player moves to, ultimately keeping track of where the player is on the map. This variable communicates with the street name widget to make sure the right street name (or room, if the player is inside) is being displayed. The folder button is important because it has several features:
I saved the this main widget for last because it relies on information from other other widgets. For example, in the dialogue system, if the player is given an item from an NPC, that item will be added into their evidence folder. Same goes for when the player meets a new person. If the player talks to an NPC for the first time, they are also added to the people folder. In addition, with the puzzle system, rewards for solving puzzles are usually pieces of evidence, like the Get into Akira's locker puzzle. Therefore, when the player wins, the right evidence also needs to be added to the evidence folder. Therefore, if players have not met a certain person or got a certain piece of evidence yet, then the icon is blank and players cannot click on that button. Only after the boolean variable for whether they have met someone or have the piece of evidence is true, then the image will show and they can click on the corresponding icon to learn more. The same approach goes for the Solve Case button. If players don't have the right evidence, a message will appear that tells them to look for more evidence. And if they have already solved the case but players still press the button, they will get a message to encourage them to finish the case by talking to Kai. |
Audio:
Audio really enhances a game, whether it be that cheerful ding when a player correctly solves a puzzle, or when the voice actor really gets into character and draws out the emotion behind one of the dialogue lines. And coming into this project, I wanted to try my hand at adding audio into my game, so this became my next step.
Sound Effects:
When creating the different systems and gameplay, I thought about what sound effect would enhance the game and add to the player experience. For example, when a player gets evidence, I should add a sound effect to give the player another indicator that something has been added to their evidence folder. And because was a piece of evidence, I decided that the sound effect should be similar to writing something down on a piece of paper, as if the player was writing down the piece of evidence.
Some sound effects that I couldn't recreate were from free sound effect websites such as SoundEffects++, which I then edited in Audacity to get the exact sound I'm looking for. However, for other sound effects, such as footsteps, knocking on the door, and writing on a piece of paper, I recorded them and edited them myself. One choice I made when creating these sound effects was using a marker instead of a pen when doing the writing sound effect. This is because the pencil was too quiet and the marker was louder and made it more obvious that it was someone writing.
Voice Directing, Acting, and Editing:
I got to play all 3 roles and it was honestly one of my favorite parts when working on this game.
In Reversed, I am the voice actor for Kai Chochi and the assistant. My process for recording my lines was doing 3 takes for each line, doing each take a little differently so I have choices to work with.
Because I was also voice acting for my own game, it helped me direct the other cast members. For example, I made them follow a similar process and offered suggestions in how they could change their tone or the way they say a line to fit what I had in mind. However, I would also give them context of the scene, like where they are and who they are talking to, to help them get into character and envision the scene themselves. Soundproofing was really important too, so we used a lot of blankets to block out any other sounds that could get caught in the recording.
For voice editing, I used Adobe Audition, which had a lot of useful features that helped me in the process. For example, I would use the kill mic rumble to get rid of some of the plosives and smooth the waves a bit. And then I would use the Spectral Frequency Display to look for unwanted sounds like saliva clicks and use the healing brush to get rid of them.
Audio really enhances a game, whether it be that cheerful ding when a player correctly solves a puzzle, or when the voice actor really gets into character and draws out the emotion behind one of the dialogue lines. And coming into this project, I wanted to try my hand at adding audio into my game, so this became my next step.
Sound Effects:
When creating the different systems and gameplay, I thought about what sound effect would enhance the game and add to the player experience. For example, when a player gets evidence, I should add a sound effect to give the player another indicator that something has been added to their evidence folder. And because was a piece of evidence, I decided that the sound effect should be similar to writing something down on a piece of paper, as if the player was writing down the piece of evidence.
Some sound effects that I couldn't recreate were from free sound effect websites such as SoundEffects++, which I then edited in Audacity to get the exact sound I'm looking for. However, for other sound effects, such as footsteps, knocking on the door, and writing on a piece of paper, I recorded them and edited them myself. One choice I made when creating these sound effects was using a marker instead of a pen when doing the writing sound effect. This is because the pencil was too quiet and the marker was louder and made it more obvious that it was someone writing.
Voice Directing, Acting, and Editing:
I got to play all 3 roles and it was honestly one of my favorite parts when working on this game.
In Reversed, I am the voice actor for Kai Chochi and the assistant. My process for recording my lines was doing 3 takes for each line, doing each take a little differently so I have choices to work with.
Because I was also voice acting for my own game, it helped me direct the other cast members. For example, I made them follow a similar process and offered suggestions in how they could change their tone or the way they say a line to fit what I had in mind. However, I would also give them context of the scene, like where they are and who they are talking to, to help them get into character and envision the scene themselves. Soundproofing was really important too, so we used a lot of blankets to block out any other sounds that could get caught in the recording.
For voice editing, I used Adobe Audition, which had a lot of useful features that helped me in the process. For example, I would use the kill mic rumble to get rid of some of the plosives and smooth the waves a bit. And then I would use the Spectral Frequency Display to look for unwanted sounds like saliva clicks and use the healing brush to get rid of them.
Playtesting the Game:
Though playtesting took place at each stage of coding, such as coding the movement, the dialogue system, the puzzles, and the main widget, I always make sure to do a final playtest once all these systems and features are in the game. Because there are so many parts to the game, and the fact that my game has a non-linear story that allows the player to pick which characters they talk to first, it was important to make sure everything was working properly. Therefore, during playtesting, I would test out different routes, and sometimes I would even invite friends over to watch me play and get their input too. If fixes need to be made, it is back to the coding stage to debug!
Though playtesting took place at each stage of coding, such as coding the movement, the dialogue system, the puzzles, and the main widget, I always make sure to do a final playtest once all these systems and features are in the game. Because there are so many parts to the game, and the fact that my game has a non-linear story that allows the player to pick which characters they talk to first, it was important to make sure everything was working properly. Therefore, during playtesting, I would test out different routes, and sometimes I would even invite friends over to watch me play and get their input too. If fixes need to be made, it is back to the coding stage to debug!