I received a recommendation letter for my work during this internship. If you would like to read it, please click here.
Governor of Poker 3 (GOP3) is an online game which hosts multiple events per year which require constant updates in order to add all the new content per event. My responsabilities during this internship consisted around a new tool the GOP3 team was implementing, that removed all of the assets which need constant updates from the main client and hosted them on a seperate service. This way in order to add content to the game, the client does not need to be updated allowing for more frequent content updates to the game without making players download a client update everytime.
For this internship, I divided my work into 3 phases;
The first phase consisted of removing all of the dependencies in the client and moving the assets to the external tool.
The second phase consisted of adding Unity Editor tools in order to add mantainability to the external tool.
The third phase consisted of adding validation tools and hosting a Usability testing to validate one of the editor tools created in the previous phase.
Here you can see a simple diagram of how the client code was loading addressables. The way it was design caused for multiple repeated code throuhgout the Addressable Dependent classes.
I noticed this could be improved and proposed the design.I wanted to highlight this part of the process as it shows my motivation and eagerness to improve.
The external tool uses Unity's Addressable system in order to load addressables from the external tool, which is a Unity web build that hosts all of the assets in the game (simplified description not to break NDA).
I was personally responsible for removing all of the dependencies shown to the right, the rest were already implemented by the mantainer & creator of the tool, my company mentor.
The implementation went smoothly due to my company mentor's design, so this was mostly "busy work" copying the design implemented previously.
I did however notice a couple of inneficiencies in the design of how the addressables are being loaded in the client, so I suggested a code refactoring in order to make the code more mantainable.
Please excuse the blur. It is intended to protect sensitive information.
One of the usual events in GOP3 is reffered to as "Global Events" within the team. I had the opportunity of witnessing how the team created these events The event is labelled as "Global" due to the high amount of new content delivered to the game, the only issue with these events is that prefabs were being done by hand.
Below you can see the Global Event Automation Tool in action. The only manual input needed is to select which action to take (e.g: create a hat) and then select the folder with the hat assets. The tool automatically detects the amount of hats in the assets and creates the necessary amount without duplicating the asset files. I created a tool for each of the different addressables in the project & validated the tool with Usability testing shown below.
Please excuse the blur. It is intended to protect sensitive information.
As mentioned previously, the external tool is (simply explained) a Unity web build hosting all of the addressables needed in the client. This allows for the creation of a lot of utility features for the team to use. One of these features was the Promotions Web Tool that was already implemented. This tool alows for the viewing of addressables in the admin page. This saves a lot of time for the Live Ops team as they can visualize the addressable that are having issues. Additionally, the tool downloads the desired catalog of addressables so it will always have the newest addressables if they are in the client. I also implemented an Abstract Factory Design Pattern, making the tool very extensible.
You can see some of the addressables being loaded in the editor view to the right:
Additionally, I hosted a Usability Testing with several people of differing experiences with Unity. As you can see from the results, everyone succeeded in creating 3 addressables in under 10 minutes. Which compared to the mantainer's time of ~3 minutes, is extremely impressive as the task went from only being able to be done by him, to being able to be passed to someone with 0 unity experience.
After pitching the tool to the team, they requested a very necessary feature. If the Global Event Automation tool would be used by technical artists, then I need to add a way for them to debug the addressables incase of any mistakes from the tool or on their end. This created the idea for refactoring the Promotions Debugger tool into the Addressables Debugger tool shown below.
Under the blur I am selecting a dropdown with all the different addressable groups, then the tool will automatically spawn all of the addressable keys saved in an easy to navigate matrix.
Hint:
You can remove this information by activating Premium Plan