What's a tools engineer?

Jul 21, 2021 - Destiny Dev Team

This month's tech blog post is a bit different from our last few. Instead of describing a cool piece of tech, I'm going to tell you what it's like to be a certain kind of engineer at Bungie. This is aimed at new engineers, students still in school (or recent graduates just coming out of it), and really anyone new to this industry looking around to see what options are available. With that in mind, I'll be talking about tools engineers, what they do, and why you might want to be one. I'm going to focus on the role as it plays out here at Bungie, but most of the information should apply to other game studios as well.

Just so that we're all on the same page, I'll start with something that may be obvious. What is a "tool" exactly? When I talk about being a "tools" engineer and working on "tools", I'm referring to any application that's used to develop the game and isn't the game itself. This could be anything from the editors you might be familiar with from engines like Unreal or Unity, to scripts that help you dig into why something isn't working, to applications used to build and deploy new versions of the game as it's being worked on.

With that out of the way, let's start by looking back at how tools have evolved in the industry. In the early days of game development, teams didn't have dedicated tools engineers, let alone dedicated tools. Often the person making the gameplay engine would be the same one making the art and designing the levels. Or they'd be working closely enough with the people that did those things that they didn't need a separate editor for them. As games became more complex, working directly in code or editing text files became a real bottleneck, so primitive level editors were developed. At first these editors allowed artists and designers to do simple things like draw boxes for walls, and place other boxes for the player, enemies, and other game elements. As time went on, the editors became more sophisticated. As games moved into 3D, editors did too. Some would even let developers see the game as the player would while they worked on it. The reason these tools were created, and kept improving, was that they made working on the game easier with each iteration.

With more specialized tools came the need to hire people who specialized in creating and maintaining them. Enter the tools engineer. Who are they and what do they do exactly? As I talked to my fellow engineers for this post, a few things came up over and over again:

Positive Feedback

The great feedback you get from your team members and people using your tools came up with every single tools engineer I talked to for this post. Since you're working closely with the users of your tools, there's a straight line between them and you. You become directly responsible for improving their workflows, and they often love you for it. Of course, you're not a one-person team tackling problems all on your own, especially at a large studio like Bungie. You're surrounded by other programmers, team leads, testers, producers, and others helping you to track down issues and prioritize work. But you often develop close relationships with content creators, like artists and designers, as that cycle of "find problem - fix problem" repeats over time, and there's nothing like getting a high five (virtual or otherwise) from people you know and respect to give you the warm fuzzies and make you feel like you're out there making the world a little better.

It's also fun to see how the sausage is made, so to speak. Since you're working so closely with the super-talented people putting the game together, you have a front row seat to the circus that is game development. Once in a while, I’ll walk around the studio (or used to, at least, and hope to again soon) to watch people using the tools I’ve created. I’m always blown away by what I see coming to life on their screens.

Variety

As a tools engineer, you work on all the different applications that go into making the game, and there are a lot of them. You get to work closely with the people using those applications to make sure their workflows are as smooth as possible. There are always new challenges to tackle, new features needed, something becomes slow that used to be fast, some user interface isn't as easy to use as it should be, and so on. One day you're working on perf improvements, the next you're designing or updating the UI. There's no real average day for a tools engineer and you’re often able to manage your workload based on your own interests. You could find yourself iterating steadily on the same thing for a while or find that your work changes wildly over the course of a release.

For example, it's not uncommon to do a lot of planning and talking with content creators at the beginning of a release cycle, doing things like gathering feedback on existing workflows and coming up with mockups of possible new features to improve them. Then as the release progresses you go heads down on the work of implementing the things you planned. As you get closer to ship, you’ll often switch to pure bug fix mode.

Over time, depending on what your interests are, you might also want to move on to a completely different team at some point. Over my time here at Bungie I’ve created or done major work on tools for a wide variety of people including world artists, gear artists, activity designers, testers, as well as some of our more global tools used by almost everyone. If you like being challenged on a number of different fronts, tools work may be right up your alley.

Ownership

Our tools ecosystem is vast and it's not hard to find a bit of tech to carve off and claim as your own, even when you're just starting out. In fact, the most common way for new engineers to ramp up on our code base is for them to take over some feature and start building up expertise in that area while learning from any existing experts.

By "ownership" I mean digging deep into a system, identifying ways to make it cleaner and more maintainable, working closely with users on upgrades, and being unafraid to propose radical changes (if that's what needed). Your ownership continues to grow as you become the vision holder. If the previous owner is still around, they're often excited to hand it off to you. At Bungie, we prioritize trusting and empowering individuals over maintaining a chain of command. You'll never be told that something is off limits because someone else wrote it and doesn't want it changed. We care deeply about the experience of our artists, designers, writers, testers, and everyone else that use our tools.

Another example of ownership opportunity that isn't even related to code is when I helped a handful of folks that are especially passionate about user experience (UX) to form a group called Tools UX. We now work to evangelize the importance of usability in our tools and help others to improve it.

Tools vs. gameplay

When looking at job descriptions, you might see a studio looking for both "tools" engineers and "gameplay" engineers. Are they really that different? Why don't they just post job openings for "engineers"? There's a lot of overlap for sure. But I'd say the main difference lies in focus. Gameplay engineers will mainly focus on the features within the game, while tools engineers will mostly focus on the needs of the end users of their tools. Sometimes you need to put on your detective hat and pull information out of users who might not know exactly what they want in order to design a better workflow for them. For example, in creating our content merging tool, I worked closely with our user research designer to find out what people expected from such a tool so that it could be made as easy to use as possible.

There's also the difference of programming language. On Destiny, C++ is used for the engine and C# for the tools, but the same high coding standards apply to both - as well as the same general architectural and programming skills. That said, there might be times as a tools engineer when you need to work in engine code, and vice versa.

Developing Skills

If you're an engineer looking for a fun career track in games, and tools work sounds exciting, you might wonder what kinds of skills are important to build? To start with, there are the high coding standards I mentioned. But beyond that, you should be someone interested in solving the types of problems that come when trying to make workflows better. That includes having a knack for communicating with non-technical people in a way that makes more technical concepts clear to them. It also means having a customer service attitude, where your first instinct is to have a conversation about what's going on so you can figure out a way to make it better. If you enjoy designing intuitive interfaces for your tools, so much the better.

Extras

If you’re curious about details of the tools used to make Destiny itself, the line count of our main tools solution is 1,903,542, with one generated file that represents all the game structures used in our tools taking up 292,294 of those lines. There are 8,969 *.cs and 1,085 *.xaml files. Of course, those aren’t the total lines ever written. I’ve personally deleted well more than 100,000 lines as part of various cleanup efforts. It also doesn’t cover other solutions that contain tools code, or games besides Destiny.

To put pictures to words, here are screenshots of just some of the editors created with that code...





Wrap up

Working on tools is a great option if you're looking to get into game development. You get to work on new and interesting problems all the time, you're always learning new things about the different types of content that goes into the game, and you get that amazing feeling of helping those around you create the things they came here to create. I’ve been working on tools at Bungie for over a decade now and even though the usual issues around tech debt and wishing you had more time to polish things haven’t gone away, I’m still getting the same joy from making people’s work lives better and still finding interesting challenges to work on.

- James Haywood
This site uses cookies to provide you with the best possible user experience. By clicking 'Accept', you agree to the policies documented at Cookie Policy and Privacy Policy.