Background
I helped developers to build future entries in the Call of Duty franchise during my time at Infinity Ward. The internship lasted twelve weeks during the Summer of 2024. During that time I developed a new tool while learning various technologies to deliver improved workflows for game designers. This page will explain in detail what I did, the techniques used to do it, who I worked with, and why it was done.
What
Activision embeds interns within teams working towards measurable goals. I assumed several responsibilities during my time on the tools team. Starting out, to familiarize myself with the codebase, I added usability improvements like a keyboard shortcut to isolate log levels and migrated some buttons to a new backend call. After two weeks, given the choice between two larger features to focus the rest of my time on, I chose the one I saw as more challenging and interesting. It involved a new interface for selecting and running operations on certain collections of level content. Before leaving, I presented the results of my work in a digital symposium to the rest of the company. Activision also hosted various speakers and community events I partook in, but the above constitutes my core responsibilities.
How
I used my own problem solving and help from the vast expertise of Infinity Ward’s developers to complete my tool. Studio leadership had a vision for this tool before I arrived, while the details of implementation were up to me. I used Qt for Python and a proprietary Python library, which added additional functionality to Qt, to develop the interface for my tool. I developed a new subclass of tree view-model, and with help from a senior programmer adapted our proprietary library to support it. The tree view had to be synced with a second 2D graphic view, which I achieved with event driven architecture. Multithreading operations were used to asynchronously load data, which kept the application responsive. I also optimized calls made to the game engine, which required editing C++ engine code. More problems than I can list here needed to be solved, but none were solved entirely in isolation.
Who
I worked with the talented developers across Infinity to learn about the broader industry functions while implementing my tool. I watched people in departments outside the tools office use my tool for their first time to acquire feedback. Then discussed my observations with the tool engineering and tools UX leads, informing the tool’s design evolution. When I delved into unfamiliar code, like our proprietary library or the engine C++, I reached out to senior authors from departments like pipeline and engine development, who often worked at entirely different studios. All my code was subject to code reviews, receiving comments on optimization, bugs, and style from the rest of the tools team. I even provided my own input on other tools developers’ code. While the final implementation of my tool was dependent on my technical problem solving, it would not have been nearly as polished if I had not exercised my soft skills to gain insight from the wider studio.

Why
The goal of the internship was for me to learn while delivering something of value to the studio. Interns all had projects pertinent to actually shipping new titles, but growth and career development were just as big a focus. The tool I implemented focused on reducing iteration times for designers working on future Call of Duty titles. My work streamlined an interface making it easier to parse information and optimized some choke points. Most importantly, it made a new workflow for level development that is part of a broader studio initiative more accessible and fun. In terms of my own growth, I gained technical skills in view-model programming, multithreaded applications, perforce source control, and communication between multiple pieces of software. I also learned how to work with leadership and users. Overall my goals for the internship were well met, leaving myself and the team satisfied with the results.
In Conclusion
In succinct terms, that is the what, how, who, and why of my tools internship. Hopefully this gave you more insight into the nature of my work, the technologies, and who I made with and for. Feel free to reach out if you have further questions.