1 00:00:00,000 --> 00:00:09,460 2 00:00:09,460 --> 00:00:11,550 >> BRIAN JACOBSON: My name is Brian Jacobson. 3 00:00:11,550 --> 00:00:15,930 I made my way to Valve kind of in a slightly circuitous route. 4 00:00:15,930 --> 00:00:19,210 I was not actually a computer programmer in college. 5 00:00:19,210 --> 00:00:21,120 And I was used to-- back in high school-- 6 00:00:21,120 --> 00:00:24,810 being able to do programming and get stuff from idea to implementation 7 00:00:24,810 --> 00:00:26,830 in just a few minutes or hours. 8 00:00:26,830 --> 00:00:32,439 I enjoyed that rapid pace of development and seeing my ideas come to life. 9 00:00:32,439 --> 00:00:34,290 >> YAHN BERNIER: My name is Yahn Bernier. 10 00:00:34,290 --> 00:00:36,240 I've been here at Valve for over 16 years. 11 00:00:36,240 --> 00:00:39,680 So I ended up writing, just for fun, a level editor for Quake 12 00:00:39,680 --> 00:00:43,100 called BSP based on binary space partitioning trees. 13 00:00:43,100 --> 00:00:46,210 That was sort of the entree, and eventually Gabe Newell, 14 00:00:46,210 --> 00:00:49,980 who was the founder of Valve, and Mike Harrington sent me an email saying, 15 00:00:49,980 --> 00:00:51,770 software development engineer opportunity. 16 00:00:51,770 --> 00:00:53,061 >> JOHN COOK: My name's John Cook. 17 00:00:53,061 --> 00:00:54,820 I'm a software engineer working at Valve. 18 00:00:54,820 --> 00:00:59,610 I focus on our online system's scaling and architecture. 19 00:00:59,610 --> 00:01:01,560 A friend and I, actually, in university were 20 00:01:01,560 --> 00:01:04,170 working on a game called Team Fortress. 21 00:01:04,170 --> 00:01:08,320 And we just made the game, put it up on the internet. 22 00:01:08,320 --> 00:01:10,650 It was an addition for the game Quake at that time, 23 00:01:10,650 --> 00:01:13,120 so sort of a mod, an extension, of that game. 24 00:01:13,120 --> 00:01:16,400 After that, we ended up getting in contact with Valve 25 00:01:16,400 --> 00:01:17,700 and coming over here. 26 00:01:17,700 --> 00:01:19,450 >> BRIAN JACOBSON: For me, the graphics class 27 00:01:19,450 --> 00:01:25,460 was probably the most applicable course that I took in college for sure. 28 00:01:25,460 --> 00:01:29,700 Trigonometry, linear algebra-- I took a robotics course 29 00:01:29,700 --> 00:01:32,900 that had a bunch of linear algebra kind of baked into it, 30 00:01:32,900 --> 00:01:37,530 and that is one of the keystone math concepts for any 3-D graphics. 31 00:01:37,530 --> 00:01:43,180 It's all about orientation and doing the math of, like I'm looking over at you, 32 00:01:43,180 --> 00:01:47,160 but I want to aim over there, and how do I rotate, and how do I, 33 00:01:47,160 --> 00:01:50,100 you know, how do I figure out where I'm moving or looking? 34 00:01:50,100 --> 00:01:52,315 That is all linear algebra. 35 00:01:52,315 --> 00:01:54,440 YAHN BERNIER: The essence of a first person shooter 36 00:01:54,440 --> 00:01:58,325 is that I look through the gun sites with my eyes, and aim at something, 37 00:01:58,325 --> 00:02:00,200 and pull the trigger, and I want to hit that. 38 00:02:00,200 --> 00:02:04,330 So you have to design your technology to deal with latency. 39 00:02:04,330 --> 00:02:06,750 So John Carmack went back and said, oh, what 40 00:02:06,750 --> 00:02:12,650 I need to do is predict, on the client, the result of sort of my player's 41 00:02:12,650 --> 00:02:16,814 inputs, and just do that and render from where we think he's going to be, 42 00:02:16,814 --> 00:02:18,980 and then let the server come back and fix it for me. 43 00:02:18,980 --> 00:02:21,970 >> JOHN COOK: So when you're thinking about using a game engine to make game, 44 00:02:21,970 --> 00:02:24,011 there's a lot of option-- a lot more options now. 45 00:02:24,011 --> 00:02:27,185 BRIAN JACOBSON: A game engine is kind of the infrastructure 46 00:02:27,185 --> 00:02:28,310 in which you make the game. 47 00:02:28,310 --> 00:02:32,060 It's the thing responsible for drawing the world, for simulating the world, 48 00:02:32,060 --> 00:02:36,450 for playing all the sounds, for helping your game code 49 00:02:36,450 --> 00:02:38,834 figure out what the enemy AIs are going to go do. 50 00:02:38,834 --> 00:02:40,750 JOHN COOK: Usually, the way people would start 51 00:02:40,750 --> 00:02:44,279 is they'd take some amount of that logic and change it, like OK, now 52 00:02:44,279 --> 00:02:46,070 let's just change the rocket launcher to do 53 00:02:46,070 --> 00:02:49,840 200 damage instead of doing 100 damage. 54 00:02:49,840 --> 00:02:54,080 It's a very simple-- like just take some existing piece of gameplay logic 55 00:02:54,080 --> 00:02:55,487 and tweak it to how you like. 56 00:02:55,487 --> 00:02:57,570 BRIAN JACOBSON: The other, the higher level layer, 57 00:02:57,570 --> 00:02:59,340 is usually called game code. 58 00:02:59,340 --> 00:03:02,730 And the game code is usually the thing that's all about the game rules, 59 00:03:02,730 --> 00:03:06,960 like the fact that I have this particular weapon that 60 00:03:06,960 --> 00:03:10,990 works in this particular way or the fact that there's a headcrab monster that 61 00:03:10,990 --> 00:03:12,640 has these particular behaviors. 62 00:03:12,640 --> 00:03:15,982 Those kinds of things are typically defined as game code. 63 00:03:15,982 --> 00:03:17,690 JOHN COOK: And from there, really, I mean 64 00:03:17,690 --> 00:03:20,190 with those kind of pieces and process of iteration, 65 00:03:20,190 --> 00:03:23,100 you can go from something like Quake to something like Half-Life. 66 00:03:23,100 --> 00:03:27,310 >> BRIAN JACOBSON: Half-Life is a sci-fi, first person shooter game. 67 00:03:27,310 --> 00:03:30,850 It's set in a sort of dystopian world. 68 00:03:30,850 --> 00:03:35,840 The first Half-Life was set in this underground research facility called 69 00:03:35,840 --> 00:03:39,450 Black Mesa, and you play the character named Gordon Freeman, 70 00:03:39,450 --> 00:03:42,640 and it was basically about an alien invasion that 71 00:03:42,640 --> 00:03:45,510 was provoked when an experiment went wrong. 72 00:03:45,510 --> 00:03:50,230 And the second game, Half-Life 2 was set about 10 years later, 73 00:03:50,230 --> 00:03:53,450 and basically the aliens have taken over the planet. 74 00:03:53,450 --> 00:03:58,390 And now you, as Gordon Freeman, had to basically rescue 75 00:03:58,390 --> 00:04:01,760 your friend Alex, who you meet, and try to beat back the aliens 76 00:04:01,760 --> 00:04:03,460 and reclaim the planet. 77 00:04:03,460 --> 00:04:05,540 >> JOHN COOK: Certainly projects like Portal 2, 78 00:04:05,540 --> 00:04:10,190 it was just a small team, like five people, working on a game idea. 79 00:04:10,190 --> 00:04:12,450 They found some things they thought were interesting-- 80 00:04:12,450 --> 00:04:13,783 could be interesting for a game. 81 00:04:13,783 --> 00:04:15,040 They expand it to 20 people. 82 00:04:15,040 --> 00:04:16,865 They kind of fleshed out those ideas. 83 00:04:16,865 --> 00:04:17,990 You added some more people. 84 00:04:17,990 --> 00:04:18,550 They are, like, OK. 85 00:04:18,550 --> 00:04:19,550 Yeah, now we want a hit. 86 00:04:19,550 --> 00:04:21,304 We're gonna ship on three consoles. 87 00:04:21,304 --> 00:04:23,970 We need a lot more people, like everyone come look at this game. 88 00:04:23,970 --> 00:04:24,720 >> Like it's awesome. 89 00:04:24,720 --> 00:04:26,700 It just needs a bunch of work to get done. 90 00:04:26,700 --> 00:04:29,470 Suddenly, you have half the company working you. 91 00:04:29,470 --> 00:04:32,610 You have 120 people working on this game to get it done. 92 00:04:32,610 --> 00:04:35,290 Obviously, the other projects-- the number of projects 93 00:04:35,290 --> 00:04:36,680 elsewhere contracts, right? 94 00:04:36,680 --> 00:04:38,812 But everyone's super-happy because they know 95 00:04:38,812 --> 00:04:41,020 they're working on this thing that is really awesome. 96 00:04:41,020 --> 00:04:43,561 >> BRIAN JACOBSON: One of the really great things about this job 97 00:04:43,561 --> 00:04:46,390 and this industry in general is that things change all the time. 98 00:04:46,390 --> 00:04:48,000 Like the thing that you're doing this year is 99 00:04:48,000 --> 00:04:50,625 going to be very different from the thing you do the next year. 100 00:04:50,625 --> 00:04:54,030 And so it keeps everything really fresh, actually, and pretty exciting. 101 00:04:54,030 --> 00:04:58,380 You're continually learning new things and doing new kinds of stuff. 102 00:04:58,380 --> 00:04:59,328