Toys 'R' Sus

During this project I was mainly responsible for implementing NVIDIA's open-source physics library PhysX, the audio design using FMOD Studio, and jointly responsible for the networked gameplay with Axel Melkersson and Teo Silfverhjelm.

Networked Gameplay

During the project, I got the experience of building gameplay systems around a networked environment. With the help of Axel's network system, I could create different message types with customized data structures to easily communicate in-game events between clients.

The nature of working in a networked environment is incredibly challenging, mostly because you are incredibly limited in the amount of data that you can send across clients to create a synchronized experience. The lesson in my case

was that you can get most of the time by sending a single number to identify what event is supposed to happen and do the remaining logic at either the server or the client depending on what network setup you are working with.

Below are some GIFs showcasing some of the created systems and synchronized interactions.


The interactions were made easy with the use of my PhysX raycast interface, which always returned the associated entity number that the player is looking at.


The voting menu became the thing that went through most iterations, with the main cause being lack of clarity. In the first iteration, we noticed players had no idea if they voted, who they voted on, and how many still needed to vote. The final result after weeks of tweaking became the screen you see above.


Sabotage is one of the more important gameplay features to create a more varied experience for the Traitors. Developing this feature allowed me to have some freedom with how to convey to the players what they should do next. My solution used some fun audio cues and lights to create the needed sense of urgency in both the alarm and light sabotages.

The GIF showcases some early development of the implementation.


Similar to the start of Loa of Death, I took it upon myself to update our implementation of collision with the use of PhysX. This had the perk of always being consistent in its simulations and easy to debug with the accompanying visual debugger.

My implementation was used later in the development to easily create static collisions from entities placed by Level Designers in Elia's Editor. Teo also made use of it to create eight different minigames with clever use of the PhysX's simulation capabilities. The final major use of the implementation was the movement which used the PhysX internal character controllers to move and PhysX raycasts to interact.


The final big contribution on my part became the implementation of FMOD's audio engine and the entire soundscape of the game. Using FMOD Studio I created effects and music from scratch with help from Soundsnap's library of sound snippets.

One of the more fun audio I implemented was the Calibrate minigame to the right, where I synchronized the audio with the number of pins currently in its correct placement.