I've often described my job as more Detective Work and not like, clever architect-ing. This is probably my best example of what I mean:
Our team was tinytinytiny, with about ~6 programmers, so I was the sole gal on the PS4 / PSVR port for our VR game. Sony has a list of requirements a game needs before they will permit a game to be sold on their store front, one of which being a stable framerate.
The thing about PSVR, though, is that it required a higher framerate than the average game. They needed
120 FPS
double what we've been used to targeting when making standard PC games. So any hitch that dropped it, had to be addressed, or the build wouldn't be accepted, and that deadline would not shift.
We had a level with a UI panel that would show attached to the view, count down, then disappear. For whatever reason, the FPS would drop throughout that countdown.
Bugs & performance issues are usually easier to track in the editor, you can place breakpoints to know when a line of code is called, and get logs and graphs and code stack traces fairly effortlessly to pinpoint the problem. Fast iteration too if you make changes.
But this hitch was only on the PSVR builds. It had to be played on the devkit, not from my editor on my PC.
I spent an incredible about of time learning Sony's devkit tools, pairing it with limited editor functionality, and precise cordoning of functionality with whatever logging processes I could access, just to identify what the source of the hitch was. I had to be precise with each attempt to track down the issue, as I needed to wait several hours for a build to finish to even observe the issue.
After days I had eliminated so many avenues of possibilities of the source of the bug, and I was staring at one last remaining function:
On timer end, Disable Panel Visibility
This wasn't a project specific function, this was an Engine level function. Standard tools, carefully crafted for optimization and performance. Designed to be reliable, trusted...right?
I unhooked it.
Waited ~2 hours for the build to compile and push to my dev kit.
The hitch went away, though I had a lot of numbers now glued to my eyeballs.
I was stunned, many thoughts of "why" and "how" going through my brain. But, the problem was identified, now I could solve it. The solution ended up being something that we're pretty familiar with nowadays regarding VR and visibility.
I cranked the scale of the UI to [0,0,0] anytime the visibility wanted to disable. It was still there, just, impossibly small.
No more hitch! The game shipped successfully on PSVR because of me & countless hours of tidying up various hastily written code. I'm still proud of accomplishing that.
