Inverse Dash

About:

The goal of this project was to create a game based around a novel gameplay idea and rapidly prototype it to demonstrate that idea's viability. My game, Inverse Dash is a twist on the side-scrolling runner style of game, where twist is that the player has two avatars whose movement is inverse of each other. For example, when one avatar jumps up, the other falls down. The same input goes to each avatar, but they have different levels, so the challenge for the player is charting a course through both levels with the same input.

My Contributions:

This was a solo project, so I designed and implemented all aspects of the game. Some key features in this project for me were the menus, the level design, and the time slowing system. This was my first experience creating a menu system in Unity, so it was interesting to learn more about how UI design works in that environment. The level design was the hardest part of the project for me partly because of how new I am to level design, but also because of how difficult it is to create a level that meaningfully leverages my game's mechanic while giving the player agency. I solved this problem by creating branching paths in the later portions of the level, where the harder path has collectibles that increase the player's score. Finally, the time slowing system leverages Unity's built in time system to make the game slow down as the player comes close to losing, allowing them more time to understand the game state and, possibly, to recover.

Technology/Tools Used:

This project created in Unity and coded in C#. This was my second major Unity project experience, though it was much less technically rigorous than the first. I also used Atlassian's Jira software for project management, and specifically made use of their burndown charts to guage how well I was avoiding burnout. I also used GitHub for version control. Additionally, this project makes use of a specific design pattern called the event bus, or Pub/Sub. This pattern allows certain systems to publish events, and others to subscribe to those events, allowing the systems to interact with each other without directly knowing of each other's existence. This is extremely helpful in keeping the project code organized and allowing systems to be portable to other projects.

Research:

In the course of developing this game, I researched three other games in the runner genre in order to discover some of their commonalities and differences. This helped give me a head start on my game's features by showing me what is common among similar games, and what mechanics I could choose to or not to use. Additionally, this was the first game I was able to have playtested. The feedback I received from the playtesting session was instrumental in revising the game into the more complete product it is now.

Project 1: Metroid

Project 3: Haunt