Programming Throwdown - Inside Video Game Programming

Episode Date: August 11, 2015

This show covers game development at a AAA company, featuring Dave Smith from Naughty Dog Inc. and Florent Devillechabrol from Ubisoft. Jason: The Mythical Man Month http://amzn.to/1DGOwbW ; ...Patrick: Armada http://amzn.to/1L4j2Pj ★ Support this podcast on Patreon ★

Transcript
Discussion (0)
Starting point is 00:00:00 Hosting provided by Hostornado. They offer website hosting packages, dedicated servers, and VPS solutions. HostT.net. Programming Throwdown, Episode 45. Inside Video Game Programming. Take it away, Jason. Hey, everyone. I upgraded to Windows 10 on my Windows machine.
Starting point is 00:00:29 It's pretty cool. It's a big upgrade. I skipped, I had seven, but I skipped, I guess it's eight. Yep. And everyone skipped nine. Everyone skipped nine because no major company wrote code that could handle Windows 9 without accidentally calling it Windows 98. So they skipped that one, which was smart, and went straight to Windows 10, and I got it. It's pretty cool. But it's not a beta anymore, right? It's actually like out, out?
Starting point is 00:01:00 Yeah, it's totally out. The only thing that was was hard was um my sound blaster card sound blaster said they weren't gonna create drivers for Windows 10 until October and so but then it turns out somebody created some third-party driver which is probably like leeching my credit card another value I was I say it's probably better but it's probably mining bitcoins yeah it's uh yeah i'm just kidding it's probably it's actually when i ran the setup it is the same i think he just somehow monkey patched the uh the the existing driver to fit windows 10 because the install shield is exactly the same and everything
Starting point is 00:01:41 uh yeah yeah um yeah yeah yeah i mean it's something about my social and credit card or something but other than that it worked fine i attempted to do it and i got this error it said something happened and then the subtext something happened and then that's it yep and you could close so were you in like a limbo state now like were you your machine no no it was like you know you're supposed to i was supposed to create media for it or whatever uh and so like i i have a feeling that you know you're supposed to wait for your turn and it's not been my turn yet and so but there was like people said like oh you can just go to the download tool and so i just downloaded the download tool and i i think maybe it knows it's not my turn i'm not sure i didn't look into it it. I was just going to try it and see if it worked, and it didn't.
Starting point is 00:02:26 And so then I gave up and figured I'd try it later. I got you. One thing that helped is I had the developer preview, and I was running it in a virtual box, and I was kind of seeing what it was like. And anyone who had the developer preview was had like a priority queue so so on the very first day i was able to get in i didn't i mean i didn't plan on that it's just kind of luck yeah that's cool um yeah yeah so it's pretty cool so did you did you install from
Starting point is 00:02:56 scratch or did you just upgrade i installed from scratch because part of it was um i i'd upgraded from like 2000 to xp to 7 on the same hard drive whoa i know it's this ancient 5400 rpm uh you know magnetic hard drive and it's like 100 gigabytes or something something like that 100 or 200 is like it's uber slow and uh i just i know you can migrate to ssd like migrate your windows but i thought you know it's been so long and so patched together that i just wiped it and started over wow um yeah it's actually it was not bad it's quite like liberating to not have just an incredibly cluttered uh you know programs menu and all of that yeah every time i have to clean install i always there's always something missing that takes me forever to remember how i got it installed last time like the non-obvious stuff right like oh here's this program but how did i do that oh
Starting point is 00:03:56 there's this plug-in where's that plug-in and then and it just turns into a mess right it's right because your system's just not set up the way you it used to be set up anymore yeah i mean it's gotten a lot easier now because i do so much in the browser and and you have like whether you're using chrome or firefox it syncs and so all of my chrome extensions just kind of magically showed up and everything yeah um i guess my problem is i use my desktop for exclusively things i can't do in the browser typically. Because if I can do it in the browser, I just do it from my iPad or my phone. That's true. That's a good point.
Starting point is 00:04:34 For me, it's basically just Steam. And, oh, one thing about this that was kind of cool. I pointed Steam to where Steam was installed when I was on Windows 7. And I just told Steam to install there. And it detected that. And it said, hey, I see you're installing on top of Steam. So I'm going to figure out what games you've installed and get your OS sort of up to speed with your file system. And it kind of reconciled all of that.
Starting point is 00:04:59 It was really cool. And saved them a bunch of bandwidth. Yeah, that's right. Yeah, they had a huge incentive to do that's right yeah they huge incentive to do that so uh yeah so that's windows 10 apparently there's bugs um there's this ars technica article talking about um some bugs i haven't hit any of them but but i've literally just used steam oh and audacity to record the show are we recording on windows 10 right now uh not now but uh but i was recording on windows 10 a little earlier so okay uh yeah it worked very good um yeah so that's uh that's
Starting point is 00:05:36 windows 10 another piece of news that's kind of interesting is uh you know there's a lot of this where sort of you you might work at a place and there's a uh you know like a as we're going to talk to some video game professionals later there's you know they i'm sure they have you know a graphics team and uh uh like a graphics engine team artist team maybe they have like a analytics team that's looking at how many people are using we'll have to ask them we haven't said that yet oh stay tuned we have an awesome interview that we're gonna do here in a few minutes that's right that's right well i hope it'll be awesome yeah and so maybe they have like a analytics team that's that's looking at how many people are hitting their website things like that um where i work there's the same thing there's a bunch of different teams. And they all sort of have their own hardware, like their own resources, their own cluster of machines that they use to go off and do work.
Starting point is 00:06:35 It's not very efficient. I mean, if one team isn't using the cluster, their cluster, and the other team needs to do something really important they should be able to use that other team's cluster without like having to ask for permission and things like that that kind of takes forever right so um google's had this thing for a while called borg named after the the star trek um thing but they uh um they recently open sourced I don't think they open sourced the Borg itself like what they have but they made a similar version that like leveraged a lot of that
Starting point is 00:07:11 maybe it's like Borg version 2 or something and they open sourced that and it's called Kubernetes we'll give you a link to it in the show notes but it's pretty cool you can set this up on all of your machines company-wide, and you can set up quotas and things like that
Starting point is 00:07:30 and say, okay, this team is guaranteed to have 50 machines, and this other team is guaranteed to have 50 machines. And so if you have a job that can take anywhere from 50 to 100 machines, it'll use all 100 as long as the other team isn't using it. And if the other team comes on, it'll start kicking your guys out and replacing it with that other team's because they have a quota, right? So it does all of that. It's pretty cool. And I'm pretty excited to try it out.
Starting point is 00:08:04 Yeah, this sounds like something I need for my home. I, you know, I run about 40 different computers in my basement and right. No, that's the one that, the one that powers the nuclear submarine that searches for dinosaurs. Is that one?
Starting point is 00:08:16 Has that one finished yet? That sounds awesome. Is that a book? I just made that up. Speaking of books, it's time for Book of the Show. Book of the Show. My Book of the Show is a relic, but it's quite entertaining. It's The Mythical Man Month.
Starting point is 00:08:38 And it's an old book. It's like, what, 1998, I think? 1995. And it's all about sort of project management, software engineering, and sort of how... I mean, he talks about a bunch of different things. I'll just say one thing. One piece of it is they talk about how one person can do a lot because that person can keep a lot in his mind and doesn't really have to document or collaborate and so they could just hold the state in their mind especially when they're doing like a prototype and as soon as you add you know a second or a third person it increases the overhead
Starting point is 00:09:15 and causes the productivity to go down and then you eventually like you make it up with you know economies of scale right and i guess at some point you keep going, then it breaks down again. And this thing kind of talks about just project management, how hard it is to estimate schedules and things like that. It's really quite interesting. I won't do it justice by trying to explain it myself. But if you're interested in how software companies get things done you know if you're a type person that's done a lot of side projects and they either kind of don't go anywhere they tend to linger and you kind of think to yourself man like how
Starting point is 00:09:54 like if you have to if you how can you tell someone a year from now there's going to be product x like like how is that possible and uh this sort of explains kind of breaks that down explains how to do that have you read this i think the first few times i saw this reference i always saw it said the mythical man moth and then i thought it was like a like a i don't know like a fiction book or whatever nice like you know loch ness monster the mythical man moth i don't know why but for like several years when i kept seeing it mentioned, I always thought that's what it said. Awesome. Mythical man moth.
Starting point is 00:10:30 Yeah. Month, man month. Yeah. Anyways, I have not read it. I hear that I should read it, I guess. Yeah. For people who don't know, the man month is basically a month's worth of one person's work. So in other words, you might have eight man months worth of
Starting point is 00:10:46 work but if you have eight people then it gets done in a month so that's sort of where the man in theory that's where the that's where the man month comes from yeah right because it says oh if you had you know 30 people working on it well i guess a man month isn't 30 days but yeah 30 people working on it you could finish it in a day yeah like it the calculus doesn't work that way in reality have you heard that saying uh like this baby's taking too long you know put nine women on it get it done get it conceived get it uh birthed in a month you can have nine babies in nine months with nine people but you can't make one baby in one month with nine people that's right and it's the same with software maybe not the same numbers but okay my book is a fiction
Starting point is 00:11:34 book armada by ernest klein you may remember him he's been a previous book of the month author he wrote ready player one which jason you Player One, yes? I thought it was amazing. Yep. Yeah, I was a super big fan. And I also really liked Ready Player One. Armada is also very good. I didn't like it as much as Ready Player One. To be fair, it's not a sequel.
Starting point is 00:11:57 It's a completely just another book. I'm actually glad it wasn't a sequel because I felt like Ready Player One was pretty conclusive. I wasn't really ready to sort of see that storyline continue nope nope it's just another story has nothing really to do i mean it's a similar style obviously same author but a completely different world and uh i find it instead of being themed of like 80s you know stuff it's more like science fiction and science like video games like science fiction video games instead of like 80s video games okay um so that's just more my cup of tea uh and so in some ways that made it like a more fun read for me but in some ways i think it hurt it a little
Starting point is 00:12:37 because uh he has lots of references and he would explain them like uh my buddy tells me use the force luke quoting my favorite line from star wars and it's like yeah we got it we know oh yeah that's but when i read it for 80s references i'm not as good and so like i needed it and it was okay but yeah now it's kind of like no i already know that um so i found that part a little bit greeting but well I know nothing about well not nothing but I know by nerd standards I know nothing about science fiction so so this will be good for me I think now when I say science fiction
Starting point is 00:13:14 this isn't like hard science fiction this is like Star Wars Star Trek even that yeah I'm very weak last I know the I don't know anything. Okay. Anyways, I definitely enjoyed it. It was a fun read. Towards the end, thankfully, it seemed like I didn't notice him saying it as much.
Starting point is 00:13:34 So it was easy. I didn't feel like I was getting bombarded. And I actually listened to this on Audible as I do lots of my reading because I I call it reading, but it's listening because I'm stuck in my car for a long commute each day and If you would like to get a book from audible they do help sponsor our podcast and you can go to
Starting point is 00:13:55 www.audibletrial.com programming throw down all one word all lowercase and You can get a free book for a month and then you can cancel it and you can keep the book um and i have a subscription for audible that i just pay for and i really enjoy it and i've canceled it in the past when i had too many books to read and you get to keep all those books uh and then when you pick it back up again you can get more awesome very cool so i like audible and if you have a commute it definitely helps the commute be a little less tedious yeah definitely a little us first a little less us first but then after you listen to us go i thought they probably when we publish this podcast they sit at their computer
Starting point is 00:14:36 and listen to it until it's done and then they go to work yeah i mean you can't you can't uh you know record like take notes on the book of the show if you're driving that's true but to be fair this will be posted on our website later right exactly cool uh okay so it's tool of the show tool of the show so that's almost my tool of the show so that's almost my tool the show is um so is i actually posted about this on the the uh actually i posted on my personal g plus uh but it's called photopia and it's a interactive fiction um and if you don't know what that is um it's basically um choose your own adventure yeah it's choose your own adventure but instead of a multiple choice at every step it's these two word imperative sentences and the state machine is much much larger so you know in other words you could put things like go north uh you know get torch um things like that open door exactly zork is a is an interactive fiction
Starting point is 00:15:47 and so um i generally hate interactive fiction because um the puzzles really frustrate me and because it's so open-ended like there's i mean any verb you can think of may be what you need to do to that torch to get to the next room. So you're like kick torch, drop torch. And it's just you end up like having to go and like read a tutorial or something like that. That's called cheating. Yeah, you end up having to cheat. But I love the idea of using the interactivity to delay the story and to sort of add a human element to the story. And I mean, that's basically what Final Fantasy does. Right.
Starting point is 00:16:35 I mean, Final Fantasy, I mean, in my opinion, is a movie that has sort of these game elements in between to kind of stitch everything together and like to kind of keep you excited right but there are real choices too that do influence the story yeah i mean that's true it's an oversimplification but um so this so this interactive fiction photopia there is not that much puzzle solving and there's also a a help built in you can just type help and you or maybe it's hint and you get a hint You can just type help, or maybe it's hint, and you get a hint. Can you just type give answer? Well, if you type hint, you get a pretty good hint. Okay, go end?
Starting point is 00:17:13 Go end. End game. The narrative is extremely compelling. Basically, it's temporally nonlinear. And so you start off kind of in the middle and it's called photopia because there's different colors representing the different actors in the scene uh whose perspective you're you're in and uh it actually gets a little more complicated than that with the colors but at any rate and so you're sort of like flow you know that
Starting point is 00:17:44 you're not flowing linearly through time because you're experiencing things just in very like you experience someone as a teenager and they experience their birth and it's just kind of like but but it all kind of stitches together and for me i kind of figured out all these disparate characters i figured it figured out sort of how it came together about 70 of the way through and it was just kind of mind blowing like all of a sudden it kind of hit me what was going on so definitely check that out you can get it
Starting point is 00:18:12 on there's a web version there's iOS Android it's all free which is pretty cool so check that out also Benz Magyar posted and he had another interactive fiction called Choice of Robots
Starting point is 00:18:28 this one's literally a choose your own adventure but some of the choices you make cause your stats to go up in different ways and that kind of limits or expands in other words the choices you can make later on so in other words
Starting point is 00:18:43 if you make a bunch of choices of type x it'll be harder to choose choices of type y and so it kind of like guides your character in a sense um but these are kind of fun they're usually pretty short and uh and uh short and sweet and photopia is definitely a must photopia is like the beatles of interactive fiction like what the beatles are to music so i mean everyone everyone will love this we'll love photopia so it's the uber of interactive fiction that's right that's right they're the uh yeah they're the unicorn the netflix yeah okay my kid my tool is not a tool but a game surprise like almost every week and And that is Don't Starve on iOS.
Starting point is 00:19:25 Is this good? I've seen this on Steam for PC. Yeah, so I guess it's been out for like computers. And I think there's even a version for the PSP, maybe PlayStation. I don't know if it's on the Xbox. But Don't Starve, it's kind of a roguelike, except that, you know, it's fully animated in a very uh specific style i guess it might or might not be your style but um you run around kind of a procedurally generated world in 2d and you collect
Starting point is 00:19:52 stuff and you try to craft things and you try to survive and like kind of everything goes against you your guy gets hungry and you need to make sure to provide him enough food not everything is nice to you in the world um and so i've been playing i've really enjoyed it um cool i i stopped playing it for a little while because i kind of got like frustrated like i did something i guess it was my fault but then like you know i ended up like dying at a part that i didn't think i should have died at and then i got kind of mad and so i've been playing it but i will go back to it um the game was just doing its part and being harsh, which is a little bit of a harsh game.
Starting point is 00:20:28 I think a lot of games baby us these days, and it's really hard to lose, and you just expect to be able to do whatever and not die. Your guy can get shot 50 times before he has to respawn. Yeah, I do think that a lot of games that have quick save and quick load, as soon as you introduce quick save, quick load, then you don't have to worry about replayability. You figure the person is never going to have to play the beginning of the game
Starting point is 00:20:55 more than once if they don't want to. And so it can cause game designers, I think, to be a little lazy. Whereas if you make Mario, you better make world 1-1 pretty cool otherwise that's gonna be 90 of of what people play you know what i mean yep cool yeah i'll check that out i love roguelikes so that sounds that sounds awesome all right and uh now we're about to have an interview and that's right that's right we're about to have an interview. That's right. That's right. We're going to interview Dave, who works for Naughty Dog.
Starting point is 00:21:33 And we're going to... Interview Florent, who works for Ubisoft. That's right. And they are actual game developers. So we talked about game development, game programming in the past, but we got an opportunity to interview people who are actually there doing it. And that was definitely very exciting for us. And I think you'll find it.
Starting point is 00:21:58 We'll all find it pretty awesome. All right. So we'll be back in just a second. Hey, everyone. We have a very special show today. We're actually talking about industry game programming, and we have two industry game programming experts. We have Dave Smith, who's a tools programmer at Naughty Dog,
Starting point is 00:22:15 and we have Florent. How do you pronounce your last name? Devisheval. Devisheval? Yep. Cool. Florent Devisheval is a tools programmer at Ubisoft. And I'm sure you guys know about Naughty Dog and Ubisoft. They're also going to kind of explain those companies if
Starting point is 00:22:32 you don't, which is fine. And so we're going to kind of talk about what it's like to work at a real game studio. I'm sure a lot of you out there are very interested. So just to get started, kind of, you know, Florent and Dave, tell us a little bit about your history, how you got involved in games programming, and things like that. FLORENT RICARDO BOUCHARD- All right. Hi, everyone. So I've always wanted to do video games, actually.
Starting point is 00:23:00 So once I graduated from the university, I simply started to look for a job in the video game industry. I didn't find a job at first, so I went to work as a software developer. I did that for a year, and then after that, Ubisoft was looking for a tools programmer. I applied, and I got hired. So I worked on Assassin's Creed and now I'm working on The Division.
Starting point is 00:23:31 And how long have you been there? Three years. Cool. And yeah, so what about Dave? Dave. Hi, this is Dave. So I've worked at Naughty Dog about six years and before that I worked at a few startups in San Francisco and then I was an independent consultant for a while. I like flow, I got out of school, I really wanted to make games but at the time it was 1999 and I was seduced by the hope hope of becoming rich in san francisco at a software startup and if you know anything about the software market around that time i got there just in time to see it all crash so i never got rich um did you did you go to any of these i heard crazy stories
Starting point is 00:24:17 about you know like pets.com bought this entire hotel and anyone can just stay here and just kind of crazy stories about the dot com boom do you did you experience any of that i there's one story i have that is crazy to me i worked for a company that was incubated by a startup incubator which is basically just a big company with a bunch of investment funds that has been given the edict to go spawn smaller companies that hopefully will go into the next pets.com, I guess. And so I think they had an endowment of like a billion dollars, of which the company I work for had a seed of some tiny percentage.
Starting point is 00:24:55 But of that billion dollars, they spent something like $200 or $500 million of it buying a big old building in downtown San Francisco, which seems just like the most flagrant, wasteful way to spend your money if you're trying to work as a startup incubator. But other than that, I don't really know a lot of truly crazy startup stories. All right, cool. Fair enough.
Starting point is 00:25:20 Yeah, so after I bounced around a few startups, I decided to become an independent consultant. I did that for a few years, but always still wanted to make games. So I just started applying to different studios and studying the things that I thought I needed to learn to do that. And eventually wound up here at Naughty Dog. Cool, cool. Very awesome. So what are sort of the different roles? I mean, imagine, you know, a game requires a lot of different people to kind of come together. You know, obviously people know about these really old games like Pitfall and things like that that were made by one person, but that's sort of more of like a relic right and nowadays you know a lot of uh there's a lot of people involved in making a game and so what are sort of these different people that you have to work with
Starting point is 00:26:10 and so what are the the requirements or the expertise that each of them bring to the table yeah you you definitely can't make a game alone anymore well you can but uh if you want to make triple a games it's kind of hard to do it on your own. Because obviously you need artists, so people who will basically make all the 3D assets or 2D assets that you need, so the meshes, the textures. You might also need animators, so people who will make animations for your characters and for your AI agents. The designers are also really, really important. They are basically building the rules of your game. And also they are doing good level design is what makes a game fun compared to a game that won't be fun. You have also programmers, of course.
Starting point is 00:27:14 Well, you have a lot of different types of programming in a AAA studio, so of course you've got tools. But you have a lot like you can have graphics engineers, you can have gameplay engineers, network, UI, QA. So yeah, you can do a lot of things in programming. One thing also that is really important is all the testers and the QA team. Basically, they are here to make sure that the level of quality for the game is reached, like the game is really what it needs to be. Yeah. I don't know, Dave. What do you think about it? Yeah, yeah.
Starting point is 00:28:00 I think that's a pretty good list. I think there are some roles that people tend to overlook when they're thinking about game production, just because they're not part of the core production process. So I think the people you mentioned are the army that goes into deployment and builds most of the game. But then there's also a lot of people in pre-production like the writers and the concept artists and designers who do the early work to figure out what the game is going to be about and what it's going to look like and the story structure for the game if you have a narrative game. And then on the flip side, at the end of the cycle there's a lot of people in QA like you
Starting point is 00:28:40 mentioned to make sure everything's going to work, but also who do localization to translate the game to 25 different languages and who do release management and marketing. And then also there's usually a lot of producers who manage the time of the individuals involved with production. Although I mentioned that knowing that Naughty Dog, unlike most studios, has very few producers. We have a couple of producers from Sony and that's all. Whereas I think most studios have, the producers are much
Starting point is 00:29:09 more involved in production. Yeah, I think one thing interesting with video games is that whatever you're into, you can practically apply it to video games. Like if you are into architecture, well, you can build levels using your architecture skills. If you are into writing architecture, well, you can build levels using your architecture skills. If you are into writing stories, well, you can basically write stories for video games. So whatever you like to do, I'm pretty sure there is a field where you can fit in. What's the mobility like between different roles? So most people listening to the podcast are, you know, kind of coders at some level.
Starting point is 00:29:47 If you're working on, say, tools programming, how likely it is over the course of your career that you'd also maybe do like graphics engine work or, you know, other kinds of coding roles than just tools programming? Or is it people kind of have their thing and that's what they tend to stay with? Well, I would say it depends on the company you're working on. Maybe some companies, if you're a tools programmer, you're going to stay a tools programmer. At Ubisoft, actually, you can change if you're a tools programmer and you want to change the gameplay. And of course, if there is an opening for that role,
Starting point is 00:30:21 you can do that. But I think it also depends on what you want to do. Because basically, of course, if you've been doing, I don't know, graphics programming for 10 years and then you're applying to another company to make network programming, they might wonder why you're doing that. Or, you know, they might say, okay, but you're so good with graphics. We want to keep you into graphics. So, yeah, you can definitely change your role, change your domain.
Starting point is 00:30:57 But it's basically up to you. Cool. Oh, go ahead. I was just going to say my experience is similar in that uh it's definitely up to you and it depends a lot on the studio and the people you're working with but uh you know just like in most disciplines people are always desperate for capable individuals so if you want to transition to a different role the best way to do that is just to be excellent at the role you're looking to move into. But at the same time, game companies are trying really hard to push a product out the door,
Starting point is 00:31:36 so that puts a lot of obstacles in the way of making that transition from one role to another, just because once you become an expert in a specific domain, the company will definitely need you to produce in that domain because your job exists because they have a need in that role. So that makes it difficult to extract yourself from stuff that you're already an expert at doing. And to be fair, that's like all companies. For people who haven't worked a long time, that often is the case. This is like an epic paradox that has probably been around since the beginning of time, or at least the beginning of modern civilization. But yeah,
Starting point is 00:32:12 it's just, you know, you want to specialize and, you know, by doing something, you get better at that thing. But at the same time, through being sort of eclectic,
Starting point is 00:32:21 like if you look at amazing discoveries and inventions, they're almost always through someone taking one idea and applying it to a different field. And so, and in general, people don't, a lot of people don't like repetition. And so you're sort of, it's this paradoxical thing where, you know, you get this positive reinforcement loop from doing the thing you're good at over and over again, but then you also kind of need to keep changing it up. And so you hear a lot of these debates in any industry about open versus closed allocation and things like that. And I think it's pretty cool.
Starting point is 00:32:58 It sounds like the games industry is one of those places where you can kind of move around a little bit and still kind of get to experience a lot of different areas in the same company well i think that's why it's cool when you're doing tools actually because you're seeing so many different things that uh there is no routine it's never boring so you you might not want to change of job actually yeah it makes sense makes sense um cool so you know a lot of people you know maybe are in high school or in university or have have been through a computer science degree and so at one point everyone kind of thought i'm going to
Starting point is 00:33:39 make a cool game or maybe everyone just made tic-tac-toe at one point at least once everyone has kind of done that at one point whether it's for a course or for fun or something like that and so people have made like you know pac-man clones and things like that and sort of their uh you know basement or garage or what have you and so someone who sort of has had that experience of just kind of making a game for fun what's the difference between that and actually kind of making a professional game that turns into something that you see on the shelves? Well, the main thing would be that if you are making an indie game,
Starting point is 00:34:14 you will do a lot of different things. You will have to work on 3D assets, on sounds, on menus, on programming, on the design. You will have to work on everything. But when you are making a AAA game, you will work on your specific system. You might only work on this little part of the game. When you're doing an indie game, you will work basically on almost everything. Yeah. Yeah, I think that's definitely true. I mean it's a lot more highly specialized.
Starting point is 00:34:52 I used to, before I became a professional I made games myself all the time and you did get to work on every aspect of the game. Whereas once you're professionally employed you tend to find a specific niche where you can be productive and uh you you learn that niche very well and a lot of the other things don't necessarily come on your table that often um but on the other hand uh i'm trying to think i had something else to say about that but i can't remember what it was. And also, I remember you guys talking about this. I'm touching back on something that you mentioned a second ago, which is that I think a lot of programmers did come from a background where they made games or worked on games.
Starting point is 00:35:35 I know you talked about that on one of your shows recently. And I was trying to think how I got started. And actually, my very first program was a game that I wrote in longhand on like a yellow spiral notebook. It was a choose-your-own-adventure game I wrote in BASIC and transcribed onto a computer. And obviously, that was a terrible way to develop the program. It didn't work at all. But yeah, from the very beginning, it was always games that was driving me to become a programmer. And I really do wonder what percentage of programmers got into this field because they wanted to make games yeah i think
Starting point is 00:36:09 it's it's pretty huge just from i i asked us this to a lot of people and uh i would say i would not know if it's the majority but it might be you know yeah more the majority of people out there um got into it from wanting to make games i my experience with making games i always ended up you know i mean one of the things is when you make a game by yourself you really have no mentor um no one with experience telling you um what's going on so you have to kind of learn everything the hard way um i i had these grandiose visions of oh it's as complex as civilization but has this amazing narrative that's generated automatically through an artificial intelligence and like you end up with you know an armature
Starting point is 00:36:53 walking like after two years you have like a stick figure in 3d that can walk yeah i think that's interesting because you it's actually a problem of scope. When you're working on an indie game, you cannot, well, you might not be able to have the same scope as a big production. So you need to be way more pragmatic. You need to go straight to the point.
Starting point is 00:37:18 Yeah, that's right. It seems like most people, when they want to make a game, the first thing they want to make is, you know, I want to make a grand open world procedurally generated in- like the you know the largest possible scope of a professional game um yeah but it kind of underscores one of the other big differences between making games by yourself or at an indie studio versus a triple a triple a studio which is just the quality requirements at a AAA studio are stratospheric relative to what you're doing by yourself. Just the level of polish that we as a studio
Starting point is 00:37:52 put onto every aspect of production is way, way higher than any individual could hope to accomplish. You know, we'll just obsess over things like when the game transitions from a cinematic segment to an in-game segment, the IK on the elbows will pop a little bit. So you'll see a little shift in the character's elbows and knees when we shift from one camera to another. And we'll spend weeks trying to solve that kind of problem. But if you're making a game by yourself, it would be a foolish allocation of time to spend that much effort
Starting point is 00:38:26 fixing that kind of problem. Yeah, I think that's also because as a player, we all expect AAA games to actually have these kind of little details fixed. But when you're playing an indie game, well, you might be okay with a few things wrong here and there. Yeah, that's a good point. I think a lot of indie games are actually one of two things. Either they're sort of variations on other games
Starting point is 00:38:54 with like a clever, funny theme, or actually they're interesting stories where they could have survived as like a novel, which many novels are written by one person, maybe with an editor or two editors. And so it's a very compelling story. And they've kind of put a game on top of it. And so that those are the two things I think one one person, one or two people can do well. But, yeah, I mean, as soon as you start saying words like MMO, you're you're you're in trouble but i think also one of the recent developments with things like unity um which we had an episode about recently is uh it is more than just a game engine
Starting point is 00:39:32 that they're providing hobbyists but they're trying to provide a tool chain as well right stuff for managing assets and levels and that which before if you were trying to do that on your own would just be crazy but now if you're leveraging the work of other people in that infrastructure, even as an individual or a few people, you can try to do something more ambitious. Yeah, that leads right into our next question, which is, you know, obviously a lot of people know about Unity. I think two or three shows ago, we covered Unity. And so the question is why do studios still roll their own game engines? I mean, it seems like everyone should just be using Unity.
Starting point is 00:40:11 Well, like that quickly, I would think about two different things. The first is that it all depends on the game you're making, how specific the needs you've got. I think one good example is Grand Theft Auto 5. I mean, if you were making Grand Theft Auto 5 with Unity, you would end up with a lot of problems.
Starting point is 00:40:33 Not just about the streaming, but also about the editor part. You will end up basically rewriting everything. So all the gain that you will have by taking this existing engine, well, you will lose it because you will have by taking this existing engine, well, you will lose it because you will have to change everything. The other thing is, since you are using this engine developed by someone else, let's say you need these features like
Starting point is 00:40:57 right now, and since you are buying this engine, you might not have the engine team to make it yourself. So you depend on that other company that is making this engine. So you will have to wait for them to implement it for you. And that's something you might not want because, well, you can't wait six months or one year in a production for a certain feature to be implemented. Also, you are kind of dependent on the license fees. Right now, Unity is free or almost free. Unreal Engine is also really cheap. But when you are in a AAA studio, those license fees can go up really quickly. Yeah, I think I have that.
Starting point is 00:41:53 I ask myself the same question all the time. Why are we still able to compete given the just amazing quality of the engines you can buy off the shelf like Unity or Unreal or even the amazing quality that other larger multi-studio organizations like Ubisoft or other studios have access to. And it makes me sweat because the artists will come to me and they'll show me some YouTube video of this really slick tool that's built into Unreal 4 that makes it incredibly easy
Starting point is 00:42:22 to build shaders or drop assets into the game. And I know that the process we have internally for doing the same things is really hacked together and duct taped together. And it's kind of embarrassing to point at that and say, yeah, we're going to make games to compete with Unreal, but our tool set, in a lot of ways, doesn't have anywhere near that level of finish. So I think about that question a lot. And I think there's a couple answers I've come up with.
Starting point is 00:42:47 I don't know if they're true, but the first one would be that when you take a tool like Unreal off the shelf, then you have the same starting point as every other studio that has Unreal or Unity. And 95% of all games fail. So you have to think hard about what is it that makes my game unique and what gives us our competitive advantage in this really competitive marketplace. And if you're using an off-the-shelf engine, it can be difficult to develop a competitive advantage
Starting point is 00:43:19 because you're always working with the same tools that everybody else has. So even though some aspects of our pipeline are duct taped together, when we decide that something is really important for our game, like if we want really smooth, buttery movement mechanics, or if we want really great character faces and emotion in our characters, we can devote a lot of engineering resources to that problem that people who are stuck with the tools that come with Unity or Unreal just can't devote because they can't crack open the covers and make those changes themselves. Or like Flo was talking about, they have to rely on a third party to provide those things for them.
Starting point is 00:43:59 So even though 90% of the stuff you get out of one of those off-the-shelf tools is really slick and works really well. And you have to make do with the last 10%. If you roll your own engine, you get to decide exactly what you want for 100% of the engine. And it turns out that that last 10% of things is really, really important in delivering a game that can stand out from the marketplace and feel unique and be successful yeah one thing that's kind of interesting about games and i'm sure there are other fields like this i mean i guess movies or things like that but is you know if you look at say honda for example i mean honda has to do sort of variations to the car every year but at the end of the day like the car is largely the same from one year to the next and so they just sort of uh you know they have a product cycle but at the end of the
Starting point is 00:44:50 day they know that they have brand loyalty and and things like that and they just know that a certain number of people are going to buy hondas and there might even be a segment of people who don't want the next honda to look different than the first one they just want to keep buying their honda right um but a game is different i mean if you released i mean if you went so far as to literally release the same game a year later no one would buy it like that doesn't even make sense right maybe what no i mean like literally like if you were to have literally the same game i am taking to the extreme right but and you were to discount the first game and leave the new game at the same price there's there's no reason right so the point is like the sports games right yeah sports games are really similar year to year like almost no
Starting point is 00:45:35 changes but the lineups are different so you want to play the most recent if you really follow soccer right you want the fifa lineups that are this year's lineup i would argue that the content is the lineup and and that's and changing that is significant i would argue that even though it's it's the code isn't changing that the game itself changes dramatically just because of the but anyways you're right that that's sort of a corner case but i feel like one thing that's interesting about games is that you have to sort of stay novel and you have to constantly be doing different things to you know entertain um i think that is is really fascinating i would imagine that probably goes into needing to roll your own game engine so that you can sort of diversify yourself yeah i think the one thing is that when when are using Unreal Engine or Unity, you cannot make assumptions.
Starting point is 00:46:32 So basically, those systems have to work for every different kind of games. But when you're making an open world game, you know you might not have like a 2D physics system really strong because you won't use it that much. But that's something, that's the kind of assumption that you cannot have when you're making Unity or Unreal. Also, yeah, the fact that you have your own engine lets you try a different thing and maybe in an easier way because of course you know your engine upside down, you made it yourself. So it might be easier to break everything in it, change stuff in it and to try new gameplays. Yeah, that makes sense.
Starting point is 00:47:29 Cool. Were you going to say something, Dave? Oh, go ahead, Dave. I'm not sure. I can't remember what I was going to say, but I do think, like as a counterpoint to that, I think it's also worth saying that
Starting point is 00:47:38 I think the tools that are there, like Unity and Unreal are amazing tools. And if you're a smaller smaller scale developer or even if you are a big developer whose competitive advantage doesn't come from the kind of things that derive from building your own engine then those tools are amazing and you should embrace them and run with it i can think of you know several studios that are using those those tools and making incredible games. And so I wouldn't want to dissuade
Starting point is 00:48:07 anybody who's listening to this podcast from taking an off-the-shelf product and just running with it, because those things are really great. I'm so excited that they're on the market now. I think that's the thing as engineers, programmers, that we tend to do sometimes is say, oh, you can't write a serious
Starting point is 00:48:23 application game in thing X. And it like well maybe but you know it just depends on what you're trying to do and we talk about this a lot like with web frameworks is another example people say oh you know i don't know how to write a web app that scales to 10 million simultaneous users it's like well but that's not your initial problem. You know, your initial problem is to make it interesting for one user. And so what you do to get service for one user or 100 users or 1,000 users, you have more flexibility in what tool to use. And using a really sophisticated tool or rolling your own, you know, server,
Starting point is 00:49:06 you know, binaries and applications would actually just get you nowhere really fast because you would spend all your time doing that and you would never make your web app so you're saying that if Unity was around I would have been able to complete my civilization MMO procedural content game I was just born too early I think anyone who tried Unity
Starting point is 00:49:22 and Unreal for like 10 minutes quickly understands that those are really, really powerful tools. And I think actually working at Epic Games or Unity on those editors and engines, even as a tools programmer, it's almost a different kind of job than working on your own level editor and engine in a AAA game studios because the level of details is not the same. I mean, we don't need this kind of generic systems. And this is also why Unreal and Unity are really powerful, because they can achieve this kind of level of details
Starting point is 00:50:16 and generic system. They are really impressive tools. Cool. So I would imagine several people in the audience, several people out there are students, as we talked about, but there are also a lot of people who work in just a variety of industries. We've seen sort of everything from petroleum engineers, someone who makes lightsabers for a living, all sorts of things. And so a lot of people don't know what it's like to sort of be a full-time, you know, programmer and specifically like in the game studio,
Starting point is 00:50:52 you know, day to day, what it's like, kind of what the atmosphere is like. So can you kind of like take us through sort of an average day in your role and what that kind of feels like? Well, as a tools programmer, the days are never the same, actually. As I said earlier, there is like no routine. So that's something I really like about it. It's never boring, basically. Basically, you know what you have like long-term tasks so that you do
Starting point is 00:51:26 every day most of the times they come from the other teams like artists animators designers they need you to make some specific tools so they can work in a more efficient way but very often what happens is that someone comes to you with this this really blocking bugs, so they need you to fix it. So that's the no routine part of the job. So yeah, basically one morning you can come up and work on shaders, and then the next day you will work on the sequence editor,
Starting point is 00:52:02 and then the next day you will work on something else. That's one of the really great part of the job. Yeah, I totally agree with that. I think unlike a lot of other roles, a lot of other programming roles in a game studio, you have a really large diversity of tasks as a game programmer, so there isn't a prototypical day. But I guess, I mean, the activities do break down along certain lines. You spend a lot of time, like Bo said, doing support.
Starting point is 00:52:31 You know, an artist will call you and say, Maya is crashing on me or my shaders won't compile, and so you spend some time trying to figure out why that's happening, which is probably very similar to things that happen in any kind of programming discipline, not just game programming. And you spend a lot of time near the end of the production fighting, just fighting fires. Like something will go wrong and a bunch of assets will get corrupted and it's a little bit different than your typical support call in that it tends to be a crisis and you just
Starting point is 00:53:03 invest a lot of energy trying to recreate work or steer around a problem that you didn't anticipate until the last minute. I guess that is a big thing that's different from other programming disciplines when you're working in the game studio and that's that it's very cyclical. The beginning of a project right after you ship the game feels a lot different from the end of a project three months before you're ready to ship a game. I mean, at the end, you're working really long hours and everybody's kind of getting together to try and push the thing over the finish line, whereas at the beginning of the cycle, there's a lot more pontificating about the future and trying to decide about the
Starting point is 00:53:44 architectural directions of your software and that kind of thing. Yeah, I think working for a game studio is a lot like working for a software startup, which is what I did before I was a game programmer. So it tends to be very loose as opposed to the kind of bureaucratic or structured image that I have of other kinds of
Starting point is 00:54:06 programming jobs. So not a lot of meetings is what you're saying? Yeah, I've almost no meetings. I have probably maybe five meetings a year. Oh, wow. I thought you were going to say a day. Yeah, I thought you were going to say a day. Yeah, I thought you were going to say a day too. Oh man, we have too many meetings. Yeah, I consider it for my job to not have many meetings relative to my previous job, but I have at least one or two a day. Yeah, definitely. It depends on what you call a meeting too, because I have a ton of just conversations.
Starting point is 00:54:43 No, I mean meetings. People just naturally aggregate and talk about problems in the kitchen or by their desks but very few meetings and outlook in a conference room where you all sit around and write in your notebooks yeah i mean i'm just going through yeah i have on average three meetings a day oh man um cool, like, I would imagine, you know, a lot of people who work at a game studio are into games. And so I would imagine you guys have a pretty cool game room. We just got a ping pong table in our game room, and that was a big deal.
Starting point is 00:55:15 But I would imagine, you know, over there, you guys have a pretty cool setup with, like, couches and things like that to relax every now and then. Yeah, definitely. Well, you have access to all the video games you can imagine so you can even uh you can even take them home if you want uh so that's pretty cool uh do you want to play video games at the end of the day really uh i think since i'm working in the video game industry, I don't play so much anymore.
Starting point is 00:55:47 It's like seeing Mickey Mouse with his head off, right? As soon as you work at Disney and you see the Mickey Mouse with the head removed. The thing is, before being in the video game industry, I used to play almost all the games I could get my hands on. Right now, I'm more choosing the games I want to play to almost all the games I could get my hands on. And right now I'm kind of like more choosing the games I want to play. It's also maybe because of a lack of time. So I need to be more selective. But yeah, you have also a kitchen where you can spend some time. We have free candies.
Starting point is 00:56:21 We have a lot of cool stuff. Table soccer. Cool. So we talked about seeing Mickey with his head off, and that kind of leads to the next question, which is you've seen different, you know, the games at different stages. You've seen the game on day one, and you've seen the game on, you know, day T-1.
Starting point is 00:56:43 And so sort of what's that like uh you know playing the game that's half finished i mean i i found a picture in my head is you sort of drop stick figures because you don't have any artwork and then the game is just like uber comical you know kind of like goofy tragic comedy you have like stick figures falling over and things like that but sort of what is that like is that kind of fun or torture or is it you know what are the sort of experiences like playing sort of the game as it as it gets more and more polished yeah it's definitely fun uh the thing is sometimes you need like a huge imagination to just see what the game will be at the end uh especially like i remember when for sequences of the games
Starting point is 00:57:25 like when you don't have animations or you don't have the final textures and instead of seeing like this nice moves and animations all you see is just your character in T-pose moving around just being translated
Starting point is 00:57:40 and with placeholders everywhere for sounds, for the backgrounds, for everything. Yeah, you're definitely sometimes a big imagination, but it's funny. But the thing is, as a tools programmer, I often play the game in debug. So it means I have everything, like the settings at the lowest possible because I need to debug the game so
Starting point is 00:58:09 I'm often the last one to see the final quality of the game with the highest graphics and stuff yeah I love behind the scenes stuff I love watching DVD commentary and that kind of thing where you can see how
Starting point is 00:58:25 something's put together so I really love that part at the beginning of a project where it's not exactly stick figures it's like the opposite of stick figures because Naughty Dog's an old studio so we have built up 30 years worth of assets and some of them look incredible. When you're starting a new
Starting point is 00:58:42 game you throw away maybe 75% of what you had and you but you still have uh to some extent beautiful character models and some motion loops are really highly polished animation so you've got the opposite of a stick figure in that there's nathan drake and he's running around the world and he has perfect animation and he himself is rendered pretty well uh but everything around him is just gray boxes and uh you know stubbed in stuff um and so you really do have to use your imagination and in a lot of ways it's it's a lot of fun but it's also just terrifying because you're just
Starting point is 00:59:17 seeing the enormous amount of work that's sitting in front of you. And I think here especially, I'm always shocked at how late things come together. I mean, even just weeks or, you know, a couple months before a product ships, I see things that to me are just really scary. Like, I'm not sure how we're going to pull it off. And it's a real testament to this studio that people always exceed my expectations, even though my expectations at this point are really high of the people I'm working with. But they always just come through
Starting point is 00:59:48 and do just amazing things in what seems like an impossibly short amount of time. So is it more that you'll have like a single level built up to an almost finished state before adding all the other levels? Or you have all the levels kind of start to play together, but in a really rudimentary state, and then they kind of all improve in lockstep, but you're playing the game end-to-end with kind of missing parts. Well, I guess it depends on the kind of game you're making. From my experience, everything goes up in parallel. Like every mission is built in parallel.
Starting point is 01:00:22 And the features, so when you well at the start of the production of course you don't have much but when you do something like a new feature it's supposed to work on every other level at the same time so yeah the content is supposed to be
Starting point is 01:00:40 more horizontal you know working throughout the game rather than doing specific to a level. Right. Yeah, that's actually, that's interesting. That's pretty different from the way we end up doing things. I think, I mean, at the beginning of the process, we end up with a large variety of different kinds of levels.
Starting point is 01:01:01 You know, the designers will have cooked up a few levels to test out, or I wouldn't even really call them levels, but just environments to test out new game mechanics that they want to try, or just obstacles or puzzles that they think would be interesting. And at the same time, in pre-production, they've developed a narrative arc for the story,
Starting point is 01:01:19 and some parts of that arc they may be confident will go into the game, and other parts they may think are going to require some tweaking so the parts that have more confidence end up going to production earlier so you'll see that stuff get put together early in the process but there's big chunks of the game that we may not even start working on so pretty late in the process we'll tend to do a vertical slice at some point where we try and come up with a section of the game that demonstrates all the gameplay
Starting point is 01:01:47 mechanics that we want, all the rendering features that we think we'll need, and we'll test out all the elements of the production pipeline that we expect to have at the end, and then we'll build that start to finish to a high level of polish just to validate that we're going down a path that we can
Starting point is 01:02:04 actually finish. And then from there, if things are successful, we'll make adjustments and start to bring other parts of the game to a greater level of polish. And then we just test like crazy. Every six weeks near the end of the project, we'll have focus testing where people will come in and play the game, and based on their feedback, we'll make changes and try to make it more fun and cut out stuff that's not
Starting point is 01:02:26 working One thing is that I don't know at Naughty Dog but at Ubisoft we use a lot of test maps, I think you said that Dave that's something most of the people don't know is that when you
Starting point is 01:02:42 are for example implementing a new feature you won't test it directly into the final game. You will actually make a test map that is dedicated to that and everybody that someone is iterating on these new features, this will be the map that you will get to where you will test your features. And yeah, we're trying to do things in a modular way and then we put that in the final game so i heard stories actually i believe the stories came out of naughty dog studios but um there's stories about like the original crash bandicoot and how they had this crazy sort of uh monte carlo heuristic to pack things yeah we were talking
Starting point is 01:03:28 about that last episode yeah we talked about this last episode and so um you hear so much about this there's a there was an old game where um you had to shoot it was a star wars game for the atari 50 or atari 2600 where you just shot these horizontal lasers at this Death Star looking thing and there was a band in the middle of the screen where you were invulnerable but you also couldn't shoot and it didn't really make sense and then the game developer said yeah I couldn't fix this bug and so I just made it part of the game and so you just hear these stories of just this like it sounds very epic of just uh like amazing feats of engineering at very desperate moments and uh and i just wonder you know i haven't really kept up to date and so just with moore's law computers getting stronger more memory
Starting point is 01:04:19 things like that do you still have these sort of crazy moments where at the end you have to do something heroic to make the game work? Or is that kind of a relic? Yes and no. I think maybe not in tools, actually. Maybe if you ask the gameplay programmers, they might have this kind of story. But since I'm making tools, the tools I'm making are not shipped with the game. But yeah, since the deadline is often yesterday, you might, especially at the end of the game
Starting point is 01:04:54 when you are crunching, you might end up forgetting all your nice rules about how to write nice code and start to be efficient. Well, efficient, if you can call this efficient. But pushing stuff in the game, yeah. I don't have specific stories about it, though.
Starting point is 01:05:15 Yeah, it definitely happens. I'm trying to think of good examples that are good stories. Most of the examples I can think of aren't that sexy or just don't make great stories. Like I know that during the, near the end of one of our last projects we got within a couple weeks of having to print discs and send them off to the manufacturing to go into Best Buy and we still hadn't received something like 95%
Starting point is 01:05:40 of the translations for one of the languages, which would mean if we didn't get those into the game that would mean delaying production and delaying the ship of the translations for one of the languages which would mean if we didn't get those into the game that would mean uh delaying production and delaying the ship of the game and it would basically cost just tens or tens of millions of dollars probably for us to recover from that mistake so when you face the prospect of trying to chew through a hundred thousand audio files all within the last week of production and try and make sure that they all live up to our standards for quality. That can be pretty terrifying, but not necessarily that exciting. There's other bugs where I know our save games were getting corrupted after we shipped The Last of Us,
Starting point is 01:06:17 so there was a pretty heroic effort to try and solve that as quickly as possible because it meant people were playing the game and then losing there and all of their progress after the first day. Yeah, stuff definitely happens, but I'm failing to come up with great examples to talk about. All right, cool. Yeah, it sounds, I mean, anything that's on sort of a product cycle. I believe, Patrick, your current task is on a product cycle. Is that correct or no? Somewhat. Yeah, Patrick, your current task is on a product cycle. Is that correct or no? Somewhat, yeah, yeah, yeah.
Starting point is 01:06:47 Yeah, I mean, me as well. I'm rather new to it, but my current task has me on a product cycle. And it is pretty stressful, but it's also pretty awesome when you have such a tight deadline to sort of see what sort of innovative thing you can do to get you know the 80 the mythical 80 solution yeah i mean a lot of the stories end up being things for me is like there's some bug you can't find and you end up just trying to detect the thing that causes the bug and just like end around it like when you notice this happening uh just reset this other thing and then you you know just document it that like just do this it doesn't make sense yeah i mean i remember seeing some some issue in a video game might have been
Starting point is 01:07:30 like zelda ocarina of time where some level crashed and in the end they just deleted that level and shipped it it's just like a funny thing but uh cool so um so it you know there's obviously you know there's a lot of people who are really into games, love what you guys are doing and want to become a game programmer. Many of the people that we talk to are, you know, in university or maybe going to university again or in high school or, you know, things like that. Definitely, like, you know, interested in learning. Those are people who kind of gravitate to the show and things like that. So for these kind of people, what sort of subjects should they study to become a good game programmer, tools programmer, etc.? Well, definitely computer science, of course, but mathematics like linear algebra, everything that is related to 3D.
Starting point is 01:08:26 Even if you won't do that every day, like even if you're not a graphics engineer, when you will apply for a job in the video game industry, you can be sure that you will be asked questions about 3D. So you need to know your linear algebra. Also a bit about low-level architecture, like the machines, how they work, how the CPU works,
Starting point is 01:08:52 and in relation with the memory. Once again, even if it's not your everyday job, they're going to ask you to, and it's really useful sometimes when you need to optimize stuff. You also need a good demo or a good project, even if it's not related to video games, even if it's a tool, if it's a procedural,
Starting point is 01:09:16 if it's something generating stuff procedurally, whatever it is, have a good portfolio and good tools. Yeah, I agree with everything you said. Those are all, especially would want to underscore the need for strong math skills. I think that's something that differentiates game programming from other disciplines. There's more math required, especially linear algebra,
Starting point is 01:09:44 than you would encounter in traditional application programming. So if you're looking for a way to study for game programming as opposed to other fields, that would be something to spend a lot of time on. I'd also point out that at a high level, we as a studio, and I'm sure every other studio, are just desperate for qualified people. So if you want to get into the industry
Starting point is 01:10:05 just do your best to become qualified and the studios will definitely want to uh to use your skills um some other things that i can think of that maybe wouldn't have been obvious to me uh on my road here like facing forward but looking back but there's a lot of projects that i worked on that i found especially educational um so I would just list a couple of those, like making your own OS, even if it's just a tiny one that does barely anything, is really valuable for teaching you the relationship between the computer hardware and the software that's running on it. Building a compiler is equally incredibly educational for teaching you what's going on behind the covers when you when you write your software writing a ray tracer is a really
Starting point is 01:10:52 valuable thing to learn that 3d math and to learn graphics and it's surprisingly not that difficult like once you get into it it looks incredibly impenetrable when you start out but once you're done you will have learned a ton of stuff. It's incredibly valuable. And then, of course, just make games. Do whatever you can do that keeps you excited about making games, and those projects will lead you down a path that should be successful. That's funny that you talk about making a retracer for learning linear algebra
Starting point is 01:11:25 because that's exactly what I did actually when I was a student. I wanted to be fluent with matrices and stuff like that. So I thought what kind of project would allow me to learn this and I thought about a retracer. So that's exactly what I did. Yeah, it's true. It's really important to have educational project. And it will also help you if you want to do machine learning what's that so that's completely opposite learning about linear algebra and matrices
Starting point is 01:11:53 because that's the other thing it crops up all the time because i don't program games but only time i encounter math is when someone's done some machine learning something and then it's like oh there's the math now that it's hiding in one place in the project yeah that's interesting i mean i would have thought um that you would definitely want to do something practical you know in the sense that if you have to choose between linear algebra and you know networking you know you know ethernet networking i would imagine that the choice would be ethernet networking but i'm actually that the choice would be Ethernet networking, but I've actually proven wrong.
Starting point is 01:12:27 It sounds like having sort of a good theoretical computer science background is still really important for game development. Yeah, definitely. But it's not all theoretical. When I mean, for example, know your linear algebra, when you're making a retracer, it's, know your linear algebra. When you're making a retracer, it's not just a good algorithm. You're not sending to people a CPP file.
Starting point is 01:12:55 It's actually a software that can generate pictures. And this is what you're going to send to people to apply for a job with all those nice pictures that you've made and all the techniques you were able to develop. But yeah, you're right in being pragmatic. Like if you're making a game demo, maybe try to reduce the scope rather than trying, as we said earlier, to do this open world MMO games that you will never finish anyway so yeah you definitely need to be to be practical in some ways
Starting point is 01:13:31 yeah I do think you're right that you might be using linear algebra more during the interview process than during your job if you're looking for a job like a network engineer and and consistent with what i was saying before about just becoming qualified and what you want to do if you really want to be a network engineer at a game studio then yeah i would just recommend learn ethernet in and out learn everything you can about networking and about how uh networking in games is applied and i think that would also be a perfect way to find your way into the industry and it's other industries too that have the kind of thing where you have to do stuff for the
Starting point is 01:14:10 interview only sometimes like you know when I did interview for my current company I had to implement you know a heap sort and it's like since I've worked at the company I've never implemented my own heap sort there's libraries that do that for me. But to prove I had the knowledge, right, like that was what I needed to do to pass the interview. Yeah, that's right. And sort of along those lines, this seems kind of obvious, but it's actually, it was surprising to me, and I had to learn it the hard way. So I will try to spare as many people as possible. But know about games i mean i i applied for a job a long time ago and i wasn't it wasn't a game programming job but uh um the interview is going well i felt like i could answer the technical questions and things like that and at some point
Starting point is 01:14:57 someone was asking me questions kind of about the product of the company and uh the only thing i knew about the company was that I had, you know, created an account, because you have to create an account to apply for a job. And it ended up just kind of that part went very badly, as it should have, because I, you know, didn't sort of do any research beforehand on the company itself, I kind of just thought, oh, they want someone to write code, I can write code. But the reality is, they want someone who sort of belongs, who they feel like they can trust, and feels like is committed to that company's vision.
Starting point is 01:15:42 The problem with just getting someone who can code is that it's sort of like contract work they might as well outsource it but if they're hiring you to join their company they want you to join their family in this case that means understanding the games and understanding the games that company makes and what their audience is and how they work
Starting point is 01:16:04 you definitely need passion that company makes and sort of what their audience is and how they work, things like that. Yeah, you definitely need passion anyway. You know, you often heard those crazy stories about someone who was hired just because, I don't know, he knocked on the door, there was light, he came in and then he got hired. But that was like maybe 10, 20 years ago. Now it's so complicated to make a game that basically all the studios in the world are looking for really strong artists and really strong programmers. So they can be quite selective. So yeah, you need skills, of course,
Starting point is 01:16:42 but knowing the games is of course mandatory so what if I have a high score in a game would that mean I can get a job? actually maybe to be in a QA that might help but for something else I'm not sure
Starting point is 01:16:57 I used to do some work on emulators, I have done a lot of work on emulators and there have been a lot of work on emulators and there have been a lot of people from sort of the emulator, I guess, scene. I don't know if that sounds too hipster, but there's been like a lot of people from the sort of the emulator scene who have gone to game companies and game companies tend to really like those people because they know they're into games and they can do sort of the low level bit of it. And so we always talk about do open source, do open source,
Starting point is 01:17:30 if you want to get started on a project. And although games, we just talked about how hard it is to make a game by yourself, there's tons of open source projects that are games related and that can give you really great experience. Yeah, definitely. Sorry. I was just going to say that that's definitely true. And it's so much fun too. I mean, those projects are, it's so much fun to work on your own game. So you definitely have to be passionate. Like you were saying, I don't know anybody here who, well, I guess I know a few people. I know very few people who don't love games
Starting point is 01:18:08 and play them a lot on their own just because if you didn't love it, you probably could make more money for less work in a different field. So why would you bother? But if you do really enjoy it, it's a great place to be. Yeah, definitely.
Starting point is 01:18:27 I mean, a lot of it is about, you know, I answer a lot of questions on Quora. And so many questions on Quora are of the format, should I do X or should I do Y to get the best job? As if it's like some kind of optimization problem. Like what, should I take course CS101 or CS102 I can go work at hot startup XYZ? And the reality is you should just follow your passion. And if your passion is emulators, then there's a high likelihood that you will do something that involves that kind of level of detail and things like that.
Starting point is 01:19:04 And so this is no exception. If you find your passion is games, then you will have a much easier time when you do have that crunch time and you have to work those hours, you will have a much easier time reconciling that. And even if you've seen Mickey Mouse with his
Starting point is 01:19:20 head off, you'll still sort of have satisfaction at the end of the day looking at the finished game because you've immersed yourself in that culture. I'm just going to have nightmares when I go to sleep tonight. Zombie headless Mickey Mouse. Thanks. Zombie headless.
Starting point is 01:19:39 Sorry, I interrupted. Someone was going to say something important. Nope. Nope. Okay, cool. So was going to say something important. Nope. Nope. Okay, cool. So, yeah, this is awesome. So we'll definitely, you know, as Dave said, and I'm sure as Florent also believes, you know, Naughty Dog and Ubisoft respectively definitely want to have talented, you know, engineers designers writers things like that and so we'll definitely we'll grab a link from you guys and put it on the uh on the blog um if i'm assuming
Starting point is 01:20:15 you guys have something like careers page jobs page things like that and so we'll definitely give out the link so people are interested can sign up. Yeah, definitely. We do. If you're interested and qualified, go apply. That's exactly how I ended up here. Yeah, definitely. You guys have any last comments? Well,
Starting point is 01:20:37 play games. Make games. It's cool. Yeah, I'll agree with that. I'll let that be the final one. Alright's cool. Yeah, I'll do that. I'll let that be the final one. All right, cool. Well, thanks a lot for coming on the show. We really appreciate it. And super interesting. And yeah, everyone out there,
Starting point is 01:20:55 definitely send us your feedback. If you have any questions for Dave or Floran, I can pass them over. You can just ask on Facebook or on Google+, and we can make sure they're routed to the right person and all of that. As far as one bit of information about the show itself, kind of a bit of meta information on the show,
Starting point is 01:21:17 is we do have a Patreon set up, and so I'll send out the link to that. So somebody just um introduced us to patreon it's or patreon i suppose it's this website where um you can sort of show your craft and then people can kind of subscribe to it and they also have sort of a donation so if you uh if you aren't interested in say the book of the show but you still want to support the show um you can go on this patreon site and uh and sign up and we do really some people have already done that um i don't know how you found us but that's cool um i do appreciate that and that definitely helps keep our we have pretty intense um hosting costs and so that does sort of help us out there
Starting point is 01:22:01 so i do appreciate it and uh thank you guys for all the the comments and for all the support you have. Alright till next time. The intro music is Axo by Binar Pilot. Programming Throwdown is distributed under a Creative Commons Attribution Sharealike 2.0 license. You're free to share, copy, distribute, transmit the work, to remix, adapt the work, but you must provide attribution to Patrick and I and share alike in kind.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.