Lia's code and crafts

Game engines

Frostbite Go (2013-2014)

Frostbite is Electronic Arts' own game engine, originally written by DICE for the Battlefield games. During my time with the company, it was significantly expanded and ended up used by other AAA titles such as Star Wars: Battlefront, Mirror's Edge: Catalyst, Dragon Age: Inquisition, Need for Speed, Plants Versus Zombies: Garden Warfare and more. At that point it was primarily written in C++ with a custom editor in C#, supported many different platforms and was heavily data-driven.

I joined the "Frostbite Go" team which was porting the engine to mobile platforms, as seen in the Battlefield 4 Commander mobile app (discontinued). My specific assignment was to expand on this work and get the engine running on MacOS - which I did, just in time for the project to be canceled! None of this seems especially impressive nowadays. But this was before Metal, before Vulkan and SPIR-V and decent shader translation tools, before Android Studio, before semi-decent graphics drivers on Mac OS or Android. The result was a lot of what we'll call creative solutions for shader and API calls translation.

Frostbite Rendering (2014)

As a result of the Mac port being canceled, I was reassigned to the Rendering team to bring mobile concerns closer to core developement work... at which point everyone I was supposed to work with disappeared without a word. I would only learn months later that the secretive project was the first, iOS-only version of Apple's Metal API. I instead ended up spending more time with DICE game teams, taking ownership of UI rendering specifically - you can read about some of that work in the Battlefront section. Much of the rest was converting the entire UI rendering pipeline to premultiplied alpha and fixing the many resulting bugs. I also spent a significant amount of time patching gaps in documentation, communicating with various game teams and collating their needs into unified feature lists.

I left this job with an even more unusual profile. I got very comfortable writing technical documentation and communicating with many users with conflicting needs. I developed Mac and mobile expertise in addition to console and PC habits, using a wide range of development and debugging tools. I also ended up more convinced than ever that "interface" engineers that have one foot in core tech and one foot in a specific game's needs are vital. I also learned to be extremely at ease with very, very large codebases and immense datasets even on platforms that are not too fond of them.

Bitsquid / Stingray (2015)

Stingray (Bitsquid before being acquired by Autodesk) was a fully data-driven multiplatform game engine. Its renderer specifically was more data-driven than is typical and much of the engine exposed an extensive Lua API. Arrowhead and Fatshark are the main studios that used this engine, notably for Warhammer: End Times - Vermintide. It was available to the public until January 2018.

I joined the core team and primarily worked on parallelizing the data pipeline. This allowed it to take advantage of multi-core CPUs, speeding up the data compilation process by an order of magnitude on some machines. I also fixed a variety of bugs and updated the Lua math API.

Synthesia (2020)

Synthesia is a piano learning app available on multiple platforms. While it is not a game per se, it is also an interactive application that renders a full 2D image for every frame, meaning its renderer looks a lot like something from a game engine! Said renderer needed a full rewrite to be more modern, in no small part so that it could support Metal on Apple platforms. I ended up putting together a tight, flexible design that allowed multiple graphics APIs and double-buffering with only minimal changes to very intricate application code. This is not easy with 2D renderers that generally depend heavily on exact order of operations. We also ran a very brief Vulkan experiment which concluded that the resulting complexity and maintenance burden would be massive overkill for the app.