Tempus
By Jay Marriner, 03/08/2022
For my final University project I decided to team up with 3 other students and create a linear story RPG. In this post I want to breakdown the project and list what went well, what needed improvement and how the project overall went.

The concept

To give a quick summary of the project we created; Tempus is a time travelling adventure RPG. You play as a character known only as "Agent". Dr.Mallus, a respected government scientist, has just created time travel but to the horror of everyone he has stolen the technology and used it to take over all of time! Agent must infiltrate Dr.Mallus' lab and use the teleports to travel to each moment in time, defeat all of Dr.Mallus' robot armies and restore balance to the timeline before bringing Dr.Mallus to justice!

Initial planning

At the start of the year we were tasked with planning the game. This included a comprehensive Game Design Document, noting each team members role, a list of assets and programming tasks on codecks (similar to Trello) and create a vertical slice of the game - essentially a proof of concept.

Looking back; many factors went well - all the documentation was completed to a high standard and listed everything you would need to know to create the game. The vertical slice was the real MVP for this section of the project though. I started by creating essentially a playground level to explore mechanics and ideas which led to many interesting and quirky mechanics that eventually made it into the final game. There were also some mechanics that whilst useful; did not make it to the final cut but showed use for future projects such as a procedural generation system for spike pits.

For the vertical slice we opted to create 3 level layouts, each would house a mechanic and a puzzle to complete the level. We opted not to include enemies as this would take too much time and we had already spent a lot of time the previous academic year perfecting enemy AI.

One improvement which was noted from our vertical slice was verticality, all of our levels were too flat and needed some exploration to them. We took this feedback seriously and got straight to work changing our concepts for the levels to use in our final project.

The final product

Programming

For the programming portion of the project we initially had 3 programmers however as we went from pre-production to production we had a switch to 2 programmers. This meant the workload was increased massively but we remained optimistic we could complete the tasks at hand still.

My first task was to create a mechanic I was rather excited to make - the portal gun. This was a tricky task and whilst I got it up and running within a few hours of tireless programming; it did have bugs and was very particular about how to be used. This was fixed by myself further down the line by implementing a new method of use (essentially rewriting the mechanic).

After the creation of the portal gun we got to work on the other weapons in the game. Kaan (the other programmer) worked on the future levels mechanics, a Jetpack and a blaster gun whilst I worked on a bow and arrow mechanic. The bow is definitely under-appreciated as a mechanic in video games. The was a delicate balance to making it feel real but enabling players to easily hit what they were aiming for - this definitely caused a number of headaches. Aside from the feel of the bow just getting it to work was also a challenge - pulling the bowstring back at x amount and using that to multiply the speed of the arrow effectively is a mechanic I feel proud to have accomplished as it isn't as easy as it sounds.

Moving on to more complex systems; I tasked myself with creating a cutscene system. This would switch cameras to a moving cinematic camera, place the player infront of an NPC, display subtitles for what the NPC was saying, play voice lines for each line of NPC dialogue, play an animation on the NPC for each line and finally automatically switch back to the player once the cutscene was complete. To be honest; it would have been acceptable to not have this mechanic and just have text appear above an NPCs head however I felt like this would help me explore an area I hadn't really explored prior and let me push my development skills to complete a rather complex task. It also made the game feel much more like a final product ready for sale. I was very happy with the outcome of this and it is definitely one of the highlights of the game as I made it very easy to reuse and edit even for people who can't programme as it utilises Unity's UI elements to create.

Another mechanic I produced was the enemy scripts. Making these; I always held the core idea of reusability. This meant utilising inheritance effectively and using some Unity tricks to allow this script to be adaptable to all enemies. All that was needed in addition to this script for all enemies (including boss fights who simply had a toggle option) was a child script with the attack method as we wanted all the enemies in the game to feel unique. This system is another one I am immensely proud to have created. It served its purpose well and the enemies in the game are a highlight. The boss fights in particular feel and look amazing and defied what we thought it would turn out to be.

Finally for the mechanic section I wanted to talk about the Katana. We knew since the planning phase we wanted a katana in the game for our Japan level but we were left head scratching regarding how to implement it effectively. Eventually it was decided the enemies would have fixed arms that could fire bullets - the player would be able to get up close to the enemy and strike them with the katana which had 2 animations - if the blade hit the enemy it would reduce their health but only if the player had swung the sword, this stopped enemies from dying simply by the player running into them. We also implemented a power-up ability to the sword, a custom mechanic I created that allowed for 2x damage when used. The power up was charged by either killing enemies or cutting bamboo which was another custom mechanic I created as a cool little extra. On reflection I wish I had gone with our initial concept of time slowing down when powered up allowing the player to take out enemies fast and effectively with the sword whilst dodging bullets as this would give the sword more utility. This was impossible due to how the player was initially made and would have required a full rework which wasn't possible at this stage.

Project management

As I was the only one with experience of github in the team I took on the role of source control manager. This meant I constantly reviewed all work done on the project and manually reviewed merges in code branches to ensure there were no conflicts. This was great experience for working in a time whilst using source control and seeing all the issues that come from that.

I also setup our Codecks (similar to Trello). This allowed us to manage our work flow and assign different tasks to ourselves when needed. It definitely kept the project on track throughout and worked a lot better than Trello would have done.

Art and 3D models

We set out to go for a low-poly aesthetic with the game and aimed to create each level feeling lived in and full to ensure it was not blank and bleak. This really shined through in the medieval level which was the first level we made and had time to really spend on getting the right feeling. As we moved forward to the Japan level we still had some time to make it feel alive such as small detailing with the gates, lilipads in water and more. Moving to the future level however; we were low on time and had to prioritise getting the game in a final playable state opposed to making it look pretty. This was unfortunate however the final level still works great and looks okay.

Although I was primarily focused on programming; 3D models became somewhat of a bottleneck for development as we didn't want levels to feel empty. This led to me learning Blender over 3 days and creating numerous assets for the game including the main character and all the boss models. My favourite asset that I created was the Japan level boss as I felt both aesthetically and mechanically this boss turned out great.

I also created numerous humanoid models for NPCs both interactable and background characters. I also created weapons such as the arrow and portal gun.

Animation

For the majority of our animation we opted to utilise Mixamo as none of us were animators and it would save us much needed time. Their animations also look and work great.

I did also add some inverse kinematic animation to the game for holding and using weapons with the main player. This was extremely useful for the bow and arrow that otherwise would have looked very fake.

Overall outcome

Overall I am very proud of the final product. It is by no means perfect and there are a few things I would tweak and change if done again. I also wish we had been giving longer than 3 months to work on the game as we did put the hours into developing it right from the start of the module but still felt rushed throughout. I believe this is a great game though and our team did an amazing job.