DICE
Battlefield 4 (2012-2013)
My first job out of school was UI software engineering as part of the Battlefield 4 UX team. I worked closely with artists and designers to implement UI widgets and screens, focusing on performance and graphics programming tricks since the game had to ship on the PS3 and XBox 360 along with PC and the then-brand-new PS4 and XBox One.
Some specific features that have my fingerprints on them:
- Customize: the entire screen and its back-end were rewritten from the ground up, converting it from Flash to an in-house C++ framework.
- Scoreboard: drawcall batching to make it fit on the temperamental PS3 GPU.
- In-game HUD: faux-anti-aliasing via transparent vertex generation tricks.
- UI graphics programming: "glitch" post-processing effects for visual flair.
This work taught me to have a strong focus on users, whether they are players or artists asking for features, and started me down the path of a very unusual specialization in the overlap of UI and graphics programming.
Star Wars Battlefront (2014)
My time as a member of the Frostbite team got a bit weird and I ended up spending a few months embedded in the Star Wars Battlefront UI team. Thanks to my unique position of being both part of the engine team and very close to game-specific concerns, I upgraded the engine's shader pipeline so that it gave more flexibility to game teams that wanted to hand-code their own shaders. I onboarded the lead UI programmer on this technology, allowing him to create distance-field-based effects.
Some of the most striking visual features of the UI were also my work: I was responsible for the blurred "frosted glass" backgrounds on UI elements as well as the iconic "Star Wars Screen Wipes" transitions. Both of those required a fair amount of research to implement efficiently plus close collaboration with the art director. The frosted glass effect specifically mostly reuses existing code, and offers Photoshop-style levels control to alter color elegantly.
Uprise (2015)
The last of my months at DICE were spent between Stockholm and Uppsala, working with Uprise (now merged into DICE proper). They were looking at integrating web technologies with Frostbite to create a layer that could be shared between Battlefield titles: I onboarded the C++ team on Frostbite UI workflows and provided guidance on tech choices. I also bridged many communication gaps - basics such as the notion of time are very different between web developers and typical C++ game engineers! From what I hear, the result unfortunately turned out somewhat wonky, which was not unexpected. Embedding web tech into traditional game engines has come a long way since.