May 11, 2014

Paper Phantom

Game download:


You are a phantom, a spiritual being who can possess humans.   On one rainy night, you arrive at a hotel to investigate a social event that may have importance to you.  Your experience at the hotel at first seems innocuous, but rumour has it that some mysterious man is planning a ritual that may put the hotel’s guests at risk.

Paper Phantom is an adventure game prototype developed by three teammates: Matt, Douglas, and Jamison; and me.  The player’s goal is to solve puzzles by possessing various people and using their unique abilities.

This is the first time that I have worked using the Unity engine.  I find the Unity engine to be a large step up from GameMaker Studio.  By creating scripts using the C# programming language, I, as a programmer, have been able to create complex game rules by being able to utilize advanced programming features like polymorphism.


My involvement with my team of four has been interesting.  As the de facto team leader, I created the idea for the game, wrote the dialogue for the characters, designed the puzzles with my partner Matt, designed the level layout, did all of the scripting, and of course, kept in contact with my teammates.  In addition, our artists, Douglas and Jamison, drew the game assets, creating an aesthetic that resembles games such as Paper Mario.

I have become very ambitious with this project.  Making a game with a supernatural protagonist has always fascinated me, and with Unity, I have been working towards making my dream a reality.  At the same time, I realized how long it takes to program a game of this scale.

I made the explorable hotel three floors tall.  In order to keep the player from getting lost, I carefully locked several rooms, which could only be opened with certain characters.  I also controlled the rate at which characters were introduced, again to help pace the game.


On the programming side, moving in a three-dimensional space was tricky.  I dedicated a sizable portion of code to keep track of colliders, objects that represent solids in physical space.  I needed to make sure that the player would never accidentally move through objects and made sure that players could always interact with a nearby object if the player pressed a certain button.

In addition, each object in the game has its own unique behaviour.  For example, a door to the women’s public toilet needs to stop the player from entering if the player is not controlling a female, and vice versa for the men’s toilet.  Hotel bedrooms also have to keep players locked out unless they are possessing the character staying in that room.  Lifts need to open up a menu that lets players select a floor to which to travel.  Finally, dialogue boxes need to change depending on how far the player is in the story and which character the player is currently controlling, as well as prevent the player from moving while engaged in dialogue.

The sheer amount of coding overwhelmed me, but my determination not only got me through to making a working game, but also led to the code being surprisingly well organized and free of bugs, considering its complexity.  While the game may not yet be rich feature-wise, I do genuinely feel that the framework that I have built can be used to expand the game greatly over the summer.