During the summer of 2018, I was a technical art intern at BioWare Austin, working on Anthem
, their new IP. My task over the summer was a live service project for automated icon generation
for various items and characters in Anthem
, and this project could potentially be used for future studio titles as well.
The main usage of the tool is to remove the mindless work in creating icons for 3D assets, which originally would be staging them in front of a camera, lighting them, taking a screenshot, then processing those screenshots in Photoshop with the desired effects. My goal for the summer was to take as much of that process and crunch it down into an automated, hands-free process
that also doesn't remove creative control from the user
so that tweaks, adjustments, and stylistic choices could still be made by designers and artists. Another big need of the tool was to be cross-user
, meaning one person may do a lot of the setup work for some items then another person would be the one to run the tool and create the icons.
After developing the basic pipeline of loading assets, starting an executable window, screencapping the assets, then automatically masking those assets to have a transparent background, my work branched out significantly. I learned a considerable amount of Windows Presentation Framework
to make a painless MVVM frontend for myself and future developers, architected a system with COM programming and some huge community-made Photoshop libraries
to fully allow interfacing between Frostbite and Photoshop, implemented a robust layering system
that allows multiple arbitrarily-complex assets to be captured and processed differently for icons with multiple selective effects in them, developed an object pooling system
to efficiently limit the loaded resources during the capture stage of teh process, set up a data encoding/decoding scheme
for lots of data that needed to be used among many users, created a reflection-based system that intelligently parsed Frostbite objects
so we could save out staging, lighting, etc., and use it later (potentially on another computer!), and designed a metadata system to use with "special" asset information
like animations so that future developers can more easily integrate upgrades requested by stakeholders.
Most of what I've covered is just the general, overarching development. Much in terms of both hard skills and soft skills were needed to start such a project, and everything I worked on also came with the stipulation that I would not be the one to hold onto this tool forever (or even very long). As such, all of my work was thoroughly worked and reworked to make it approachable and extendable by other developers after me.
- Coordinated a feature set and technical design document with the project stakeholders and my peers.
- Developed every requested feature as per the technical design document, ranging from systems architecture for coordinating a lengthy and complicated automated process to UX features built on other complex features solely for the sake of greater end-user productivity.
- Became considerably experienced with Frostbite scripting.
- Wrote extensive user, developer, and QA documention for the tool.
- Learned how to structure and write code that is better for passing on to new owners indefinitely.