Project

Game Jam hosted by GMTK

Project Overview

My first game jam to completion but joining this jam was admittedly a last minute decision as I was working on a side project with one of the other devs on this jam and she mentioned wanting to take part even though the jam had already started, so we reached out to some other friends and came up with the idea of a 3D racing game. We chose a racing game as it was what we thought of for the theme countdown, I also liked the idea of getting to work on movement for a vehicle as I don't have much experience with that.

For the game engine we chose Unity as all the programmers had experience with it and while the artists had never used or imported to it before were willing to learn.


My responsibilities:

  • Player
  • Game Loop
  • UI (excluding minimap)
  • Adding SFX

Skills Used

  • Unity
  • C#
  • Team Communication

Game Screenshot

Programming the Player

As mentioned in the overview this was my first time working with a vehicle controller, this was a step outside of my comfort zone as I found it very different as it factors in physics forces such as suspension and drag. For the player I started with very basic directional movement as a placeholder while I looked into implementing forces.

I then added suspension as I had experience with that in second year of University. It was a bit finicky to figure out spring position and strength so that it feels like a hovercraft, I started with 2 springs near the base of the wings but when I got the model I changed it to fit the new shape.
When adding the movement I watched a lot of youtube videos on how other people added it for their vehicles, I wasn't able to find any videos for hovercrafts so I tweaked what I found to fit our game.

After getting the movement for the player in I added a 'flattening' force to try and keep the player level as there was an issue with going forward making you point into the air very quickly and acceleration so the longer the player holds forward the faster they will go.

As a bit of polish I added some particle systems that Arnas made to the hovercraft, the player changes between a smoke style and a jet depending on their speed relative to their max speed.

Game Loop

For the game loop I added the time boosts and debuffs, player respawning and track bounds, lap counter for the track and added logic for only allowing the player to go through the finish line from the front.

The initial logic for the finish line was done by Arnas, but I added a check that simply compares a Vector3 of the colliding objects position - the finish line objects and checks if the Z value is 0 or greater. This was to stop players reversing after the start and

Player respawning and bounds were easy to add as it only needed a trigger collider, I started with a sphere collider around the track that would respawn the player when the left its bounds but this allowed for some very generous skips in the track and if the player fell it would sometimes take a while to respawn them depending on their location on the track. I changed this to just a convex collider of the track mesh which was much tighter but still allowed for some skips like we intended.

Game Screenshot

Game Screenshot

Adding SFX

Once I had gotten most of the main systems in I searched through free audio assets online to find ones that fit our game.
For the background music I was inspired by Rocket League and its how its background tracks give life while not being distracting so I found music that I thought could play over the radio in the sci-fi setting of our game.

I did want the background music to just be one track that constantly loops as I usually find those annoying to I made an array of music I found and then loop through that array instead, if I had more tracks I would change this to a random int in the array instead and check the int isn't the same track that was just played.

What I have learnt

I have learnt a lot about team organisation and how to work with people unfamiliar with Unity or Github, for future Jams i now know firsthand how important it is to layout roles as well as peoples availability as we overscoped for our teams availability this time.


Changes:
While I am ultimately happy with the result of this jam and how ive improved with programming physics since doing it there are still areas id improve when reflecting on what I would change.
The main area would be the player controller, I did my best within the 3 days of work that I had but the end result is hard to control and missing polish. To fix this I would change how the player turns to make it feel more responsive especially at high speeds and apply a greater downward force to the player so the hovercraft feels heavier and makes flying between parts of the track harder but still possible.

Game Screenshot