When I first joined Torus Games, my first project was Matchpoint.
We were in early Alpha when I started, so I got the chance to implement and work on a lot of core gameplay features.
One of my tasks was to design and implement a replay system, that would automatically play if the rally was considered 'cool'. Using a weighting system, we would determine if the replay was good enough to play automatically by checking certain
conditions reached within the rally, stuff like how long the rally was, how close the ball was to the ground when hit, how chaotic the rally was in terms of player movement, stuff like that.
I watched and researched a lot of professional tennis tournaments, taking notes on how their replays would feel and react to the ball/player movement to give our one the most realistic feeling possible.
When we had to port the game to the Nintendo Switch, we found out we were running into memory issues right away thanks to us loading in all the player assets at once into memory.
As I was basically the only programmer tasked with porting the game to the Switch, it was up to me to find and code a solution.
I decided to go with Unity's Addressables plugin, but quickly found out it was quite sluggish for loading assets on demand. So I made a local copy of the plugin and edited a fair chunk of it to handle what Matchpoint needed.
Allowing us to load single assets quickly and reliably when the player selected different characters, or different customization options. With these changes, memory usage dropped by almost 40%.
With any sports title, it requires a large and dynamic crowd system, and Matchpoint was no exception.
I worked on implementing our crowd system, using GPU instancing with computer shaders to calculate animations, allowing us to have a dynamic crowd with a range of animations and textures while still having high performance on all platforms.