The Curious Tale of an Unexpected Visit is a 2D sidescrolling comedic narrative game made in Unity. All of the visuals of its collage art style come from internet archives. I worked in a team of two over the course of a semester for Richard Lemarchand's game production class. The game typically takes 10 minutes to play through.
The player character, a steampunk robot maid named Charlie. is commanded by its owner Amelia to clean up her terribly messy living room due to a sudden unexpected visit from a childhood friend, Ferdinand. As she holds him off at the door with awkward banter, the player must frantically clean up the living room via any means necessary, be it fire or defenestration. Charlie’s actions will greatly impact the relationship between Amelia and Ferdinand.
I worked as the team's lead programmer and shared the designer role with my teammate. To improve our design workflow, I wrote a parser and interpreter that read my own custom scripting language from text files and transform them into narrative events. Because of this setup, we could very quickly iterate on anything from dialogues to visual effects and scripted events by simply editing text documents. This was especially helpful for my teammate; she was not a programmer, yet she could easily make drastic changes to the game without my aid. I also designed and programmed a narrative system that procedurally generates story paths via combinatorics. The game system achieves this by remembering the player's every action, such as how they chose to get rid of an item if at all, and dealing appropriate narrative consequences at the right moments.
I learned to create a lengthy game from start to finish in a small close-knit team.
Because of the scale of this project, I learned to design and code for scalability and unpredictability; for example, I was able to very quickly and easily add features to my custom scripting language due to the structure I decided on in the early phase of development. This provided fast iteration on the design side and lessened headaches on the engineering side, especially late into development.
I also learned a lot about effective communication. For one, I learned to challenge and be challenged during heated design debates without getting personal. I also learned the importance of assigning members to hold responsibility for features to prevent unnecessary conflicts, with the caveat that we could respect and trust the responsibility holder's judgments, which we did. Overall we worked efficiently without running into many unnecessary problems.