PeaX:
Brrr, it’s really freezing in here isn’t it? This was the seventh project at The Game Assembly, hope you are prepared, this might make you want to buy a snowboard.
This project I started on the player movement and mechanics and later transitioned to only audio work.
Audio Playback:
I had the sole responsibility for the audio playback and was the main bridge between our team and our external sound designer & game composer (Thank you so much Kimberly Palsäter, a pleasure to work with yet again for this project). This unsurprisingly includes the playback of things such as background music for each level & feedback on actions via SFX etc. I finally added that events could be paused, something that had been bugging me for the last two project, as well as custom seek speed values for frequency changes in the music depending on air time of the player. Since this project can also be played with up to 4 players I needed to make sure that all audio effects worked with that in mind, e.g. certain sounds only playing for the main player.
Music changes based on air time
In the level music there was a parameter which had three thresholds; The first is for when the player is on the ground and meant no changes. The second is for smaller jumps when there was a slight change in the music. The third and final one was for bigger jumps and a bigger change in the music. We wanted to have different seek speeds for threshold two and three, and since it was time based, I implemented custom seek speed logic instead of using the one that exists in FMOD.
Multiplayer audio considerations
Certain sound effect, such as the music changes above, were deemed too obtrusive when used with more than one player. As such these were instead only considered for the first player and ignored for the rest. It worsens the immersion for the other players but it was regarded as a worthy trade off.
Player movemement:
At the start of the project I was a part of creating the basic features and movement of the player. This was mainly focused on the rail grinding & recovery state. Later in the project I also changed our turning mechanics by changing the rotation of the velocity instead of adding more force as we previously did when turning.
Grinding on rails
The rails in the game are made up of a number of points where each point has a small trigger box so that the player snaps to the rail if close enough. When the player has snapped to a rail they find the closest index that is ahead of them and travels towards that point. This is then repeated until the player decides to jump of the rail or reaches the end and automatically go off the rail. When going off a rail there is a small immunity timer to when the player can snap to a rail because otherwise they would immediately hit the next hitbox of the rail and snap back again.
Recovery state
When the player lands on a surface, if their up vector is too far rotated away from the normal of the plane they are landing on they are instead put into a recovery state where a force is applied backwards until the player recovers and goes back to normal. The player can either recover by pressing the recover button three times or if the slow down enough they will automatically recover.