Programming Throwdown - Inside Video Game Programming
Episode Date: August 11, 2015This 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)
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.
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?
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
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.
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
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
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.
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.
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
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.
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
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
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.
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?
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.
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
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
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.
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
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
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.
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
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
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.
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
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
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
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.
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?
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
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
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
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
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.
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
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.
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
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.
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.
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,
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
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.
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.
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
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.
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.
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
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.
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.
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
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
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.
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,
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.
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,
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,
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,
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.
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
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,
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.
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.
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
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
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.
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
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
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
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
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.
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.
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
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.
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
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.
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
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.
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
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
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.
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.
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
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
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
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,
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
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
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,
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
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,
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.
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
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
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
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.
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.
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.
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.
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.
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
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
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
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
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
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
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
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.
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
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.
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,
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
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
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
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
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
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
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
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.
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%
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,
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.
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
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.
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,
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,
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,
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
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
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
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
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.
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.
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
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
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
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.
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
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,
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
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,
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
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.
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.
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
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.
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
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,
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,
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,
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
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.