The Importance of Reverse Engineering

Tech Talk Banner

There are many people out there who think they have a winning game concept based on borrowing and meshing two or more concepts together. One such example that I’ve heard a lot recently is taking the combat of Dark Souls 2 and combining it with some other game feature. Whether that’s with a narrative of another game, a different type of RPG system or the platforming of another game; at face value it seems like it could be really cool, especially if you enjoy the combat of Dark Souls 2. If you were to try to make this game a reality, it would be very important to understand how exactly Dark Souls combat works as well as why it is made to be a certain way and what about that appeals to you and other players. Without it, you are likely to end up with a combat system that feels nothing like what you were hoping for. This is what we call Reverse Engineering.

Reverse Engineering is the practice of taking something that already exists and peeling away its layers to better understand exactly what makes it tick. For example, Super Mario is known for having an intuitive jump that makes sense for the player to use. If I was to make a game that revolved around platforming and jumping, it would be very important for me to take a close look at Mario’s jump to understand what about it resonates with players. How low and high can Mario jump? What is the full range of both jump height as well as horizontal movement? How long does it take for Mario to complete a jump? How long does the player have to hold the jump button for to achieve the maximum jump? How much of an impact does sprinting have on his jump? What is the rate of acceleration for his ascent and descent? How long does Mario “float” at the peak of his jump?

Mario Jump in order of input

From there you can better understand exactly how Mario’s jump works and better understand what about that makes it intuitive to use. It also means that you would be in a better position to recreate it and then further tweak the values yourself. Once you have a jump though, it’s important to understand what this means for the challenges of your game. Mario games utilize the jump and create the entire gameplay experience around it. Knowing how far Mario can jump tells you how far a pit can be if you want Mario to be able to jump over it. It also tells you what the player is capable of being able to accomplish.

Keep in mind though, that Mario’s jump works in a Mario game. It’s the same reason why Dark Souls 2 combat works well within its game. That’s why you cannot base research for your game off of only one or two examples. It’s important to build up a repertoire of games that may have some similarities with your own concept. It’s also good to look at examples of games that may have poor execution of similar mechanics to yours. That way you can better understand the limitations of what your mechanic might be capable of without entering the territory of boring or dull. Once again though, you can’t just play a game and say the games floaty jump makes for poor gameplay. What about the jump makes it feel floaty? Maybe it’s not the jump but the challenges that were setup for the player. Comparing the jump of Mario to the jump that feels floaty might not be different at all. It could be the gaps between platforms were all smaller and thus made you feel like you were in the air longer – making the challenges too easy and boring.

What about Flappy Birds “Jump”?

When you Reverse Engineer and gain all these values for what other games use, it greatly also helps you as a designer on your team communicate exactly what you are trying to get out of a mechanic when explaining it to a programmer. This way you can better explain to your programmer everything that is needed to get the desired effect for the player. It also allows for more clear distinctions for every value that you will both need to have available so that it is easier to tweak different aspects of the mechanic. Otherwise you may have told them to have the player be able to jump and have gravity affect their descent, rather than having full control over how fast they ascend, descent and hang in the air, creating a more robust game.

Now that you have finished reading this article, maybe you are able to reverse engineer what made me write this article and see why I chose the order of information to present as I did. Better yet, try taking a single mechanic from the most recent game you played and really dig down and analyze it. If you have the time and drive, try Reverse Engineering the entire game! I should warn you though. Reverse Engineering a game may have the negative affect of making you hate your favorite games. Player discretion is advised.

Westley Bassett is a Teaching Assistant for the VFS Game Design and Programming for Games Web & Mobile programs