“I work on Google Earth and one of my specialties is computer graphics,” says Software Engineer Malik Coates. Working with programming languages like C++ and Java, Coates and his colleagues help users explore the Earth, Milky Way Galaxy, and beyond. Sounds like fun? So do Coates’s previous jobs at Dreamworks Animation and at Reactrix Systems, Inc., where he helped develop games.
Games first attracted Malik to computers and software engineering. He and his brothers played Dungeons and Dragons at home. He also played with friends at his elementary school in Baltimore.
“My first interest was in building little computers and in writing games just for self-entertainment.” Working on the one personal computer at his middle school in Baltimore, “I don’t remember how I got the idea to program a game on it.” Perhaps Malik was inspired by a class in which he learned how to write “a little game. And I took that and ran with it.”
“After that, I didn’t have a personal computer. I just had calculators. You could program BASIC [a programming language designed for beginners and first taught in schools in the 1970s] on calculators and I did that, just to write programs to help me out mathematically. Then I did have a personal computer and I started writing games on it.”
Coates went on to study computer and systems engineering at Rensselaer Polytechnic Institute, in upstate New York. “In college, what I liked about programming was that you could make a change and see a result quickly. There weren’t many other ways to build something completely from scratch.”
Gaming continued to inspire Coates in college. He played online, multi-user games like LPMud (“back then, the equivalent of the World of Warcraft”). It was “completely text-based. The players could create their own little areas with monsters and you’d have characters that go through levels and improve in skill. All of this stuff is inspired by the game Dungeons and Dragons.” Players with computer science skills wanted to put the experience of playing that game “online and make it so that users could create their own content,” allowing many people to “interact on the internet and play it.”
Coates’s experience working on games helps him create realistic user experiences on Google Earth. “One of my specialties is computer graphics. Many games aim for 60 frames per second.” To make a scene look realistic, you have to show viewers “the entire scene 60 times per second so that it looks smooth” to the human eye. “You want to make games look as smooth as possible and not have jerks or pauses or anything like that. Visually, people really notice it when a game is slow. You aim for 60 frames per second, but some go much faster.”
Showing users 60 frames per second “means that each frame needs to be drawn in 16.666 milliseconds [thousandths of a second]…. To fit as much work as possible into those 16.666 milliseconds, we examine each of the tasks that the computer is working on in detail. We use both real world testing and estimates based on math.”
At Dreamworks, Coates helped develop “software that was used to render the movies. I basically worked on the user interface that the artist could use to render out the movie. There’s an enormous amount of data produced” for every single frame of an animated film. Each frame “would be divided out into different layers to create the image that you see. The layers might have sizes in the gigabytes.”
The rendering tool for light that Coates worked on “was used extensively in How to Train Your Dragon 2.” “The goal,” he explains, was to “let artists control the look, the appearance of each frame of the movie and the movie as a whole,” so that what the audience sees looks “like the artist’s conception of what it should look like.” Each artist imagines how his or her animated story should appear. Thinking this up and rendering it is “somewhere between drawing a picture and [showing] what would happen in the real world. Think of realism as a slider: the artist can make it extremely realistic or extremely cartoony.”
These days, Coates focuses more on the realistic end of software engineering. Google Earth displays imagery from satellites as they pass over different parts of this planet. “We get data from many different sources, but the primary one is satellite,” sometimes updated with other available images. Using these images, Coates and his colleagues create tours, which “let you define a fly path.” “The camera will fly around in a particular path and then it will highlight an area and show you people’s photographs” and some “fun facts” about it.
Math plays a large role in Coates’s work. He calculates the sizes of classes (sets of instructions and data organized around one idea), measures times and frame rates, and evaluates the complexity of algorithms. Algorithms used in a program might slow it down in ways one might measure with linear, quadratic, or logarithmic functions. “Each thing that a program is expected to do costs some amount of time.” That cost in time can be constant or have a linear, quadratic, or logarithmic relationship with the number of objects processed.
Interested in developing great computer games and apps for our fast-moving world? Work your math homework into your gaming schedule after school. Ploughing your way through algebra, geometry, and beyond may mean helping create games, animated movies, and apps that help people explore the universe.