Tiempo

Role:

Gameplay & UI Programmer

Language:

C#

Engine:

Unity 2021.2.17f1

Duration:

4 months

My Responsibilities


  • Time Rewind ability

  • Obstacles coding

  • AI coding

  • UI coding

Tools


  • Unity3D

  • SourceTree

  • Visual Studio

  • Git


Game Overview


Tiempo is a 3D, single player, third-person platformer where you must make your way up a clock tower to stop your rival inventor from pausing time infinitely across the world. While platforming up the tower, you will encounter enemies and roadblocks such as moving platforms and pressure plates which need to be activated using your time pausing and rewinding mechanics in order to proceed.


Experience Summary


Tiempo is a final project I worked on at my time at VFS. I worked as one of the programmers along side a level designer, project manager, two artists, and another programmer. I kept a strong communication with all the team members so would could release a cohesive and polished product.

This project also taught me a lot about best practices when it comes to working with another programmer and how to integrate without stepping on anyone's toes. Coding this game was an extremly daunting task as our main mechanics all had to deal with time manipulation and I've never done something like that before.

I was a part of this project from pre-production all the way till final/release.


Time Rewind Ability


The Rewind ability was a challenge as I had to figure out a way to create a system to save the object's history while not destroying performance. I had to go through multiple iterations of the rewinding system, initally starting off with a timeline system where we could change the objects timeline and through some math it can determine what position it should be in. However, I soon realized that I did not have the time to develop such a complex system and changed course to store timer data, but this caused many bugs and platforms began desyncing.

Soon I realized that since the size of our game was quite small it may not have much of an impact to memory to just store a bunch of position values and some inital state values. After some math I realized that it would be fine and that is the final design that we ended up having.


Obstacles


I was put in charge of coding the Pressure Plate and a way to unlock and lock objects using the Pressure Plate(s). Since every moving obstacle in the game needed to be lockable I needed to make this mechanic as modular and easy to implement to save production time. To do this, I created a manager script which would communicate with the required Pressure Plates then tell the object to either stay lock or become unlocked. The only additional code the object script would require was an ILockable interface which had one boolean the manager script would toggle.

I was also responsible for coding the Moving Weights. This was quite simple to do as it was just a linearly moving object that would stop for a determined amount of time then move again in the opposite direction. I used a simple lerp from point A to point B then had a timer that would count up until it would exceed the required wait time. Then it would just move from point B to point A. This simple script allowed my fellow coding teammate, Ava Cheng, to easily implement her Time Pause ability.


AI


I was tasked to coding the ToroBot, an enemy where it is meant to somewhat replicate a Spanish bullfight. As the secondary AI programmer I had to build off of my teammate's, Ava Cheng's, AI code base. Through inheritance I was able to build off of her basic enemy movement and attack code and develop the ToroBot's own unique movement and attack. I developed three unique states for the ToroBot's attack to make it feel like Spanish bullfighting, a Charge-up State, Charging State, and Stunned State.

Through playtesting we found that players weren't getting enough feed back for when the ToroBot is changing from the Charge-up State to the Charging State. So, I changed the system to allow the ToroBot to stop aiming at the player, create a new noise, make his eyes glow, and for it to blow out steam just before charging. Players found these new features to give enough feedback to comfortably bait the ToroBot and complete the puzzles.


UI


Being the sole coder for the UI of this project I wanted to be ambitious and give it that wow factor that you wouldn't see in any other final projects in my grade. So, I got together with the UI artist, Max Sakamoto, and we planned for a 3D UI where the camera would fly around the world when you select different things and all the menus would be in 3D. However, Unity's system only supported for 2D UI, but there were some built-in base classes that I was able to inherit and hijack for my own use. Through using some of Unity's built-in UI functionality and my own custom scripts I was able to create and finish the UI within one week. One week faster than our alloted two weeks to complete.