top of page

Back In My Day

A blast from your grandpa's past!​

​

Technology: Unity
Date: Spring 2022

​

This game was created as part of the 2022 Ubisoft Game Lab Competition. For the competition I was placed on a multifaceted team with students from my school and we were tasked with creating a game based on a single theme. This year's theme was "the student experience". Our prototype is a Two-Player Cooperative Rouge-lite game where the player takes control of their grandparents in the past. The player experiences the arduous (and slightly exaggerated) journey their grandparents took to get to school.

​

 In this project my roles were Technical Design and Product Owner. As a Technical Designer I handled design and implementation of a variety of systems including our player character, items, level design, animation implementation, interactive tutorial, and event listeners and handlers. As a product owner I helped break up deadlocks when debating concepts with the team and made sure that our team had a single shared vision for the game during the development period. Below is a gameplay trailer put together by our AI Programmer Andrew Hunt.

​

​

Items

The variety of items and how they interact with the game space is what makes our game special. There are three types of items in game: Utility items can be used by the player and provide temporary buffs. Passive items increase player stats as long as they are held. Cooperative items are used to attack enemies with your co-op partner. Pictured here is the Milkshake (Utility), Running Shoe (Passive), and Soda Pop (Cooperative).

items.PNG

In order to rapidly create items I designed a base class from which all items types would inherit from. It includes common variables such as item type, in-game name and description, and audio files. Handling items this way allowed us to rapidly create and iterate on items, which was important given the limited time we had for the competition. Pictured below is the base item class as it appears in the inspector.

usableitem.PNG

Cooperative items require both players to work together in order for the item to take full effect. Since our game is intended to be a cooperative experience it was imperative that the Coop items felt good to use. Shown below are the explosive soda pop and mint combo, as well as the baseball and bat.

chrome_n7CsI3I8IL.gif

Custom Events

I created multiple event managers for our game to help optimize and decouple our code. Common events like dealing damage, equipping items, playing audio lines, and spawning in items were handled by a Singleton that could be easily called from other scripts.

gaemeventsW.PNG

By inheriting the base event class present in Unity I was able to create highly custom events that could be invoked from anywhere. Pictured below is the EnemyDealDamage event. Any object that deals damage would invoke this event, passing in the object to be damaged and amount of damage dealt. The health script of the passed in object would be accessed and damage would be dealt accordingly.

damageEvent.PNG

Dialogue was also handled through an event manager. The narrative manager held a list of dialogue lines that could be accessed by invoking an event and passing in a parameter type. The parameter type determined which audio line was played. For example we would have a trigger at the start of each arena that would call a specific narrative line about the arena from the narrative manager. The subtitles would also be updated as the line was vocalized.

narrativeManag_edited.jpg

Animation Implementation

For this project we opted to use Adobe Mixamo for animations. Since we had a variety of animations I had to set up animation controls for the player character and enemies so that every action in game had appropriate and understandable visual feedback.

bullyAnimated.PNG

Each animated character had a controller that contained all of their animations and determined how they could transition. A script was attached to animated characters to check if they were moving or not. The script would update the animator and make sure the right animation was currently playing. Pictured below is the player animation controller. The arrows indicated transitions to another animation.

playerAnimation.PNG

Interactive Tutorial

Since our game had to be played by a variety of judges it was important to include a functional tutorial. I decided to make the tutorial interactive in order to ensure that players fully understood controls before jumping into gameplay.

Screenshot (78).png

The tutorial automatically launches at the start of each game. Control prompts appear on screen alongside audio and subtitles that explain the control to the player. To progress through the tutorial both players must complete each step of the tutorial. I also added functionality to allow player's to skip the tutorial.

Screenshot (77).png

In order to have each tutorial section have its own audio and icons I created a tutorial manager that contained a list of tutorial elements. The image below is a snippet of the whole list. Each tutorial "line" is inherited from a base class that included the audio queues, subtitles, and tutorial icons associated with the particular tutorial line. The tutorial manager will access these lines and keep track of player progression in the tutorial.

bimdTutorail1.PNG
bottom of page