New interview for AT blog. With Alan Wolfe, a senior graphics developer technology engineer at NVIDIA. This developer has great experience in this industry, working previously in other like the famous Blizzard Entertainment, Midway Games, Monolith, etc.
He also has interesting personal projects that you can see in his personal blog. But if you want to know more about him, I invite you to continue reading the full interview…
Architecnología: Who is Alan Wolfe? (Describe yourself, please)
Alan Wolfe: My name is Alan Wolfe and I’m a self taught gamedev / graphics programmer currently working at NVIDIA, previously working at Blizzard where i worked on starcraft 2, diablo 4, and some super secret things as well. I started game programming in mode 13h days (486 & 16 bit programming) and in more recent times have learned a lot of the coolest things I know from the demo sceners, shadertoy.com people, as well as the amazing game dev and graphics community on twitter.
I keep a technical blog of my own with over 200 posts at https://blog.demofox.org/. A main goal of the writing is to make a variety of topics more approachable to people. The most popular article recently is the «casual path tracing» articles which show you how to make photorealistic images while keeping the math very minimal.
I’m nearly 40 but have taken up skateboarding and bodysurfing in the last couple of years, and have done about 15 years of martial arts. Fun fact: On my 1st degree black belt test, I bare knuckle boxed a guy in front of Shaolin monks. It felt a bit like Mortal Kombat haha… I train more casually these days though.
I also have 2 children: a 3 year old daughter and a 6 year old son.
AT: When and how did you start being passionate about technology?
A.W.: Being a teenager in the 90s, I feel like I was born at just the right time to hop onto the modern technology train. All of my friends were into various parts of technology. I enjoyed writing and video games, so I saw programming as a way to make interactive stories. Funny thing, my career has been incredibly the opposite direction, where i’ve spent my time down in the bowels of the engine, or making gameplay systems, and almost none actually doing things you’d consider «making interactive stories».
AT: Do you have a reference? Someone who has inspired you?
A.W.: I do have a couple people who inspired me and helped me navigate my learning.
An uncle of mine «Uncle Chris» saw me programming in QBASIC and learning all I could, so hooked me up with a C++ compiler (The installer was like 20+ disks) «borland C/C++ for dos» and some books to start me off. That really set me on the right path, and everything else that has come since would not have happened without that help. Thanks Uncle Chris!
Another person who helped me a lot was my AP computer science teacher in high school «Mr. Forester» at Dana Hills High School in Dana Point CA. He saw me and another person were really ahead of the class so made a «AP CS second year» class within that class just for us and taught us a whole lot of really cool things. That was where I learned abstract data types and related algorithms, which is supremely fundamental if you are going to be working in a field where you craft your own algorithms and performance really matters. I have no degree, and quasi dropped out of HS (more true than not) so this was amazingly valuable.
Lastly – my big inspiration, and idol to this day still, is John Carmack. He invented the genre of first person shooters, and invented a ton of technology to make it possible. He pushed graphics and game development far beyond where it was and laid the ground work for where we are at now with games like call of duty, battlefield, fortnite and others. He has commented on a few things I’ve posted on twitter, which has always been a «Senpai noticed me!» moment/.
AT: Currently you are Senior Graphics Developer Technology Engineer. What is your specific task within NVIDIA?
A.W.: I’ve been at NVIDIA for just over half a year. It’s a great place to work with a lot of different things going on ranging from robotics to machine learning to real time graphics.
So far I’ve spent most of my time working on the RTXGI plugin for the unreal engine, which is an algorithm that uses raytracing to make «global illumination» or bounce lighting. Usually surfaces in games are primarily lit by direct lighting… light that comes directly from a light source such as a lamp or the sun. If you wanted to have light bounce off a red wall onto a floor, so that there was a little bit of red light on the ground, that is a lot more challenging. RTXGI allows that but requires raytracing to function.
I gave a link to my blog on path tracing earlier on. Path tracing gives you global illumination «for free» as well as other effects such as ambient occlusion, but the problem is that it is too slow to run in real time currently (that may change in the future). Realism is big in modern games, and path tracing is the «ground truth» we are all shooting for. RTXGI helps people get closer to that ground truth while being fast enough for real time use – like in video games.
AT: You have also worked for Warner Bros., Blizzard Entertainment, etc., and have about 20 years of experience in the industry. What have been the biggest challenges you have faced as a developer?
A.W.: To be honest, the non technical things have been the most challenging. You think that going into a technical field, and dealing with technical problems, that things will be measurable and based on objective data. That just isn’t the case! As long as humans involved, the term «objective» is a bit of an unreachable ideal.
An important thing to do as a programmer, besides learning technical subject, is to practice communication and persuasion.
AT: How do you see the gaming world in the near future? What do you think will be the next big breakthrough in the gaming industry?
A.W.: The next round of consoles ought to be interesting. It feels like VR is dying off and raytracing is growing. We’ll have to see how true that is.
For the next little bit of time, I believe games will improve as people find new ways to use raytracing hardware, and new research is done for new sampling techniques and similar. Beyond that, I feel like realism in video games will peak and we’ll see some real interesting post-realism rendering, often built on top of the techniques we used for realism.
For instance, if you saw «Into the Spiderverse» that movie was highly stylized but was based on very realistic path traced rendering. I think that’ll be just the beginning, and people will find some real interesting ways to render non realistically that still look very good.
AT: There are a lot of projects about AR/VR that were intended to revolutionize the gaming world, but the reality is that most gamers prefer a screen and a controller… Do you think that at some point they will surpass this «old school» or will they simply continue to be an alternative?
A.W.: I really hope that VR and AR find a lasting home in our world. VR is just so incredibly immersive, and AR allows us not only to play games virtually in the space around us, it also allows us to gain abilities we wouldn’t otherwise have, like knowing where to put our hand to catch a ball coming at us, or being able to navigate by the stars at a glance.
Whether that happens…. who can say. It feels like an eventuality whos time may not yet have come.
AT: Many developers strive to create very realistic games, with impressive graphics… but sometimes you see games like Minecraft that are brutally successful, or retro videogames, the classics still have legions of fans. In your opinion, What are the keys for a successful game?
A.W.: When I first joined Blizzard and joined the Starcraft 2 team, I believed that great technology is what made great games. As time wore on, I realized that just isn’t true.
I’ve worked at 7 different game studios and Blizzard was by far the most successful, and made the games I enjoyed the most.
The secret sauce there was caring about the end product believe it or not! Everyone at that company from top to bottom cared firstly about making a great game. No matter what other differences of opinion people had, everyone was aligned on making great games.
Blizzard games haven’t always had the greatest graphics and they aren’t known for being the ones to push technology forward, but they do make great games.
If your goals are to try and make something under a tight time constraint, or trying to dress up a slot machine to look like a game, or trying to cater to some transient cultural fad, players can see through that.
If you care about your game, other people will too.
AT: I see TDPs/TGPs getting higher and higher, and it’s getting harder to keep lowering the nodes in the foundries. On top of that, there are certain games that are horribly optimized. As a programmer, Do you think that enough is being done also from the side of the software that demands more and more resources? Is enough time and resources being invested in optimizing the code?
A.W.: The thing about optimization is you optimize as much as you need, and no more.
Once the game runs fast enough, there is no reason for you to spend more time, effort and money trying to squeeze more out of it. That is time you could spend adding more to the game or fixing other bugs.
This right here is basically why we could run a word processor on a 486 that had 4MB of RAM, and now it takes 4GB of ram on a modern machine.
Things tend to grow to consume the resources they are given. This is true of software development, but also true of life itself.
AT: Why C++ is the king for the development of video games?
A.W.: For me, C++ is the most expressive language there is.
Someone can sit down to a C++ compiler and write a real time music synthesizer, database software, an encrypted peer to peer networking chat client, or a 3d rendered video game.
Many other languages are tailored towards specific purposes. Very few have the ability to go as broad as C++.
Rust and D are certainly contenders, but they have to overcome the resistance to adoption. For instance, consoles have compilers made by the companies that make the consoles. If those compilers only support C++, nobody is going to switch away if they might want to ship their game on those consoles.
AT: There are open source tools and APIs for graphic development. But Why do you think the FOSS philosophy hasnt had the same reception in the world of games? There aren’t too many open titles … Is it just a matter of business or is there something else?
A.W.: The lack of FOSS in game development is definitely due to business concerns.
People are very secretive in games, they are very competitive, and they are also very afraid of legal confrontations.
If a game company puts out a library that helped them develop a game, that is giving away leverage to a competitor.
Furthermore, if someone uses that library and there is a bug that causes a game to be broken when it launches, the company may be open to being sued.
Lastly, the library itself may have secret information in it, or may show people how to extract secret information from a game – like leaking future content by knowing the server where the future content will be downloaded from.
It’s a lot of risk for companies with no reward.
Some people do release open sourced software despite this, and they get my respect for doing so.
Another way the idea of FOSS manifests though is through user generated content such as in the game «Dreams». We also saw this years back with warcraft 3, basically birthing both the tower defense genre as well as MOBAs.
I’d like to see more games doing user generated content.
The unfortunate thing is that UGC adds a pretty large burden to development. You don’t have to only test what your map makers have made, you also have to test everything that is possible.
Also, when fixing bugs or adding features, you have to make sure you don’t break any existing UGC.
It’s quite a challenge.
AT: Why do you think that cloud gaming is not having the expected success?
A.W.: Cloud gaming is an interesting idea. I think it definitely will take off at some point… what is not to love about being able to run high end games for a low price?
Two things need to be overcome though… the first is input latency. It’s difficult to imagine myself playing quake via cloud gaming.
The second is the business model. There are a lot of different parties pulling and pushing in their prefered ways and I think it will take some time before a business model is found that makes all parties happy.
AT: I finish with a question about security. Some time ago I interviewed a security auditor and asked him if they were forgetting the hardware part. He said no, shortly after the interview the cases of Meltdown, Spectre, etc., appeared. Hahaha I hope the same thing doesn’t happen now with this question… The question is: Do you think games are sufficiently audited? I see some CVE entries published that are related to games, but they aren’t very abundant…
A.W.: Much like optimization, security has a concept of being «good enough» as opposed to perfect, or even necessarily objectively good.
The big trick with security is to not be the low hanging fruit.
Imagine yourself as an apple on a tree. A hacker is a hungry passer by. If you are the lowest hanging apple on the tree, you are probably going to get picked!
If you move yourself up the tree (apply some security measures that your competition isn’t), you aren’t going to be the apple that gets picked.
Knowing how much you have to do to be secure enough is a challenge though.
Luckily, modern games can be patched pretty quickly client side usually, or often have server side components that can be changed more rapidly since the game companies own the servers.
The above security talk is about security of the game itself – like hacking to get loot, or bots.
There is another aspect of security though and that’s whether or not you running my game are going to get a virus from another player by running it.
Games have had a pretty good track record at that due to communicating between clients or servers with very specific focused messages. It’s possible you could have a buffer overrun or similar, but it’s not likely to have a desired outcome. At best you might crash a server, or crash a player’s game client. Games have had a pretty good track record about this.
Going back to the secrecy though, the biggest security concern I’ve seen at game companies is in preventing the leak of games coming out, or future content for those games.
Games are doing decently there because that is their source of revenue.
When i was growing up, very few people were making video games for a living and it sounded weird if you said that is what you wanted to do.
These days, it is very much a real career with livable wages, and the concept of «crunch» or unpaid overtime seems to be starting to lessen as the industry grows – in 8 years at blizzard i worked 2 late nights for instance, while a decade earlier, I once worked 60-80 hour weeks for 9 months straight.
I’m very glad I chose to do game development, and later graphics programming specifically, and have found it to be very rewarding employment that never gets boring.
If game development is something you are interested in, don’t be afraid that you don’t belong or that you won’t be up to the challenge of the work.
The top requirement for being a successful game developer is wanting to do it. Techniques and tools can be learned, but passion is a lot more difficult to acquire.
Thank you Alan!