MMORPG, Superhero, Action
Developed by Dimensional Ink in Unreal Engine 3
My Contributions
There were no open positions at the time of interviewing, but I had left such a positive impression during the process with high enthusiasm to work on such a big project that we agreed to onboard me as a contractor.
The Nintendo Switch port was just released at the time with an extremely optimized render thread so help was needed to replicate the same performance optimization on all other platforms, and so I was tasked with doing so. During my investigation I discovered a lack of multi-threading support on Direct 3D 9, and so the task shifted to upgrading DirectX 9 to DirectX 11. This would then allow me to send render commands for adding additional threads to render tasks while also enabling the use of modern graphics debugging tools for the future. As a result, though I was brought on as a gameplay engineer, I took the role of a graphics engineer during my time at Dimensional Ink.
Luckily the boilerplate engine for Direct 3D 11 was already able to compile and run when I started this task. However, porting the engine over was still extremely difficult as I started with a black screen when attempting to run with Direct 3D 11. I had to parse through shaders, and dig very deep into the engine's render hardware interface's low level code to the point I had to read byte values to confirm certain data.
To solve the black screen, I learned how to utilize graphics debuggers that allow me to click a pixel and trace the call stack back and see how each pixel is drawn to the screen. I noticed the colors are drawn correctly at one part of the stack and so I started commenting out and rerouting code paths to get the display to appear appropriately. When I found out the cause of the black screen, extra time was spent researching to understand why the correct code path should be taken to ensure the correct procedure for the RHI to draw to the screen before applying my fixes.
Next was gamma and certain texture layers not showing up properly. I used the same method as the black screen to find the proper placement on the stack where it should be drawing by comparing with the working Direct 3D 9 version, and resolved the issue through adjusting code paths.
Some colors appeared incorrectly at certain places, and I had to trace the values through the shaders to figure out where and why the values were passing through incorrectly. I discovered certain color channels to be inversed when the engine got updated, so some places that use RGBF format would use BGRF instead, or vise-versa. I noticed some conversions were already in places that no longer needed converting as well, and removed them in those places as well.
Finally the last task for the upgrade was the fix full screen resolution issues as how it was handling black bars or screen stretches were incorrect. I compared with a modern version of Unreal Engine 4 to find the current approach and was able to get a working solution before wrapping up the fixes for the DirectX11 upgrade.
Other smaller tasks include expanding features on internal tools to help designers edit assets while considering the impact on future scalability of the game. An example would be a request to scale characters, for certain applications, but doing so would cause a mismatch with animations (such as foot sliding when walking) and negate the time a teammate spent to adjust those values, so we communicated clearly the tools that exists and prevent conflicts.