top of page

Internship - Triangle Studios

Overview

During my time at Triangle Studios I mostly focused on creating abstract backend tools within Unity that can be used for a wide variety of projects. I also gained experience working in a team, as I also worked on features for a prototype.

Save Data Tool

For about 3 months I worked on a tool that makes save-data easily readable and editable inside the Unity editor. I liked working on it, this is the first time I took a bit of a deep-dive into JSON files.

When creating save-files for players, it is of importance that these files are both protected and efficient. Files are often encrypted to protect its contents, making them harder to edit. Files usually also contain efficient forms of data, for example, an ENUM value should be saved using its INT representation, and not its STRING representation.

​

However, this can backfire when a developer needs to read into a player's data-file. And that's why I made a tool in Unity that detects JSON-structures inside of a text-file, and converts its contents to the Unity editor.

​

On the right (image 1 & 2) are two versions of a file I used as an example. It is hard to read what is going on in the first image, and impossible in the second image (the encrypted version).

Image 1 - Save-data file

Capture.PNG

Image 2 - Encrypted save-data file

Capture2.PNG

On the right (image 3) is the converted version inside of the Unity editor. The data is shown in a more intuitive matter and is easily editable. When the user is done editing, they can save the file with its new values.

​

The tool is very flexible, it can detect multiple json-structures inside of a file. It ignores any non-json-structured data in the file. 

​

Below (image 4 & 5) are other data-files that use the same tool. The tool can use any json-structured file, as long as it meets certain conditions.

​

These conditions are roughly: The data-class needs to exist in the Unity project, there needs to be an SO with the data-class its data, the data-class needs to implement a specific interface.

​

The conditions ask of minimal manual work, in return for readable save-data. And by using an interface, it doesn't interfere with any structural design.

Image 3 - Converted save-data file

Capture3.PNG

Image 4 - Converted save-data file

Capture5.PNG

Image 5 - Converted save-data file

Capture4.PNG

The image below (6) shows the global structure of the code.

Image 6 - Global code structure

GenericDataToolDiagram-Portfolio Version.drawio.png
Gizmo Tool

For about a month I worked on developing a tool that makes it easier for developers & artists to organize their gizmo-settings in Unity.

I wasn't able to finish this tool, specifically near the end I decided to hastily refactor my code, which sadly backfired on me. Even though it's not a finished product, it can give inspiration on what a custom gizmo tool could look like. This was my first time working on a custom inspector, I liked it a lot! 

bottom of page