Do you love games? Are you good at math? You might consider a career as a video game programmer. I had the honor of (virtually) meeting the amazing Corrinne Yu, who sheds some light on what it’s like to dream in algorithms.
Thank you for the congratulations of my awards. There are many fantastic engineers in our field. It is an honor to receive the recognition. GDC has been a useful resource for many game programmers to recognize each other’s contribution. I am glad GDC exists. There are more women pursuing game development and programming, inside Microsoft and outside in other studios, than ever before. It is a wonderful thing to have such diverse backgrounds in game developers, and such broad representation in programming and STEM (science, technology, engineering, mathematics) fields. What is fascinating about women in programming is that we tend to be outliers.
Thank you for the compliment. What I like about STEM, especially mathematics, is that it is intriguing to solve how complex pieces fit together into a beautiful simple way. What I like about software engineering is how much creative power we have in creating complete worlds or self-consistent systems. It is like playing Minecraft every day as a job, except our flexibility is greater, and our creations becomes useful devices that runs in the physical world. What I like about game engine programming is that it is one of the most complete and universal simulation system we get to create as a sole engineer or as a small strike team. As a comparison, in aerospace for example, we own with our team a very important piece of simulation of one aspect of the spacecraft’s construction or its trajectory. With game engine programming, we program a completely self-consistent world with photons traversing through game materials in just the right way, with faces and bodies acting and reacting just so, and every extra bit of engineering effort we put forth, we make the gaming immersion just this much deeper and richer for the player playing the game. It is a very mentally fulfilling sort of career.
What the data structures are, how the engine fetches data, computes, and renders, can matter just as much as what it renders, for example, lighting features. How the engine renders impact whether your game is forced to be enclosed corridors or whether you can deathmatch in a wide open world. It impacts whether your encounter is with only four co-op players at a time, or whether you co-op with a large number of players. It affects how many enemies you can fight at one time, and how dumb or smart, for example, how often are they left to think to fight against you. It impacts how dumb or smart your enemies can based on how much or how little of the world your enemy can consider and digest from what they can see and process. It impacts how strategically fair your enemies can be with whether occluded information is occluded from their attack plans. It is often possible to engineer a closed indoor corridor game with a lot of features, but this same engine would not be able to provide you the co-op or deathmatch experience in a wide open world. Not only does an engine affect game play, an engine’s implementation implies directly the different types of play possible by early engineering decisions pre-production.
I met Kenneth when he was recruited for his work on the first Team Fortress, and his artwork on Doom Hacx, to work for John Romero at ION Storm. He was known for his art texture work, or skin work, back in the day. I was at that time Director of Advanced Technology at ION Storm. We met around the early Quake and Quake 2 days as game developers who worked together. He has been Art Director at Quake 3 Arena, Doom 3, Rage, and Doom 4, and worked at id software for more than a dozen years. I am glad to be working with him and his art direction again.
I spend a lot of time writing source code. Most of my work is deeply mathematical, so I spend a lot of pencils down time on graph paper working out all my equations before I start programming implementations. I am not a big Mathematica brute force kind of girl. Call me a Luddite, there is more heft to pencils down with derivatives, curls, triple integrals, basis, super long algebraic expressions, and arrays of floating point numbers hand calculated to walk through my symbolic equations on aligned columns of graph paper, watching the cogs and levers work themselves out like magic. Most of my source code is pre-optimized in equations on graph paper before it gets to code. I often program several versions even when I know one version is better looking and runs faster than another, to enjoy the satisfaction of empiricism. Working inside a huge software company like Microsoft with its technology fingers in many pies, I pack up and pass out and share my own source code to external Microsoft departments for them to use or to optimize performance for their technologies. A lot of what I invent gets very esoteric, or “math-y”, so I spend time walking through and explaining to other developers how my algorithms work, often more than once, to all of those who are stakeholders in how it all works. Microsoft is a 800 pound gorilla in many technology sectors, and I am sometimes asked from those outside of my department to extrapolate what I invented with how other technologies can apply to it, and what implications we have with each other. Being a software engineer at our levels inside Microsoft is having a big stake and a big impact in so many technologies inside and outside of gaming. It is a very intellectually fulfilling role to play.
Thank you. Broad connectivity will make some nice strides in gaming and entertainment technologies. The final walls of interactivity can come down in the next few years. We can expect better multiplayer game experience than ever before, with deeper and more meaningful ways players can play with and play against each other. Visual and physical simulation should get quite mature in this timeframe. With better memory management I would see fine lines blur between what is visual, what is simulation, and what is physical, or physics or gameplay simulation. Ironically, I expect the next challenge is not so much how many things we can do, but a matter of managing lag and latency as the systems we develop becomes exponentially complex and interdependent on each other. It is prudent for algorithm inventors to start planning along those lines.
Thank you for asking my favorite topic: science fiction. Being a programmer and a game software engineer, I like many Philip K. Dick stories as they are philosophically prescient of where virtual reality may lead. One of my favorite of his stories is Ubik. I deeply want to discuss what I love about this story, but it is such a well written story, to discuss it is to speak of its spoilers, so all I would say is if you have not read it yet, please read it for yourself. I thought the first Dune novel constructed one of the richest universe and fascinating alien races in the science fiction world. If we can give the Halo player the immersion in a sci fi world as rich as Dune, it would be pretty exciting effect. Bladerunner is a beautifully made film. What I love about it is not only does it tell most of its story from the visuals and subtexts, the subtext stories actually contradict the story on the surface that is narrated and acted.
I am one of those who like Halo campaign more than Halo multiplayer. For first person shooters, there are many games, Halo included, that provides a deeply satisfying fragging experience. Yet among almost most shooters still being shipped, Halo is the only one whose universe provides as much hard science fiction possibility. I also love games with RPG twists like Borderlands, as I enjoy games that give me a gameplay narrative unique to me and not any other players. This also goes without saying that I love deeply RPG games like Mass Effect. For international games, I enjoy Metal Gear Solid boss fights. It is obvious the developers put in a great deal of effort into the bosses and the experience of killing the bosses at every encounter. I also love obscure fighter games and played the heck out of the original Battle Arena Toshinden, The King of Fighters, and even more obscure fighter games that too few people had heard of. I love the tough and beautiful challenge of side scroller Einhander. I enjoyed the strategizing in Civilization. I am more attracted to quality, than I am a genre loyalist. I see quality in any genre of game. I don’t have too much of a blind spot against games that are not first person shooters.
Game programming is a wonderful career that bridges the gap of advance hardware design, completion-ist world simulation, exploration of esoteric math, and many intellectually rewarding fields. It is a wide open field that has a place for the geekiest math nerds, to gameplay programmers who wants to know enough to call some functions to move the warthog without having to solve partial differential equations. If you are delighted by studying Clifford algebra or working through thermodynamics proofs, there is a place for you. If you less into post-doctorate math studies, but you love to hand optimizing GPU shaders or vectorized arithmetic, there is also a place for you. If you love to tweak the AI weapon type or the vehicle velocity response just so, but not into optimization, or into theoretical math, there is also a place for you. There is more than one way into a career in game programming, and it may be easier to get in than you think. I welcome all of you with open arms. I look forward to supporting you, your careers, and the games you program for us in the future.