Project

Tower Of Fools

Trailer Video

Project Overview

My University (the University of Staffordshire) hosts a large collaborative group module between second and third years each year, this project was created as part of that module our team was a size of 25 students all credited on the Itch Page.

My role in this project was programming, mainly the player controller and the various power-ups, I also created a Technical Design Document for the team and organised an external teacher to playtest our game for feedback.


This was my second group project like this with the University so I was able enter it with previous experience on how a large group of students work together. The group chose to create a infinite 2.5D local PVP vertical jumper, this was due to our large number of concept artists who could create the 2D assets while keeping the scope small enough for it to be achievable.


This project was a blast to work on, I got to meet some great game developers each with their own areas of experience and while issues did arise towards the end of the project we established a much stronger communication pipeline.

Skills Used

  • Unity
  • C#
  • VFX in Unity
  • Documentation
  • Team Communication
  • Problem Soliving

TDD

As mentioned in the overview I created a TTD for the project, while the programming lead did originally plan to take responsibility there were communication issues between the disciplines of the group so I took over the task instead so that there was a central point for both programmers and designers to understand the project as the GDD had not been updated after the first week of the project. I started working on this when I had a gap in my workload after doing the prototype for the player movement and waiting for confirmation on how it felt.


As I had never made a TDD that was intended to be used and updated to work with a team so I did research into TDDs from other games and did my best to replicate the structure, I made sure to also add a section for designers so that there was an easy to find answer for most of the frequently asked questions.


I can confidently say that I have learnt a lot from even just making the documentation for this project and further developing how I communicate in a team of this size, as I usually communicate in small programmer groups or small groups when working on Game Jams.

Game Art

Gameplay Screenshot

UML Diagram

Character Controller

While my responsibility was working on the power-ups the player can interact with I also worked on the player controller as I knew I could get a prototype of it within a couple days of the project starting once the team had settled on how they wanted it to work. It is a fairly simple system that utilises Unity's local multiplayer input system to allow both players to be controlled by game controllers at the same time, I had not used this system before so it did take slightly longer than expected to get the dual controller input implemented without bugs but the end result ended up being simpler than I expected.


Designer Support:

We only had a few designers in our team and most never entered engine so I wanted to make tweaking the player controller as easy as possible for them (as I needed to implement the power-up functionality rather than adjust the player feel), I made use of Unity's ToolTips to explain variables and their interactions within the editor so they never needed to go into the code. We also had a Teams channel where I would post system updates and explain how they worked through UML Diagrams, I tried to maintain a good communication pipeline between myself and the Lead of the Design team to elaborate on systems or expose new variables that they needed whenever possible.


Adding art:

I also worked closely with our Animation and Art team to get assets for the player in place, as it was the first time that most of them had the opportunity to put their assets into an engine there was a lot of back and forth communication so that the textures for models looked how they expected and animations playing correctly.


While I did work on the character controller I was not responsible for the player lives or respawn logic as another team member wanted to implement lives.

Powerups

After getting the base character movement functionality in and its relevant variables exposed I moved on to implementing the power-ups, I was given a couple diagrams on how they should work but I got to make a lot of design decisions myself.

List of in-game power-ups:

  • Sprint Boots (boosts player upwards)
  • Scroll (spawns platform below player)
  • Player Swap
  • Double Jump {scrapped}
  • Marbles (stun on hit)
  • Dagger (stun on hit)
  • Shield (blocks lava/marbles/dagger once)
  • Lucky Card (random power-up)

I worked with Zoey from our Tech team to implement the pickups into the UI of our game, they where a pleasure to work with and we were able to get everything functional rather quickly.

When the player picks up or uses a power-up it triggers an event that passes a string with the power-up name to the UI manager that displays the correct description and image for that power-up.

Gameplay Screenshot

Power-ups VFX

Sweat VFX

Adding VFX

As I worked with the art team when adding the assets for the character model I also worked closely with them for adding VFX. The art team wanted some effects to play when the player used a power-up, with a different effect for when the spring boots are used, to add these I worked closely with Freyja who created sprite sheets for me to turn into an sprite animation.


I also needed a visual signifier for when the player has the adrenaline mechanic active (where the player has a boost to their speed and jump height while close to the lava) so I asked the art team to create a sweat droplet for me to use in a particle system.

I also tried my hand at adding some polish through lava particles, we were missing a way for the player to know how close the lava was while it was off screen so I added some simple eruptions that had randomised particle count,velocity and spawn times so that they did not feel too repetitive for the player.

I would have liked to add more polish and implement more juice to the game but when nearing the deadline for the project I needed to focus on bug fixes instead.