February 2026 - June 2026
Unity 6
C#
Photon Fusion 2
Meta's VR development
Git
Github
To close off my studies at DAE, the last semester was dedicated to a 4-month internship. I was welcomed by Oisoi Studio, a small startup studio situated in Ghent. During my time there as part of the developers team, I've got to work on a new project and gain a lot of new skills described below.
(For legal reasons, I can't show anything of the project that hasn't been shared by the studio before.)
The subject that had the most impact on my skillset, was Network Programming with Photon Fusion 2. Throughout the whole internship, I've learned how to think in terms of server, host or client code, utilising RPC's and Networked Properties.
At some point, I had to set up the startup pipeline of the game which included the starting up Photon depending on whether the game starts as server, host or client.
One of my responsibilites was to set up different build profiles for certain scenarios. I also made it possible to create a desktop server build that can be instantiated for different scenes. For example, you could load a server that's processing a different scene by filling in the specific scene name as a commandline argument on a shortcut to the .exe.
Since the new project would have a lot of customization and cosmetics, there needed to be a way for the artists to easily add cosmetics to the project. To make this happen, I created a window tool, using the UI Toolkit, that would allow you to drop meshes in and see a preview of the meshes with the master material applied. If you add them, everything that is needed for the cosmetic system will automatically be added/handled.
Creating such a tool has spiked my interest in tool development. I might want to do this more in the future.
Working in a VR environment made me think more critically about performance, since VR devices are essentialy just Android devices with similar specs to a standard phone.
One thing that stood out, was the overall elimation of transparency. Whenever something was designed as transparent, it had to be changed immediately for performance.
I gained some experience using Unity's profiler to reduce garbage collection on one of my systems. It was causing small lag spikes when used frequently, but I managed to reduce garbage collection to 0B.
I was also responsible for the animal systems, which included Unity's NavMesh support. Some animals had other requirements than others, like being able to enter water. Consequentually, I learned a lot about how to utilise different NavMesh Area's, NavMesh Modifiers and NavMesh Agents.
For legal reasons, I can't talk to much about the animals themselves.
I've also gotten the chance to work with shader graphs. On the image you can see a shader I made for a water particle. For performance reasons,
I couldn't just use a sphere mesh with Fresnel to blend the center color with the other particles. So this shader is used to blend the center color based on the particle's velocity in view space, because the 2D particles face the camera.