>> BRIAN JACOBSON: My name is Brian Jacobson.
I made my way to Valve kind of in a slightly circuitous route.
I was not actually a computer programmer in college.
And I was used to-- back in high school--
being able to do programming and get stuff from idea to implementation
in just a few minutes or hours.
I enjoyed that rapid pace of development and seeing my ideas come to life.
>> YAHN BERNIER: My name is Yahn Bernier.
I've been here at Valve for over 16 years.
So I ended up writing, just for fun, a level editor for Quake
called BSP based on binary space partitioning trees.
That was sort of the entree, and eventually Gabe Newell,
who was the founder of Valve, and Mike Harrington sent me an email saying,
software development engineer opportunity.
>> JOHN COOK: My name's John Cook.
I'm a software engineer working at Valve.
I focus on our online system's scaling and architecture.
A friend and I, actually, in university were
working on a game called Team Fortress.
And we just made the game, put it up on the internet.
It was an addition for the game Quake at that time,
so sort of a mod, an extension, of that game.
After that, we ended up getting in contact with Valve
and coming over here.
>> BRIAN JACOBSON: For me, the graphics class
was probably the most applicable course that I took in college for sure.
Trigonometry, linear algebra-- I took a robotics course
that had a bunch of linear algebra kind of baked into it,
and that is one of the keystone math concepts for any 3-D graphics.
It's all about orientation and doing the math of, like I'm looking over at you,
but I want to aim over there, and how do I rotate, and how do I,
you know, how do I figure out where I'm moving or looking?
That is all linear algebra.
YAHN BERNIER: The essence of a first person shooter
is that I look through the gun sites with my eyes, and aim at something,
and pull the trigger, and I want to hit that.
So you have to design your technology to deal with latency.
So John Carmack went back and said, oh, what
I need to do is predict, on the client, the result of sort of my player's
inputs, and just do that and render from where we think he's going to be,
and then let the server come back and fix it for me.
>> JOHN COOK: So when you're thinking about using a game engine to make game,
there's a lot of option-- a lot more options now.
BRIAN JACOBSON: A game engine is kind of the infrastructure
in which you make the game.
It's the thing responsible for drawing the world, for simulating the world,
for playing all the sounds, for helping your game code
figure out what the enemy AIs are going to go do.
JOHN COOK: Usually, the way people would start
is they'd take some amount of that logic and change it, like OK, now
let's just change the rocket launcher to do
200 damage instead of doing 100 damage.
It's a very simple-- like just take some existing piece of gameplay logic
and tweak it to how you like.
BRIAN JACOBSON: The other, the higher level layer,
is usually called game code.
And the game code is usually the thing that's all about the game rules,
like the fact that I have this particular weapon that
works in this particular way or the fact that there's a headcrab monster that
has these particular behaviors.
Those kinds of things are typically defined as game code.
JOHN COOK: And from there, really, I mean
with those kind of pieces and process of iteration,
you can go from something like Quake to something like Half-Life.
>> BRIAN JACOBSON: Half-Life is a sci-fi, first person shooter game.
It's set in a sort of dystopian world.
The first Half-Life was set in this underground research facility called
Black Mesa, and you play the character named Gordon Freeman,
and it was basically about an alien invasion that
was provoked when an experiment went wrong.
And the second game, Half-Life 2 was set about 10 years later,
and basically the aliens have taken over the planet.
And now you, as Gordon Freeman, had to basically rescue
your friend Alex, who you meet, and try to beat back the aliens
and reclaim the planet.
>> JOHN COOK: Certainly projects like Portal 2,
it was just a small team, like five people, working on a game idea.
They found some things they thought were interesting--
could be interesting for a game.
They expand it to 20 people.
They kind of fleshed out those ideas.
You added some more people.
They are, like, OK.
Yeah, now we want a hit.
We're gonna ship on three consoles.
We need a lot more people, like everyone come look at this game.
>> Like it's awesome.
It just needs a bunch of work to get done.
Suddenly, you have half the company working you.
You have 120 people working on this game to get it done.
Obviously, the other projects-- the number of projects
elsewhere contracts, right?
But everyone's super-happy because they know
they're working on this thing that is really awesome.
>> BRIAN JACOBSON: One of the really great things about this job
and this industry in general is that things change all the time.
Like the thing that you're doing this year is
going to be very different from the thing you do the next year.
And so it keeps everything really fresh, actually, and pretty exciting.
You're continually learning new things and doing new kinds of stuff.