Gameloft Toronto
Role: Technical Artist
Notable projects: Disney Magic Kingdoms, unannounced projects
Engines used: Unity 3D, Glitch
Platforms: Mobile devices
Employment time: 10 months
At Gameloft Toronto, I was part of the core art team and was responsible for various projects the studio was involved with.
Unfortunately, my time at the company was suddenly cut short due to a layoff as a result of restructuring. Even though Disney Magic Kingdoms is an already-released title, a lot of other work I’ve done is under NDA, notably for projects that weren’t released. That being said, I’ll to share what I can.
My contributions
During my time at Gameloft Toronto, my responsibilities are scattered across various projects. Despite that, there were numerous responsibilities that were shared between projects, including providing technical support to artists on the team and leading training sessions on software or workflows that the team should be aware of. I’ve also written documentation on workflows and shared tools.
Unnamed Unity project
The unnamed Unity project was a project that hoped to port a currently-released game into Unity to result to a better performance. This was the project I spent most of my time on, beginning from when I was initially hired up to November 2023. There was a major deadline that had to be reached, in which I played a major part in. Although Technical Artists at Gameloft are members of the Core Art team, I was simultaneously part of the Workflow team of this project at the time.
During this time, I integrated a lot of required art (vfx, character animations, ui) assets to the engine using existing 3ds Max export and BDAE importer scripts. I also improved on several scripts and amended others to fix bugs. As scheduled deadlines leading up to the deadline in November 2023 was quite tight, which meant implementation tasks and any related visual bugs had to be addressed within the end-of-the-month deadline.
I also improved on other scripts too to fix material/shader-related bugs. Below is a brief explanation of the scripts I’ve contributed to:
BDAE importer script (for VFX)
The purpose of this script was to import vfx of an existing Gameloft title to this project. The challenge this script had to overcome was to translate all the source file data from the vfx’s .bdae’s source file into Unity. .dae’s (.bdae source files) were in .xml, meaning that a lot of data that had to be translated were string based. This ultimately required various aspects of the file to be named properly in order for the script to function properly.
The initial version of the script was able to do most of what it needed to do. It imported most of the important aspects of a vfx such as meshes, textures, and animation clips, as well as create and link its required materials and prefab components. Despite that, it had a few flaws that resulted to visual issues that were often fixed manually. With so much vfx that needed to be imported, it was important for this script to be fixed so that these issues don’t arise.
A few of these issues that I fixed included:
- Texture UV animation clips weren’t fully getting imported
- Texture UV animation clips that were getting imported were imported in reverse order
- Texture shearing/offset information weren’t being imported
- An empty mesh filter gameobject gets created for the root of the prefab when it shouldn’t be
- Various vfx that use random colours don’t get imported
I further amended the script when I was asked to make this a script that all projects within Gameloft Toronto could use, no matter the project. In that case, the only thing I needed to adjust was to allow the script to copy over texture files from the disk to the project.
Character summoning script
The purpose of this script was to import characters of an existing Gameloft title to this project. When necessary, the script is responsible for creating locked shaders for the specific character assets deriving from the materials it imports with as well as any linked textures. There was a major bug regarding the creation and assignment of shader, and I was tasked to investigate and fix the issue.
Through more investigation, I found that this problem arose from characters who had more than one material assigned to their meshes — somewhere down the line, the script wasn’t able to recognize that there was more than one material that should’ve been created for the asset, and thus would only create one material. My solution to this issue involved..
Disney Magic Kingdoms (DMK)
Disney Magic Kingdoms is a city building game where players can create and maintain their own park while interacting with characters under the Disney IP. Because DMK is a game that currently still receives monthly updates, integrating newly created assets is integral to the workflow. The game was built using Glitch, an internal rendering engine. Scripts were in either C++ or Lua, and shaders for the project were written both in HLSL and GLSL to support both iOS and Android devices.
I primarily worked on integrated assets for latest updates using the Property Maps Editor. That process occasionally required me to troubleshoot assets completed by artists and reach out whenever something may have been named improperly. I also joined relevant meetings to keep up to date with the assets that are ready to integrate. I was in the process of investigating longer standing issues when my time at Gameloft was abruptly cut short. A brief list of these issues included the following:
Animation desync issue
This was a long-standing issue in the project involving characters who perform solo quests/activities with props involved. These animations would play as-intended for the first few loops, but ultimately, the character animation and the prop animation will get desynced over a period of time. I noticed that most if not all of the animations that had this problem were animations that required the prop to disappear for a few frames.
Unfortunately, I wasn’t able to fully implement and test my solution to this problem due to the sudden layoff, however, I’m quite confident this is the thing that’s causing the desync issue.
Colour mismatch between the Glitch build and 3DS Max
Another long standing issue was related to how texture colours appeared in 3ds Max in comparison to Glitch. Because colours weren’t appearing as an artist may expect, there was a lot of guess work involved. Often times, artists would have to adjust and check their colours until the intended result is implemented.