1 00:00:00,060 --> 00:00:02,500 The following content is provided under a Creative 2 00:00:02,500 --> 00:00:04,030 Commons license. 3 00:00:04,030 --> 00:00:06,360 Your support will help MIT OpenCourseWare 4 00:00:06,360 --> 00:00:10,730 continue to offer high quality educational resources for free. 5 00:00:10,730 --> 00:00:13,330 To make a donation or view additional materials 6 00:00:13,330 --> 00:00:17,236 from hundreds of MIT courses, visit MIT OpenCourseWare 7 00:00:17,236 --> 00:00:17,861 at ocw.mit.edu. 8 00:00:21,560 --> 00:00:24,340 PROFESSOR: All right, so let's go ahead and get started. 9 00:00:24,340 --> 00:00:28,450 A couple quick announcements before we jump into the day. 10 00:00:28,450 --> 00:00:30,700 We had a couple questions about what 11 00:00:30,700 --> 00:00:32,200 happens if one of my team members 12 00:00:32,200 --> 00:00:35,655 dropped out of the class for this first project? 13 00:00:35,655 --> 00:00:36,530 Has anybody had that? 14 00:00:39,040 --> 00:00:42,500 OK, so if somebody drops out of your team 15 00:00:42,500 --> 00:00:47,320 at any point in next first two projects, that's OK. 16 00:00:47,320 --> 00:00:50,560 You're not going to be penalized for having fewer people. 17 00:00:50,560 --> 00:00:53,880 You're not going to be propped for having fewer people. 18 00:00:53,880 --> 00:00:55,900 It's basically we're not necessarily 19 00:00:55,900 --> 00:00:58,780 grading the quality of the games for this first project 20 00:00:58,780 --> 00:00:59,666 right now. 21 00:00:59,666 --> 00:01:01,290 Double check the project one assignment 22 00:01:01,290 --> 00:01:03,500 to see what the grading rubric is for that. 23 00:01:03,500 --> 00:01:06,770 What we are checking is are you doing iteration? 24 00:01:06,770 --> 00:01:08,660 Have you tested the game multiple times? 25 00:01:08,660 --> 00:01:10,650 Do you have multiple versions of the game? 26 00:01:10,650 --> 00:01:13,170 So that's basically reflected in your design change log 27 00:01:13,170 --> 00:01:15,050 that you're doing for this class. 28 00:01:15,050 --> 00:01:17,270 There's also an individual write up. 29 00:01:17,270 --> 00:01:19,750 So we're asking you to write a one page 30 00:01:19,750 --> 00:01:22,660 paper about your experience with the requirements for that 31 00:01:22,660 --> 00:01:24,460 are in the assignment. 32 00:01:24,460 --> 00:01:28,404 We want to know what happened when your teammate dropped out. 33 00:01:28,404 --> 00:01:29,320 Did it feel different? 34 00:01:29,320 --> 00:01:31,450 If you had two people versus three people, 35 00:01:31,450 --> 00:01:33,290 do you feel like you had fewer ideas? 36 00:01:33,290 --> 00:01:35,373 That's actually a really interesting thing for you 37 00:01:35,373 --> 00:01:36,210 to understand about. 38 00:01:36,210 --> 00:01:38,584 When you're coming together and working on group projects 39 00:01:38,584 --> 00:01:40,390 and you're doing collaborative projects, 40 00:01:40,390 --> 00:01:43,920 what does team size do to the kind of ideas you have, 41 00:01:43,920 --> 00:01:46,170 the number of ideas you have, and the quality of ideas 42 00:01:46,170 --> 00:01:47,646 you have? 43 00:01:47,646 --> 00:01:49,145 In all the later projects, your team 44 00:01:49,145 --> 00:01:51,970 is going to be big enough that dropping one member 45 00:01:51,970 --> 00:01:53,550 isn't going to be huge difference. 46 00:01:53,550 --> 00:01:54,970 Dropping two might. 47 00:01:54,970 --> 00:01:57,377 So if that happens, just let us know about it. 48 00:01:57,377 --> 00:01:58,460 We'll talk you through it. 49 00:01:58,460 --> 00:01:59,230 It'll be OK. 50 00:01:59,230 --> 00:02:01,094 We'll get through it. 51 00:02:01,094 --> 00:02:02,760 ANDREW GRANT: If I may, this is actually 52 00:02:02,760 --> 00:02:04,690 part of the experience of working on a team. 53 00:02:04,690 --> 00:02:09,744 Sometimes you lose people, and sometimes that's a problem. 54 00:02:09,744 --> 00:02:11,410 I like to call it the hit by a bus test. 55 00:02:11,410 --> 00:02:14,332 If your team can't stand losing one person-- any one person-- 56 00:02:14,332 --> 00:02:16,290 then you have to plan around that and make sure 57 00:02:16,290 --> 00:02:17,784 you can handle it. 58 00:02:17,784 --> 00:02:19,950 Other people like to call it the winning the lottery 59 00:02:19,950 --> 00:02:22,866 test because that's nicer, but basically one person 60 00:02:22,866 --> 00:02:23,990 gets taken out of equation. 61 00:02:23,990 --> 00:02:26,448 You do have to adapt to that and be ready for it to happen. 62 00:02:26,448 --> 00:02:30,000 Again, on this project, it's a relatively-- the teamwork 63 00:02:30,000 --> 00:02:32,640 is easier, because it's a simpler deliverable 64 00:02:32,640 --> 00:02:33,557 and a simpler project. 65 00:02:33,557 --> 00:02:35,306 PROFESSOR: But things are going to come up 66 00:02:35,306 --> 00:02:37,552 throughout the semester-- somebody falling sick, 67 00:02:37,552 --> 00:02:39,010 somebody going away for interviews, 68 00:02:39,010 --> 00:02:41,079 especially seniors going for job interviews. 69 00:02:41,079 --> 00:02:42,620 Those are things you're going to plan 70 00:02:42,620 --> 00:02:46,012 for to react to and have alternate plans, just in case 71 00:02:46,012 --> 00:02:47,970 something like that happens during the project. 72 00:02:47,970 --> 00:02:51,470 So just be aware of that throughout the class. 73 00:02:51,470 --> 00:02:53,180 So what are we doing today? 74 00:02:53,180 --> 00:02:54,900 Today's a very, very busy day that's 75 00:02:54,900 --> 00:02:58,210 going to involve lots of movement on your part. 76 00:02:58,210 --> 00:03:00,715 We're going to do a workshop on version control 77 00:03:00,715 --> 00:03:04,250 that Drew is going to walk you through. 78 00:03:04,250 --> 00:03:07,220 We're going to go into discussion groups 79 00:03:07,220 --> 00:03:09,170 and talk about the game engine tutorials 80 00:03:09,170 --> 00:03:13,120 that you all completed before today, 81 00:03:13,120 --> 00:03:15,720 and they'll be a mechanism for talking about that. 82 00:03:15,720 --> 00:03:18,500 Basically people talking about forming groups 83 00:03:18,500 --> 00:03:21,460 in the same project and then later on forming groups where 84 00:03:21,460 --> 00:03:23,359 we can have people compare-- somebody 85 00:03:23,359 --> 00:03:25,900 who worked on Unity talking to somebody who worked on Flixel. 86 00:03:25,900 --> 00:03:28,030 Things like that. 87 00:03:28,030 --> 00:03:30,815 After that, we're going to have project one play test. 88 00:03:30,815 --> 00:03:32,690 So this is going to be an informal play test. 89 00:03:32,690 --> 00:03:34,230 Basically it's a check. 90 00:03:34,230 --> 00:03:36,320 Can you play your game today? 91 00:03:36,320 --> 00:03:38,920 If you can't, then play what you've 92 00:03:38,920 --> 00:03:41,210 got, because you're going to be forced to play it. 93 00:03:41,210 --> 00:03:42,950 Maybe you have some rules written down. 94 00:03:42,950 --> 00:03:43,780 Great. 95 00:03:43,780 --> 00:03:46,030 Just act them out in that 15 minute block we give 96 00:03:46,030 --> 00:03:47,220 you to act out those rules. 97 00:03:47,220 --> 00:03:48,803 And maybe within that 15 minute block, 98 00:03:48,803 --> 00:03:50,530 come up with a few different rules 99 00:03:50,530 --> 00:03:53,040 or a few different pieces. 100 00:03:53,040 --> 00:03:54,760 So that's going to happen, and we'll 101 00:03:54,760 --> 00:03:56,510 go through how that's going to work later. 102 00:03:56,510 --> 00:03:58,051 And then at the end of the day, we're 103 00:03:58,051 --> 00:03:59,330 going to do another workshop. 104 00:03:59,330 --> 00:04:01,080 Sara is going to lead us on that-- talking 105 00:04:01,080 --> 00:04:02,350 about vision statements. 106 00:04:02,350 --> 00:04:04,920 So this is a tool that we use to help 107 00:04:04,920 --> 00:04:09,300 large teams understand what it is we're actually creating. 108 00:04:09,300 --> 00:04:12,790 So with that I'm going to switch slides and bring it over 109 00:04:12,790 --> 00:04:13,902 to drew. 110 00:04:13,902 --> 00:04:15,360 ANDREW GRANT: So the first thing, I 111 00:04:15,360 --> 00:04:18,470 see a lot of laptops, which is pretty awesome. 112 00:04:18,470 --> 00:04:20,649 How many of you brought a computer 113 00:04:20,649 --> 00:04:26,730 that actually has the code you used for you tutorials on it? 114 00:04:26,730 --> 00:04:28,040 That is more than half. 115 00:04:28,040 --> 00:04:28,540 Awesome. 116 00:04:28,540 --> 00:04:33,190 So you get the short version of presentation, not the long one, 117 00:04:33,190 --> 00:04:35,660 as soon as we get it up there and going. 118 00:04:35,660 --> 00:04:36,367 Let's see. 119 00:04:36,367 --> 00:04:37,200 Any other questions? 120 00:04:37,200 --> 00:04:40,330 Who here has used version control or source control 121 00:04:40,330 --> 00:04:41,650 before. 122 00:04:41,650 --> 00:04:42,210 Most of you. 123 00:04:42,210 --> 00:04:42,820 Fascinating. 124 00:04:42,820 --> 00:04:44,195 Who here feels confident that you 125 00:04:44,195 --> 00:04:45,770 know why you used version control, 126 00:04:45,770 --> 00:04:47,478 and that it was awesome, and you're cool, 127 00:04:47,478 --> 00:04:49,680 and you're good at this? 128 00:04:49,680 --> 00:04:51,170 OK, the hands went up and started 129 00:04:51,170 --> 00:04:52,630 to come down slowly, which would make sense. 130 00:04:52,630 --> 00:04:54,046 That's what they should have done. 131 00:04:54,046 --> 00:04:54,921 [LAUGHTER] 132 00:04:54,921 --> 00:04:56,420 All right, so I'm not actually going 133 00:04:56,420 --> 00:04:58,840 to talk about the nitty gritty details of exactly which 134 00:04:58,840 --> 00:05:00,390 commands you type, because there's 135 00:05:00,390 --> 00:05:02,140 a bunch different version control systems. 136 00:05:02,140 --> 00:05:05,319 They all work very similarly, but you're 137 00:05:05,319 --> 00:05:07,360 going to basically need to read the documentation 138 00:05:07,360 --> 00:05:09,190 on the particular one that you're using. 139 00:05:09,190 --> 00:05:11,160 I recommend today, if you're familiar with one, 140 00:05:11,160 --> 00:05:13,390 that you stick with that if possible, 141 00:05:13,390 --> 00:05:17,830 but don't worry about it if you can't. 142 00:05:17,830 --> 00:05:18,590 So let's see. 143 00:05:18,590 --> 00:05:20,340 I'm going to give a high level description 144 00:05:20,340 --> 00:05:23,180 of what is revision control. 145 00:05:23,180 --> 00:05:25,000 I'm going to use different words for it. 146 00:05:25,000 --> 00:05:29,460 Source control, revision control are the big ones. 147 00:05:29,460 --> 00:05:32,690 The basic notion is that-- and this is a very simple notion-- 148 00:05:32,690 --> 00:05:37,360 that you've got one copy of the source on your local machine, 149 00:05:37,360 --> 00:05:40,610 and you've got one copy of the source somewhere else, 150 00:05:40,610 --> 00:05:42,772 and that copy out there is the perfect copy. 151 00:05:42,772 --> 00:05:44,730 That's the true copy of what you're working on. 152 00:05:44,730 --> 00:05:47,680 That's the platonic ideal of your project, 153 00:05:47,680 --> 00:05:50,460 and your job is to copy files down from it, 154 00:05:50,460 --> 00:05:53,440 change them, and copy them back up to that one. 155 00:05:53,440 --> 00:05:56,590 Not much going on there, right? 156 00:05:56,590 --> 00:05:57,772 All right. 157 00:05:57,772 --> 00:05:59,230 I'll get into more details on that. 158 00:05:59,230 --> 00:06:02,380 So we started with a whole bunch of words 159 00:06:02,380 --> 00:06:04,600 that go along with this topic. 160 00:06:04,600 --> 00:06:10,010 Revision control system, RCS, is often used as a generic term. 161 00:06:10,010 --> 00:06:11,980 It's also a specific piece of software 162 00:06:11,980 --> 00:06:15,672 that you probably won't use because it's really old. 163 00:06:15,672 --> 00:06:17,505 Source control, revision control, and you'll 164 00:06:17,505 --> 00:06:23,670 also see SCM as a common TLA for source control management. 165 00:06:23,670 --> 00:06:26,600 CVS, the concurrent version system, is also older, 166 00:06:26,600 --> 00:06:28,470 but one you might actually see used. 167 00:06:28,470 --> 00:06:30,680 It's mostly command line only. 168 00:06:30,680 --> 00:06:32,969 SVN is a more recent open source version of CVS. 169 00:06:32,969 --> 00:06:34,260 I think CVS may have been, too. 170 00:06:34,260 --> 00:06:35,301 I'm not sure on that one. 171 00:06:35,301 --> 00:06:38,530 SVN is more usable, and I highly recommend it. 172 00:06:38,530 --> 00:06:41,720 Perforce is one that's used quite often in the games 173 00:06:41,720 --> 00:06:44,054 industry, and then you're going to see 174 00:06:44,054 --> 00:06:45,470 Git and Mercurial, which are often 175 00:06:45,470 --> 00:06:46,960 mentioned in the same breath. 176 00:06:46,960 --> 00:06:48,900 They're both what's called distributed source control. 177 00:06:48,900 --> 00:06:50,691 We'll get to that, but they're interface is 178 00:06:50,691 --> 00:06:54,774 very similar to all of the above actually. 179 00:06:54,774 --> 00:06:56,690 Almost all have a command line interface where 180 00:06:56,690 --> 00:06:58,780 you can do it everything from command line, and most of them 181 00:06:58,780 --> 00:07:00,370 have a GUI that you can use as well, 182 00:07:00,370 --> 00:07:03,050 but you're going to see a bunch of different words used 183 00:07:03,050 --> 00:07:05,010 to talk about the stuff. 184 00:07:05,010 --> 00:07:07,724 So again, in its most basic form, you've got a server. 185 00:07:07,724 --> 00:07:08,640 You've got your local. 186 00:07:08,640 --> 00:07:10,310 You copy stuff back and forth. 187 00:07:10,310 --> 00:07:12,332 Pretty basic. 188 00:07:12,332 --> 00:07:14,790 And it's a little bit easier to see why you might want that 189 00:07:14,790 --> 00:07:16,970 when you've got more than one person on the team. 190 00:07:16,970 --> 00:07:18,730 It's a really good way to make sure your files are 191 00:07:18,730 --> 00:07:19,271 synchronized. 192 00:07:21,990 --> 00:07:24,244 It's even more important the bigger your team. 193 00:07:24,244 --> 00:07:25,660 So what's really, really important 194 00:07:25,660 --> 00:07:29,730 is that that server copy of your code is useful. 195 00:07:29,730 --> 00:07:32,680 So you want to make sure that you are only 196 00:07:32,680 --> 00:07:36,070 contributing to that central repository of code 197 00:07:36,070 --> 00:07:36,880 the useful pieces. 198 00:07:39,670 --> 00:07:42,690 Now, what we really want to do is 199 00:07:42,690 --> 00:07:44,370 that central version of the code is 200 00:07:44,370 --> 00:07:46,220 sort of what's considered, as I mentioned, 201 00:07:46,220 --> 00:07:46,940 ideal version of your code. 202 00:07:46,940 --> 00:07:47,980 It's authoritative. 203 00:07:47,980 --> 00:07:51,210 It's the one you can trust. 204 00:07:51,210 --> 00:07:53,420 So that actually becomes a little bit more 205 00:07:53,420 --> 00:07:54,587 than a backup system, right? 206 00:07:54,587 --> 00:07:56,044 So a backup system is quite useful. 207 00:07:56,044 --> 00:07:57,930 If you lose something or you make a mistake, 208 00:07:57,930 --> 00:07:59,250 you want to be able to revert to a previous version 209 00:07:59,250 --> 00:08:01,458 of your code, and that is certainly one of the things 210 00:08:01,458 --> 00:08:04,090 that source control does for you. 211 00:08:04,090 --> 00:08:06,690 And we'll also talk about how it's a way to share your code, 212 00:08:06,690 --> 00:08:08,481 but it's actually more important than that. 213 00:08:08,481 --> 00:08:10,354 So the history of your project is 214 00:08:10,354 --> 00:08:12,020 one of the big things you get out of it. 215 00:08:12,020 --> 00:08:15,527 When you submit your files, which can be source code 216 00:08:15,527 --> 00:08:16,610 file-- it could be images. 217 00:08:16,610 --> 00:08:17,540 It could be anything. 218 00:08:17,540 --> 00:08:19,420 When you submit them, you should include 219 00:08:19,420 --> 00:08:22,010 a comment about what the heck you've done. 220 00:08:22,010 --> 00:08:24,704 And this is one of the things I find new programmers have 221 00:08:24,704 --> 00:08:25,620 the hardest time with. 222 00:08:25,620 --> 00:08:28,230 In fact, I know plenty of old programmers that can't do it, 223 00:08:28,230 --> 00:08:30,900 but really it's useful, and the reason it's useful 224 00:08:30,900 --> 00:08:32,949 is all because of this. 225 00:08:32,949 --> 00:08:34,740 We're going to talk about different methods 226 00:08:34,740 --> 00:08:36,809 of communication throughout this course, 227 00:08:36,809 --> 00:08:40,195 and I've talked about-- or I will talk about the fact 228 00:08:40,195 --> 00:08:42,070 that your source code is a way to communicate 229 00:08:42,070 --> 00:08:43,000 with other people. 230 00:08:43,000 --> 00:08:45,820 But it turns out your comment log in your version control 231 00:08:45,820 --> 00:08:48,290 system is also great way to communicate with your team. 232 00:08:48,290 --> 00:08:51,270 So for example, if you submit a whole bunch of files 233 00:08:51,270 --> 00:08:53,681 and it's not obvious what that did to your game, 234 00:08:53,681 --> 00:08:55,680 that comment can tell everyone else on your team 235 00:08:55,680 --> 00:08:56,860 what just happened. 236 00:08:56,860 --> 00:09:00,000 Maybe you rewrote the entire AI so that the bad guys now 237 00:09:00,000 --> 00:09:01,780 run away from the player. 238 00:09:01,780 --> 00:09:03,655 And it may be that someone else on your team 239 00:09:03,655 --> 00:09:05,960 is trying to figure out why are the bad guys' AI broken now? 240 00:09:05,960 --> 00:09:07,060 And the answer is it's not broken. 241 00:09:07,060 --> 00:09:08,685 They're just doing something different. 242 00:09:08,685 --> 00:09:10,727 And when they do get that code from the server, 243 00:09:10,727 --> 00:09:13,060 they're going to see that comment and say, oh, I get it. 244 00:09:13,060 --> 00:09:14,810 The AI changed. 245 00:09:14,810 --> 00:09:17,220 So if you fail to report that in a Scrum-- or maybe 246 00:09:17,220 --> 00:09:18,314 you don't have a Scrum because you did it 247 00:09:18,314 --> 00:09:19,740 in the middle of the night-- this 248 00:09:19,740 --> 00:09:22,880 is a great way to communicate with your team. 249 00:09:22,880 --> 00:09:25,560 Even more than that, that history is also really useful. 250 00:09:25,560 --> 00:09:27,200 Let's say you check in this code that 251 00:09:27,200 --> 00:09:30,627 causes bad guys to run away, and then a couple days later you 252 00:09:30,627 --> 00:09:32,460 find out that there's some problem in the AI 253 00:09:32,460 --> 00:09:35,020 where things actually crash horribly if the game sits there 254 00:09:35,020 --> 00:09:36,870 for an hour. 255 00:09:36,870 --> 00:09:38,799 Well, where do you begin looking for that bug? 256 00:09:38,799 --> 00:09:40,340 You may not know that it's in the AI. 257 00:09:40,340 --> 00:09:43,570 You may just have some clues, but you 258 00:09:43,570 --> 00:09:45,484 know that it changed in the last two days. 259 00:09:45,484 --> 00:09:46,400 This behavior started. 260 00:09:46,400 --> 00:09:48,060 So you can look at the log and say, 261 00:09:48,060 --> 00:09:49,874 what happened in the last two days? 262 00:09:49,874 --> 00:09:51,790 And someone further discovers that, well, it's 263 00:09:51,790 --> 00:09:53,520 crashing somewhere in AI. 264 00:09:53,520 --> 00:09:55,789 Then you can have a hint that it's in the AI system, 265 00:09:55,789 --> 00:09:58,330 but more than that, you go to the exact last change in the AI 266 00:09:58,330 --> 00:10:01,400 system and look at those files, and that's probably 267 00:10:01,400 --> 00:10:02,860 where your bug is. 268 00:10:02,860 --> 00:10:05,240 That's pretty handy. 269 00:10:05,240 --> 00:10:07,580 And let's say that you do something really, really 270 00:10:07,580 --> 00:10:08,200 horrible. 271 00:10:08,200 --> 00:10:09,985 You also get an undo button out of this. 272 00:10:09,985 --> 00:10:11,110 You can say, you know what? 273 00:10:11,110 --> 00:10:13,860 That version two days ago-- let's go back to that. 274 00:10:13,860 --> 00:10:15,820 That's better than what we have right now. 275 00:10:15,820 --> 00:10:17,737 You don't often do that, but it is really nice 276 00:10:17,737 --> 00:10:19,945 to have that kind of security, especially when you're 277 00:10:19,945 --> 00:10:21,220 working in your local version. 278 00:10:21,220 --> 00:10:22,917 Let's say you're trying to find a bug. 279 00:10:22,917 --> 00:10:25,500 You need to change 15 files, and putting into debug statements 280 00:10:25,500 --> 00:10:27,870 everywhere to figure out what the heck's going on. 281 00:10:27,870 --> 00:10:29,600 And then you find the bug finally, 282 00:10:29,600 --> 00:10:32,300 and you realize it's a one line change. 283 00:10:32,300 --> 00:10:35,010 Well, it's easier just to revert back to the server version 284 00:10:35,010 --> 00:10:37,135 and make that one line change than to make sure you 285 00:10:37,135 --> 00:10:38,510 undo every little piece. 286 00:10:38,510 --> 00:10:40,290 Let the computer be your memory. 287 00:10:40,290 --> 00:10:41,860 Let the computer be your undo button. 288 00:10:41,860 --> 00:10:43,290 You don't need to rely on knowing 289 00:10:43,290 --> 00:10:44,289 which files you changed. 290 00:10:44,289 --> 00:10:46,760 It will tell you. 291 00:10:46,760 --> 00:10:50,139 And this is the cool thing that is kind of scary, but pretty 292 00:10:50,139 --> 00:10:52,180 awesome-- is you can actually simultaneously edit 293 00:10:52,180 --> 00:10:56,550 the same files if they are text files. 294 00:10:56,550 --> 00:10:58,790 This involves a merge process afterwards 295 00:10:58,790 --> 00:11:00,494 which is a little bit frightening 296 00:11:00,494 --> 00:11:01,910 the first several times you do it, 297 00:11:01,910 --> 00:11:04,204 but actually the tools are pretty good. 298 00:11:04,204 --> 00:11:06,620 As long as you're not modifying the same line of the file, 299 00:11:06,620 --> 00:11:08,700 it's pretty good about figuring what should happen, but you do 300 00:11:08,700 --> 00:11:09,990 need to manually check it with your eyes 301 00:11:09,990 --> 00:11:11,730 to verify it didn't do anything stupid, 302 00:11:11,730 --> 00:11:13,355 but it's actually pretty common to work 303 00:11:13,355 --> 00:11:15,490 to be able to work with same file with two people 304 00:11:15,490 --> 00:11:17,340 and actually have it work out OK. 305 00:11:17,340 --> 00:11:20,150 The exception to that is extremely complicated text 306 00:11:20,150 --> 00:11:22,850 files or binary files-- you can't merge changes 307 00:11:22,850 --> 00:11:23,990 to a PNG of GIF. 308 00:11:23,990 --> 00:11:28,130 That doesn't make sense, at least on the file level. 309 00:11:28,130 --> 00:11:30,950 And a lot of the data files in Unity, 310 00:11:30,950 --> 00:11:33,284 especially the scene files and prefab files, 311 00:11:33,284 --> 00:11:34,950 are going to be too complicated probably 312 00:11:34,950 --> 00:11:36,910 for you to actually manage to emerge. 313 00:11:36,910 --> 00:11:37,950 So for those, you need to be a little bit more 314 00:11:37,950 --> 00:11:40,550 careful about it, but it's actually a really useful tool 315 00:11:40,550 --> 00:11:44,040 to lean on that. 316 00:11:44,040 --> 00:11:46,630 So we're going to talk about the various operations very, 317 00:11:46,630 --> 00:11:48,809 very quickly. 318 00:11:48,809 --> 00:11:50,350 When you copy things from the server, 319 00:11:50,350 --> 00:11:53,570 different source control systems will call it different things. 320 00:11:53,570 --> 00:11:56,300 You're going to see the term get to mean pull the files down 321 00:11:56,300 --> 00:11:57,540 from the server. 322 00:11:57,540 --> 00:11:59,900 Update, pull, and checkout in different systems 323 00:11:59,900 --> 00:12:03,070 will mean that same thing-- copy files from the server. 324 00:12:03,070 --> 00:12:05,160 I also have in there the word revert, 325 00:12:05,160 --> 00:12:07,026 which is kind of a fancy special case. 326 00:12:07,026 --> 00:12:08,650 When I said you can undo your changes-- 327 00:12:08,650 --> 00:12:09,565 you've got a whole bunch of files changed, 328 00:12:09,565 --> 00:12:11,170 and you don't like those changes-- 329 00:12:11,170 --> 00:12:12,980 you can revert to the server version, which 330 00:12:12,980 --> 00:12:15,800 is-- under the covers, what's really going on there is you're 331 00:12:15,800 --> 00:12:17,730 copying down from the server, but you'll 332 00:12:17,730 --> 00:12:19,688 call that revert because it's going to ask you, 333 00:12:19,688 --> 00:12:21,260 wait a minute, you changed that file. 334 00:12:21,260 --> 00:12:23,480 Are you sure you really want to wipe that out? 335 00:12:23,480 --> 00:12:25,330 And at that point, you should say yes or no 336 00:12:25,330 --> 00:12:27,140 depending on how sure you are that you really 337 00:12:27,140 --> 00:12:27,806 want to do that. 338 00:12:30,270 --> 00:12:32,140 Similarly, when you have decided that you've 339 00:12:32,140 --> 00:12:33,580 finished with your changes locally 340 00:12:33,580 --> 00:12:36,121 and you want to copy them out to the server for everyone else 341 00:12:36,121 --> 00:12:40,500 to see, that's going to be called submit, commit, put, 342 00:12:40,500 --> 00:12:41,852 push or check in. 343 00:12:41,852 --> 00:12:44,060 Generally speaking, people talk about that copying up 344 00:12:44,060 --> 00:12:47,300 to the server directionally. 345 00:12:47,300 --> 00:12:50,840 The reason they use some fancy words like commit 346 00:12:50,840 --> 00:12:53,490 is that they want you to realize that this is not-- I'm 347 00:12:53,490 --> 00:12:54,970 just copying a file. 348 00:12:54,970 --> 00:12:57,170 You're copying a file for everyone to see. 349 00:12:57,170 --> 00:12:59,560 So you want to ensure that your changes are good. 350 00:13:02,940 --> 00:13:03,841 This one's easier. 351 00:13:03,841 --> 00:13:06,090 If you want to find out the status of what's going on, 352 00:13:06,090 --> 00:13:10,255 almost all the source controls use the word status for that. 353 00:13:10,255 --> 00:13:12,630 But basically what you can do is you can say things like, 354 00:13:12,630 --> 00:13:14,004 so I've changed a bunch of files, 355 00:13:14,004 --> 00:13:15,439 and I forget what I've changed. 356 00:13:15,439 --> 00:13:16,730 I'm sure there's a lot of them. 357 00:13:16,730 --> 00:13:18,730 You can actually ask your source control system, 358 00:13:18,730 --> 00:13:19,760 what did I change? 359 00:13:19,760 --> 00:13:22,420 And it'll say, well, these five files have changed, 360 00:13:22,420 --> 00:13:26,090 and in fact, you can even get more information from that 361 00:13:26,090 --> 00:13:29,940 if you want to compare what those actual changes are. 362 00:13:29,940 --> 00:13:33,560 And diff is the term for that. 363 00:13:33,560 --> 00:13:36,840 Locking files so no one else can change them is not often used 364 00:13:36,840 --> 00:13:40,012 in source code, but it's very useful 365 00:13:40,012 --> 00:13:41,470 for-- as I was talking about, there 366 00:13:41,470 --> 00:13:43,120 are some files that are so complicated that it can't 367 00:13:43,120 --> 00:13:44,650 automatically merge them for you, 368 00:13:44,650 --> 00:13:46,290 and the binary files as well. 369 00:13:46,290 --> 00:13:49,200 You may find that some source control systems don't 370 00:13:49,200 --> 00:13:51,690 automatically lock these for you, and so in that case, 371 00:13:51,690 --> 00:13:53,665 you might want to make as your team policy 372 00:13:53,665 --> 00:13:56,040 that you want to lock the file so that no one else messes 373 00:13:56,040 --> 00:13:56,630 with it. 374 00:13:56,630 --> 00:13:59,070 So again, I'll go back to Unity as an example. 375 00:13:59,070 --> 00:14:01,540 If you're changing the main scene file for your game 376 00:14:01,540 --> 00:14:04,417 and it's this complicated gigantic XML thing, 377 00:14:04,417 --> 00:14:06,500 you might lock that file so no one else changes it 378 00:14:06,500 --> 00:14:07,624 while you're working on it. 379 00:14:10,090 --> 00:14:13,960 And then finally, merge is the last thing that you'll do. 380 00:14:13,960 --> 00:14:16,100 And I talk about, if you're changing one code file 381 00:14:16,100 --> 00:14:18,470 and someone else changes a code file while you're working on it 382 00:14:18,470 --> 00:14:20,140 and checks it in before you do, you're 383 00:14:20,140 --> 00:14:22,300 going to include their changes into your version, 384 00:14:22,300 --> 00:14:23,383 and that's called a merge. 385 00:14:23,383 --> 00:14:25,820 Most of them have tools that do it for you automatically, 386 00:14:25,820 --> 00:14:27,740 but if there's a conflict, it will then 387 00:14:27,740 --> 00:14:30,306 force you to do what's called a resolve, which is to say, 388 00:14:30,306 --> 00:14:32,430 hey, this file changed more than I could figure out 389 00:14:32,430 --> 00:14:35,580 automatically, so a human needs to interfere with it, 390 00:14:35,580 --> 00:14:37,310 and that point-- that's called resolve. 391 00:14:37,310 --> 00:14:39,370 And that's what the process is called, too. 392 00:14:39,370 --> 00:14:43,130 You'll have to go through that manually a couple times. 393 00:14:43,130 --> 00:14:45,465 So we talked about how this is an authoritative server, 394 00:14:45,465 --> 00:14:49,620 and that's true for Perforce And Subversion. 395 00:14:49,620 --> 00:14:51,640 And basically there's the one server 396 00:14:51,640 --> 00:14:53,634 that's going to be taking care of you, 397 00:14:53,634 --> 00:14:55,550 but it's not always true, especially if you're 398 00:14:55,550 --> 00:14:58,620 looking at Git and Mercurial, which 399 00:14:58,620 --> 00:15:00,730 use what's called distributed source control. 400 00:15:00,730 --> 00:15:03,319 There actually is no difference between your version 401 00:15:03,319 --> 00:15:05,360 of the code, and the servers version of the code, 402 00:15:05,360 --> 00:15:06,600 or your teammates version of the code. 403 00:15:06,600 --> 00:15:08,390 It's just a bunch of lists of changes, 404 00:15:08,390 --> 00:15:09,550 and you can send them left, and right, 405 00:15:09,550 --> 00:15:10,674 and upwards, and downwards. 406 00:15:10,674 --> 00:15:13,050 It doesn't matter. 407 00:15:13,050 --> 00:15:16,020 But if you actually do this, you're 408 00:15:16,020 --> 00:15:19,560 in trouble, unless you're really careful about it. 409 00:15:19,560 --> 00:15:21,190 So whenever you do a sideways shift-- 410 00:15:21,190 --> 00:15:22,690 you send some code to your teammate, 411 00:15:22,690 --> 00:15:24,240 but you don't send it to the, server 412 00:15:24,240 --> 00:15:26,240 you want to make sure you know what you're doing 413 00:15:26,240 --> 00:15:27,406 and be very careful with it. 414 00:15:27,406 --> 00:15:29,907 So I recommend, if you're using a distributed source control 415 00:15:29,907 --> 00:15:32,031 system, until you're really comfortable with what's 416 00:15:32,031 --> 00:15:33,950 going on there, that you mostly treat it 417 00:15:33,950 --> 00:15:38,270 like a standard server based system until you're really-- 418 00:15:38,270 --> 00:15:40,710 and make sure if you do any other kinds of cross 419 00:15:40,710 --> 00:15:42,650 submits that you know what you're doing 420 00:15:42,650 --> 00:15:44,760 and you think about it a little bit. 421 00:15:44,760 --> 00:15:46,530 The cool thing about these systems, 422 00:15:46,530 --> 00:15:48,880 though, is that, if I make a change 423 00:15:48,880 --> 00:15:51,577 and I send it to my teammate, and both of us 424 00:15:51,577 --> 00:15:53,410 submit it to the central server, it actually 425 00:15:53,410 --> 00:15:54,243 keeps track of that. 426 00:15:54,243 --> 00:15:55,740 It says, oh, it's the same change. 427 00:15:55,740 --> 00:15:57,110 I don't need to apply it twice. 428 00:15:57,110 --> 00:15:59,040 It's actually a really very clever technology. 429 00:15:59,040 --> 00:16:00,920 It's very, very cool and very powerful, 430 00:16:00,920 --> 00:16:02,378 but like many powerful technologies 431 00:16:02,378 --> 00:16:03,650 it can be very confusing. 432 00:16:03,650 --> 00:16:08,890 So as I say, start out here, and if you're feeling really cocky, 433 00:16:08,890 --> 00:16:09,470 go there. 434 00:16:13,160 --> 00:16:14,659 A couple quick rules about this. 435 00:16:14,659 --> 00:16:17,200 They're not going to apply to you yet, because you're not yet 436 00:16:17,200 --> 00:16:22,130 writing code in teams, but the policy is for most teams 437 00:16:22,130 --> 00:16:23,945 never ever, ever break the build. 438 00:16:23,945 --> 00:16:25,320 And when I say break the build, I 439 00:16:25,320 --> 00:16:28,650 mean you want it to be the case that that one canonical copy, 440 00:16:28,650 --> 00:16:31,240 the perfect copy of your project, anybody 441 00:16:31,240 --> 00:16:34,965 can go to an empty machine, run a get, get all the files, 442 00:16:34,965 --> 00:16:36,840 hit the Build button for whatever environment 443 00:16:36,840 --> 00:16:40,050 you're using, and have it build and work perfectly. 444 00:16:40,050 --> 00:16:41,370 That is the goal. 445 00:16:41,370 --> 00:16:42,945 That's what you always want. 446 00:16:42,945 --> 00:16:45,070 And if you ever submit something to the server that 447 00:16:45,070 --> 00:16:47,500 makes that impossible, it's highly likely 448 00:16:47,500 --> 00:16:51,570 that you have just made everyone else in your team have to wait. 449 00:16:51,570 --> 00:16:53,830 And that's a big pain because they're 450 00:16:53,830 --> 00:16:56,160 going to be sitting there wishing they could get work 451 00:16:56,160 --> 00:16:58,260 done, but they did a get to make sure they could do the merge, 452 00:16:58,260 --> 00:17:00,801 and then all of a sudden they can't get any work done at all. 453 00:17:00,801 --> 00:17:04,310 So you want to make 100% sure that you can always, 454 00:17:04,310 --> 00:17:07,540 always, always do that build. 455 00:17:07,540 --> 00:17:09,089 Another thing-- and this is me sort 456 00:17:09,089 --> 00:17:13,819 of stepping aside to my coding hat-- you should always 457 00:17:13,819 --> 00:17:16,310 have zero errors and zero warnings 458 00:17:16,310 --> 00:17:18,895 if at all humanly possible in you project. 459 00:17:18,895 --> 00:17:20,770 A lot of times I see programmers who are just 460 00:17:20,770 --> 00:17:23,540 starting out who think that warnings are optional, 461 00:17:23,540 --> 00:17:24,530 and it's true. 462 00:17:24,530 --> 00:17:26,859 Unfortunately, most of them are kind of optional, 463 00:17:26,859 --> 00:17:30,000 but there's two problems with leaving them in your build. 464 00:17:30,000 --> 00:17:33,750 Problem number one is some of them are optional, 465 00:17:33,750 --> 00:17:35,560 but they do in fact highlight an issue 466 00:17:35,560 --> 00:17:36,865 that you should think about. 467 00:17:36,865 --> 00:17:39,910 And if you leave it there on the screen and ignore it, 468 00:17:39,910 --> 00:17:41,560 you might be ignoring an important tool 469 00:17:41,560 --> 00:17:43,219 that'll help you find a bug. 470 00:17:43,219 --> 00:17:45,510 But in the second one, I think it's even more important 471 00:17:45,510 --> 00:17:47,500 actually-- is that as soon as you 472 00:17:47,500 --> 00:17:50,530 get used to seeing warnings in your build every time, 473 00:17:50,530 --> 00:17:52,617 you start ignoring all the warnings. 474 00:17:52,617 --> 00:17:54,950 So let's say there are five warnings that pop up in your 475 00:17:54,950 --> 00:17:56,949 build every time you build it, and this has been 476 00:17:56,949 --> 00:17:58,450 true for a week and a half now. 477 00:17:58,450 --> 00:18:00,700 And you're writing some code and you add two warnings, 478 00:18:00,700 --> 00:18:03,000 and you don't notice because there are warnings. 479 00:18:03,000 --> 00:18:05,840 Five to seven, you didn't notice the difference, 480 00:18:05,840 --> 00:18:08,070 but one of two warnings that you added 481 00:18:08,070 --> 00:18:09,764 might be really important. 482 00:18:09,764 --> 00:18:11,430 So if you can get down to zero warnings, 483 00:18:11,430 --> 00:18:13,200 as soon as you had one morning, it 484 00:18:13,200 --> 00:18:14,550 will instantly hit your brain, and your brain 485 00:18:14,550 --> 00:18:15,790 will say, oh, wait a minute. 486 00:18:15,790 --> 00:18:17,300 I did something that the computer 487 00:18:17,300 --> 00:18:19,620 says is a little bit risky. 488 00:18:19,620 --> 00:18:21,510 And in computer science, you want 489 00:18:21,510 --> 00:18:24,337 to avoid a little bit risky, because it's 490 00:18:24,337 --> 00:18:25,920 going to come back and bite you, and I 491 00:18:25,920 --> 00:18:28,770 promise it's easier to fix a bug 10 minutes after you wrote it 492 00:18:28,770 --> 00:18:30,970 than a day after you wrote it. 493 00:18:30,970 --> 00:18:32,970 And a week after you wrote it, it's even harder. 494 00:18:32,970 --> 00:18:36,040 We in this class won't get to a year after you wrote it, 495 00:18:36,040 --> 00:18:38,010 but sometime in your career, you probably will, 496 00:18:38,010 --> 00:18:39,840 and you won't enjoy it. 497 00:18:39,840 --> 00:18:42,680 Avoids bugs the first time if you can. 498 00:18:42,680 --> 00:18:45,220 So therefore I call use a check build. 499 00:18:45,220 --> 00:18:47,910 On a team, you might say to someone sitting next 500 00:18:47,910 --> 00:18:49,730 to you, hey, can you do a get and build 501 00:18:49,730 --> 00:18:51,344 and make sure I didn't mess it up? 502 00:18:51,344 --> 00:18:53,260 That's one easy way to do it, but actually you 503 00:18:53,260 --> 00:18:54,682 don't need to do that. 504 00:18:54,682 --> 00:18:56,140 On all these source control systems 505 00:18:56,140 --> 00:18:58,389 you can have more than one-- what we call-- workspace. 506 00:18:58,389 --> 00:19:00,580 It might be your local version of the code. 507 00:19:00,580 --> 00:19:02,260 You can have two workspaces-- one 508 00:19:02,260 --> 00:19:03,468 where you're doing your work. 509 00:19:03,468 --> 00:19:05,200 You check it all into the central server. 510 00:19:05,200 --> 00:19:06,820 Second one, you go to the second workspace. 511 00:19:06,820 --> 00:19:07,778 You pull the code down. 512 00:19:07,778 --> 00:19:08,550 You do a build. 513 00:19:08,550 --> 00:19:10,760 You verify that everything still works, 514 00:19:10,760 --> 00:19:14,020 and that's a safety way that you can in a couple minutes 515 00:19:14,020 --> 00:19:16,520 verify that you aren't about to make the entire team wait 516 00:19:16,520 --> 00:19:17,180 and lose time. 517 00:19:21,200 --> 00:19:23,034 Couple little tips that, again, you probably 518 00:19:23,034 --> 00:19:24,616 won't need a little bit, but I'm going 519 00:19:24,616 --> 00:19:26,990 to talk about it very quickly now so you don't forget. 520 00:19:26,990 --> 00:19:28,050 All these things I'm talking about 521 00:19:28,050 --> 00:19:29,200 are things you're probably going to have to look up 522 00:19:29,200 --> 00:19:30,410 the details on how to do them, but I 523 00:19:30,410 --> 00:19:32,360 want you to at least have heard the words, 524 00:19:32,360 --> 00:19:34,026 so that when you see them on the screen, 525 00:19:34,026 --> 00:19:38,120 they'll look familiar to you and you'll know what you can find. 526 00:19:38,120 --> 00:19:40,840 Ignore unneeded files is a really powerful thing. 527 00:19:40,840 --> 00:19:44,410 Almost all these systems can ignore types of files. 528 00:19:44,410 --> 00:19:47,540 For example, if you're working in C#, 529 00:19:47,540 --> 00:19:49,740 there might be some object files or whatever, 530 00:19:49,740 --> 00:19:52,530 and you don't want to check those in. 531 00:19:52,530 --> 00:19:54,150 It doesn't help you to check them in. 532 00:19:54,150 --> 00:19:56,525 In particular, if you're using Perforce, checking them in 533 00:19:56,525 --> 00:19:59,260 is actually problematic, because one of the things that Perforce 534 00:19:59,260 --> 00:20:00,840 does that the other systems don't do 535 00:20:00,840 --> 00:20:02,920 is Perforce uses the read only flag 536 00:20:02,920 --> 00:20:05,370 as a way on your local machine to tell you whether or not 537 00:20:05,370 --> 00:20:08,290 you have a file checked out for changes. 538 00:20:08,290 --> 00:20:09,924 So if a file is read only, it's saying 539 00:20:09,924 --> 00:20:12,340 you haven't told me that you're going to change this file, 540 00:20:12,340 --> 00:20:13,786 so I'm not going to let you. 541 00:20:13,786 --> 00:20:16,276 If you try to do a build on a bunch of read only files, 542 00:20:16,276 --> 00:20:17,900 your build environment has two choices. 543 00:20:17,900 --> 00:20:20,420 It can ignore that, which is kind of scary, 544 00:20:20,420 --> 00:20:23,480 or it can just fail. 545 00:20:23,480 --> 00:20:25,840 So that's kind of annoying, but more to the point, 546 00:20:25,840 --> 00:20:28,270 there's no reason to check in these gigantic product 547 00:20:28,270 --> 00:20:30,811 files that are all part of your build when you could actually 548 00:20:30,811 --> 00:20:32,870 build everything from the bare source. 549 00:20:32,870 --> 00:20:34,760 The only things you want to actually check in 550 00:20:34,760 --> 00:20:38,380 are the original source files for your project, 551 00:20:38,380 --> 00:20:40,764 whether that be art, audio code, whatever, 552 00:20:40,764 --> 00:20:42,930 but you want to be able to rebuild the entire thing. 553 00:20:42,930 --> 00:20:45,620 And all the intermediate files or the final result 554 00:20:45,620 --> 00:20:47,290 files-- generally speaking, you don't want to check those 555 00:20:47,290 --> 00:20:49,220 into source control, unless you've got a special build 556 00:20:49,220 --> 00:20:50,144 folder or something. 557 00:20:50,144 --> 00:20:51,560 You want to have one folder, which 558 00:20:51,560 --> 00:20:54,420 is purely pull down the project and build it, 559 00:20:54,420 --> 00:20:55,920 and it contains all the information 560 00:20:55,920 --> 00:20:58,569 necessary to regenerate everything that you can. 561 00:20:58,569 --> 00:21:00,610 So if you can ignore all the files that you don't 562 00:21:00,610 --> 00:21:02,120 want to check in, that's good. 563 00:21:02,120 --> 00:21:04,850 This is particularly a problem with Unity. 564 00:21:04,850 --> 00:21:06,330 You don't want to check in anything 565 00:21:06,330 --> 00:21:09,310 but the asset folder and the project settings folder. 566 00:21:09,310 --> 00:21:11,270 There's a bunch of gigantic folders in Unity 567 00:21:11,270 --> 00:21:13,110 that look important, and they are important, 568 00:21:13,110 --> 00:21:14,734 but Unity will regenerate them for you, 569 00:21:14,734 --> 00:21:17,420 and you don't want to check them in. 570 00:21:17,420 --> 00:21:20,370 And then finally, I talked about locking before. 571 00:21:20,370 --> 00:21:22,630 Lock you binary files and your big text 572 00:21:22,630 --> 00:21:26,140 files that don't merge well just to avoid headaches. 573 00:21:26,140 --> 00:21:28,891 If you don't do that and more than one person touches that 574 00:21:28,891 --> 00:21:30,640 file, eventually you'll get in a situation 575 00:21:30,640 --> 00:21:32,973 where you lose your changes because someone else checked 576 00:21:32,973 --> 00:21:34,280 in something over you. 577 00:21:34,280 --> 00:21:37,600 Similarly with a merge be careful. 578 00:21:37,600 --> 00:21:39,770 If someone has checked in a-- even to text file, 579 00:21:39,770 --> 00:21:41,470 and you do get it down to the server, 580 00:21:41,470 --> 00:21:44,590 and it has to merge with your changes, and you don't do that, 581 00:21:44,590 --> 00:21:46,423 and you just say, nah, forget their changes. 582 00:21:46,423 --> 00:21:46,960 Use mine. 583 00:21:46,960 --> 00:21:49,020 That's going to be a problem, because someone 584 00:21:49,020 --> 00:21:50,401 just loss some work there. 585 00:21:50,401 --> 00:21:52,650 Luckily with source control you can recover from that, 586 00:21:52,650 --> 00:21:54,241 but it won't be smooth teamwork. 587 00:21:54,241 --> 00:21:56,490 No one will be happy that you wiped out their changes. 588 00:21:59,590 --> 00:22:01,322 That is the quick version, and now we're 589 00:22:01,322 --> 00:22:02,530 going to go on to a workshop. 590 00:22:02,530 --> 00:22:04,780 So you should be sitting near people who used the game 591 00:22:04,780 --> 00:22:06,560 engine that you used. 592 00:22:06,560 --> 00:22:09,800 Hopefully most of you actually did this thing. 593 00:22:09,800 --> 00:22:13,840 So what we want to do is team up in pairs with people ideally 594 00:22:13,840 --> 00:22:14,750 who used your engine. 595 00:22:14,750 --> 00:22:16,833 If there's only three of you who used your engine, 596 00:22:16,833 --> 00:22:18,660 I guess you're a triplet. 597 00:22:18,660 --> 00:22:23,020 And what we want to do is-- ideally two ways, 598 00:22:23,020 --> 00:22:25,220 but one way will do. 599 00:22:25,220 --> 00:22:27,670 One of you should say, yes, I've got working code. 600 00:22:27,670 --> 00:22:28,680 It's pretty cool. 601 00:22:28,680 --> 00:22:29,180 Run it. 602 00:22:29,180 --> 00:22:29,830 Show everyone. 603 00:22:29,830 --> 00:22:30,870 See it works. 604 00:22:30,870 --> 00:22:34,630 And then pick a source control engine of your choice. 605 00:22:34,630 --> 00:22:38,380 I recommend GitHub, because it's easy to get things set up. 606 00:22:38,380 --> 00:22:41,620 Check in your code, have the other people check it out, 607 00:22:41,620 --> 00:22:44,000 and see if they can build it. 608 00:22:44,000 --> 00:22:48,370 And then if you succeed at that, swap and do the other way 609 00:22:48,370 --> 00:22:49,120 around. 610 00:22:49,120 --> 00:22:50,230 Actually, you can do this simultaneously. 611 00:22:50,230 --> 00:22:52,440 Everyone can start checking in to new projects 612 00:22:52,440 --> 00:22:53,440 and then pull down. 613 00:23:05,706 --> 00:23:08,280 Well I'll take that as a cue that I can start talking 614 00:23:08,280 --> 00:23:09,770 a little bit, but not for long. 615 00:23:09,770 --> 00:23:10,554 I promise. 616 00:23:10,554 --> 00:23:12,970 So the next step we want to do is discuss the game engines 617 00:23:12,970 --> 00:23:14,319 that you did the tutorials for. 618 00:23:14,319 --> 00:23:15,860 You probably did a little bit of that 619 00:23:15,860 --> 00:23:17,484 already because you've been hanging out 620 00:23:17,484 --> 00:23:19,000 with people near you who use them, 621 00:23:19,000 --> 00:23:20,980 but I want you to try to get into groups 622 00:23:20,980 --> 00:23:23,162 of five to six people. 623 00:23:23,162 --> 00:23:25,370 If you can't, that's fine, but try to balance it out. 624 00:23:25,370 --> 00:23:29,490 There probably should be about two groups per game engine. 625 00:23:29,490 --> 00:23:32,040 And talk about what your experiences 626 00:23:32,040 --> 00:23:33,880 were with the tutorials. 627 00:23:33,880 --> 00:23:36,030 So things like, what was easy? 628 00:23:36,030 --> 00:23:36,910 What was hard? 629 00:23:36,910 --> 00:23:39,159 What was more difficult than you expected? 630 00:23:39,159 --> 00:23:41,450 Compare your experiences on different operating systems 631 00:23:41,450 --> 00:23:43,767 if you happen to have that experience. 632 00:23:43,767 --> 00:23:46,100 Compare your experiences if you used different tutorials 633 00:23:46,100 --> 00:23:47,641 or the same tutorial, but basically I 634 00:23:47,641 --> 00:23:50,180 want you to get an idea of what other people's experiences 635 00:23:50,180 --> 00:23:51,900 we're like compared to your own. 636 00:23:51,900 --> 00:23:53,670 And the main reason for this is that you 637 00:23:53,670 --> 00:23:55,859 want to figure out something a little bit more 638 00:23:55,859 --> 00:23:57,900 about your game engine, because after this, we're 639 00:23:57,900 --> 00:24:00,410 going to shuffle and get into groups where 640 00:24:00,410 --> 00:24:01,750 we've mixed up the game engine. 641 00:24:01,750 --> 00:24:03,675 So for example, if you used HaxeFlixel, 642 00:24:03,675 --> 00:24:05,050 you'll be in a group with someone 643 00:24:05,050 --> 00:24:06,841 who used Flixel and someone who used Unity, 644 00:24:06,841 --> 00:24:09,230 and you want to compare and contrast those engines. 645 00:24:09,230 --> 00:24:12,080 And so think of this first discussion as a way 646 00:24:12,080 --> 00:24:14,770 to figure out how to talk about your game engine 647 00:24:14,770 --> 00:24:17,840 and maybe learn more about other people's experiences with it. 648 00:24:17,840 --> 00:24:20,450 So I believe that we're already seated mostly 649 00:24:20,450 --> 00:24:22,680 near each other in the game engines. 650 00:24:22,680 --> 00:24:28,362 I think that's all I need to say really. 651 00:24:28,362 --> 00:24:30,820 So split up into groups of five or six in your game engine, 652 00:24:30,820 --> 00:24:32,484 and if you need help with that, we'll help. 653 00:24:32,484 --> 00:24:33,400 AUDIENCE: [INAUDIBLE]. 654 00:24:35,870 --> 00:24:36,834 ANDREW GRANT: 15. 655 00:24:36,834 --> 00:24:38,250 15 minutes of that, and then we'll 656 00:24:38,250 --> 00:24:41,492 swap in to do multiple-- we'll help you with that part, too. 657 00:24:55,410 --> 00:24:57,850 PHILIP TAN: Your attention, please. 658 00:24:57,850 --> 00:24:59,740 May I have your attention, please. 659 00:25:03,450 --> 00:25:06,980 So I think a lot of you-- I see quite a few groups are 660 00:25:06,980 --> 00:25:10,750 winding down on their discussion within the same game engine. 661 00:25:10,750 --> 00:25:14,950 Now what we're going to do is ask you to gather back 662 00:25:14,950 --> 00:25:19,140 in your original brainstorming groups, which is probably 663 00:25:19,140 --> 00:25:23,800 going to be pretty close to the combination of the teams 664 00:25:23,800 --> 00:25:25,530 that you are currently in. 665 00:25:25,530 --> 00:25:28,560 So remember when we did brainstorming on Monday? 666 00:25:28,560 --> 00:25:29,970 Those people? 667 00:25:29,970 --> 00:25:31,865 You are going to gather with them, 668 00:25:31,865 --> 00:25:33,240 and hopefully you're going to get 669 00:25:33,240 --> 00:25:34,864 a good spread of different game engines 670 00:25:34,864 --> 00:25:36,330 within that discussion group. 671 00:25:36,330 --> 00:25:38,880 And what we want you to do is share your experience 672 00:25:38,880 --> 00:25:40,540 having used that game engine. 673 00:25:40,540 --> 00:25:43,040 First, take a quick survey around of which game 674 00:25:43,040 --> 00:25:47,380 engines are being represented, have a talk so 675 00:25:47,380 --> 00:25:49,770 that you know which game engines you're discussing. 676 00:25:49,770 --> 00:25:52,680 Then talk about what you found good, 677 00:25:52,680 --> 00:25:54,930 what you found terrible about those game engines, 678 00:25:54,930 --> 00:25:56,600 and what you recommend it for. 679 00:25:56,600 --> 00:25:57,100 OK? 680 00:25:57,100 --> 00:25:59,020 PROFESSOR: As a primary motivator for this, 681 00:25:59,020 --> 00:26:01,140 project two starts next Monday, and you're 682 00:26:01,140 --> 00:26:03,140 going to choose an engine and make a game in it. 683 00:26:03,140 --> 00:26:04,930 And you're going to be committed to that engine for about 2 684 00:26:04,930 --> 00:26:05,730 and 1/2 weeks. 685 00:26:05,730 --> 00:26:08,430 So that's the whole reason why we're talking about this stuff. 686 00:26:11,965 --> 00:26:13,840 ANDREW GRANT: This might not need to be said, 687 00:26:13,840 --> 00:26:16,680 but if half of you used one game engine, do some swapping. 688 00:26:37,930 --> 00:26:42,330 I would like to see we can put a final couple of details 689 00:26:42,330 --> 00:26:45,590 as to what we discovered here. 690 00:26:45,590 --> 00:26:49,710 If you were to try to describe the experience of Haxe 691 00:26:49,710 --> 00:26:52,300 in a sentence like thumbs up, thumbs down, 692 00:26:52,300 --> 00:26:54,860 what was the hardest thing? 693 00:26:54,860 --> 00:26:56,746 Anybody? 694 00:26:56,746 --> 00:26:57,245 Please? 695 00:26:57,245 --> 00:26:59,428 AUDIENCE: There weren't a lot of resources out there 696 00:26:59,428 --> 00:26:59,970 [? for it. ?] 697 00:26:59,970 --> 00:27:01,511 ANDREW GRANT: Not a lot of resources. 698 00:27:01,511 --> 00:27:03,535 So you couldn't find help me when you got stuck? 699 00:27:03,535 --> 00:27:04,160 AUDIENCE: Yeah. 700 00:27:04,160 --> 00:27:05,120 It's pretty [INAUDIBLE]. 701 00:27:05,120 --> 00:27:07,453 ANDREW GRANT: OK, I've heard that the install process is 702 00:27:07,453 --> 00:27:09,691 painful. 703 00:27:09,691 --> 00:27:10,190 Let's see. 704 00:27:10,190 --> 00:27:11,920 What else have I heard? 705 00:27:11,920 --> 00:27:12,670 Anything else? 706 00:27:12,670 --> 00:27:15,340 Anything to recommend it? 707 00:27:15,340 --> 00:27:17,690 AUDIENCE: Once you got it up and running, it was easy. 708 00:27:17,690 --> 00:27:18,990 ANDREW GRANT: Once you got it up and running it was easy. 709 00:27:18,990 --> 00:27:20,232 All right, cool. 710 00:27:20,232 --> 00:27:23,184 AUDIENCE: Personally I was on a Mac, 711 00:27:23,184 --> 00:27:25,644 and I found the installation really simple. 712 00:27:25,644 --> 00:27:30,986 It was just a couple of [INAUDIBLE] calls, 713 00:27:30,986 --> 00:27:35,585 and it seemed like it was really useful for a simple game. 714 00:27:35,585 --> 00:27:38,080 I'm not sure how [INAUDIBLE] will get when we were trying 715 00:27:38,080 --> 00:27:41,074 [INAUDIBLE], but for getting a very simple game running fast, 716 00:27:41,074 --> 00:27:41,574 it's nice. 717 00:27:41,574 --> 00:27:43,657 ANDREW GRANT: So it sounds like there's some mixed 718 00:27:43,657 --> 00:27:44,970 experience on the install. 719 00:27:44,970 --> 00:27:46,080 Mac may be the difference. 720 00:27:46,080 --> 00:27:46,857 I don't know. 721 00:27:46,857 --> 00:27:49,065 AUDIENCE: I was also on a Mac, and once I figured out 722 00:27:49,065 --> 00:27:52,090 how to install on a Mac, it was extremely simple, 723 00:27:52,090 --> 00:27:56,110 but the thing was the tutorial was just for Windows. 724 00:27:56,110 --> 00:27:58,110 Install Flash [INAUDIBLE]. 725 00:27:58,110 --> 00:27:58,610 Do this. 726 00:27:58,610 --> 00:27:59,110 Do that. 727 00:27:59,110 --> 00:28:01,161 I was like, OK. [INAUDIBLE]. 728 00:28:01,161 --> 00:28:02,910 ANDREW GRANT: So the main thing I've heard 729 00:28:02,910 --> 00:28:05,200 then is the support is limited. 730 00:28:05,200 --> 00:28:07,620 The install may or may not be hard, but if you get stuck, 731 00:28:07,620 --> 00:28:09,953 the support isn't going to help you through it, at least 732 00:28:09,953 --> 00:28:12,722 in that experience. 733 00:28:12,722 --> 00:28:15,180 The main reason why I think HaxeFlixel might be interesting 734 00:28:15,180 --> 00:28:17,740 is because I actually know that Flixel is interesting, 735 00:28:17,740 --> 00:28:19,823 but you guys may have a different opinion on that. 736 00:28:19,823 --> 00:28:21,080 So Flixel. 737 00:28:21,080 --> 00:28:25,122 Any other big picture takeaway for Flixel? 738 00:28:25,122 --> 00:28:27,080 You're all going to disagree with me now, which 739 00:28:27,080 --> 00:28:29,027 is fine, but say something. 740 00:28:29,027 --> 00:28:31,770 AUDIENCE: I think it's support is also limited. 741 00:28:31,770 --> 00:28:33,426 ANDREW GRANT: OK. 742 00:28:33,426 --> 00:28:35,050 And one of problems I've seen in Flixel 743 00:28:35,050 --> 00:28:37,600 is that it, in fact, has evolved over about five or six years 744 00:28:37,600 --> 00:28:38,100 now. 745 00:28:38,100 --> 00:28:39,960 And so if you look for a bug in Flixel 746 00:28:39,960 --> 00:28:42,050 and try to figure out what was going wrong, 747 00:28:42,050 --> 00:28:44,134 it'll say, well, in Flixel 4, you want to do this. 748 00:28:44,134 --> 00:28:46,216 It does end up being a little bit more complicated 749 00:28:46,216 --> 00:28:46,775 there, too. 750 00:28:46,775 --> 00:28:48,150 So in addition to there not being 751 00:28:48,150 --> 00:28:50,700 as much support as there is for, say, Unity, 752 00:28:50,700 --> 00:28:51,870 it's fragmented support. 753 00:28:54,570 --> 00:28:57,250 And then of course, Flash is one of those technologies 754 00:28:57,250 --> 00:29:01,010 that people are considering to be aging. 755 00:29:01,010 --> 00:29:04,570 I will say, however, that in my experience for 2D stuff, 756 00:29:04,570 --> 00:29:07,520 Flixel is really, really easy to pick up once you get going, 757 00:29:07,520 --> 00:29:09,705 and it can really do the 2D stuff pretty well. 758 00:29:09,705 --> 00:29:12,080 On the other hand, we have a new contender there, Phaser, 759 00:29:12,080 --> 00:29:14,080 which I heard the [? trial ?] was really, really 760 00:29:14,080 --> 00:29:16,170 good for Phaser. 761 00:29:16,170 --> 00:29:20,031 Does anyone have any takeaway on Phaser? 762 00:29:20,031 --> 00:29:20,970 The trial was good. 763 00:29:20,970 --> 00:29:22,386 It handled 2D stuff pretty well. 764 00:29:22,386 --> 00:29:24,010 We haven't gone in depth on collisions. 765 00:29:24,010 --> 00:29:26,176 AUDIENCE: [INAUDIBLE] it was definitely good for 2D. 766 00:29:26,176 --> 00:29:30,996 It's very intuitive, and it's all written in JavaScript, 767 00:29:30,996 --> 00:29:33,491 so not too complicated. 768 00:29:33,491 --> 00:29:36,490 [INAUDIBLE] 769 00:29:36,490 --> 00:29:39,094 ANDREW GRANT: Does anybody know if it supports TypeScript? 770 00:29:39,094 --> 00:29:40,010 AUDIENCE: [INAUDIBLE]. 771 00:29:40,010 --> 00:29:41,718 ANDREW GRANT: It does support TypeScript. 772 00:29:41,718 --> 00:29:43,551 Did anyone use TypeScript for Phaser? 773 00:29:43,551 --> 00:29:44,050 No? 774 00:29:44,050 --> 00:29:44,690 Oh, you did? 775 00:29:44,690 --> 00:29:45,315 AUDIENCE: Yeah. 776 00:29:45,315 --> 00:29:47,730 ANDREW GRANT: Right, I just talked to you about that. 777 00:29:47,730 --> 00:29:51,340 In fact, you were able to use a debugger with Phaser 778 00:29:51,340 --> 00:29:52,784 through Visual Studio, right? 779 00:29:52,784 --> 00:29:54,450 That actually I find pretty encouraging. 780 00:29:54,450 --> 00:29:57,800 Someone's put some thought into that. 781 00:29:57,800 --> 00:29:58,590 How about support? 782 00:29:58,590 --> 00:30:00,610 Where there are a lot of people using Phaser? 783 00:30:00,610 --> 00:30:04,270 Enough that you can get some help through searches? 784 00:30:04,270 --> 00:30:05,240 Yeah. 785 00:30:05,240 --> 00:30:05,950 OK, cool. 786 00:30:05,950 --> 00:30:08,920 So it sounds like Phaser is a-- I haven't heard about many 787 00:30:08,920 --> 00:30:10,869 of the HTML5 engines that I would actually 788 00:30:10,869 --> 00:30:12,410 want to recommend, but it sounds like 789 00:30:12,410 --> 00:30:13,540 so for your experiences with Phaser 790 00:30:13,540 --> 00:30:15,815 have been pretty positive, which is pretty cool. 791 00:30:15,815 --> 00:30:17,795 AUDIENCE: I have a question about Phaser. 792 00:30:17,795 --> 00:30:19,200 What about the install process? 793 00:30:19,200 --> 00:30:21,950 Any thoughts on that? 794 00:30:21,950 --> 00:30:25,845 [INAUDIBLE] files could just [? be ?] [INAUDIBLE] HTML 795 00:30:25,845 --> 00:30:28,182 [INAUDIBLE] scripts. 796 00:30:28,182 --> 00:30:30,390 ANDREW GRANT: So you just copied it in, and it works? 797 00:30:30,390 --> 00:30:33,848 AUDIENCE: Yeah, so Phaser has version control pretty much 798 00:30:33,848 --> 00:30:36,770 [INAUDIBLE] because you have to pull everything from Git. 799 00:30:36,770 --> 00:30:39,195 The second tutorial of making the game was great, 800 00:30:39,195 --> 00:30:42,105 but as a couple of us noticed, the first tutorial 801 00:30:42,105 --> 00:30:44,900 had installation-- like setting up a web server 802 00:30:44,900 --> 00:30:50,576 and then choosing your ID was a little bit more obfuscated. 803 00:30:50,576 --> 00:30:52,370 It's like, why are they telling us 804 00:30:52,370 --> 00:30:54,170 to do these things [INAUDIBLE]? 805 00:30:54,170 --> 00:30:55,170 ANDREW GRANT: Oh, right. 806 00:30:55,170 --> 00:30:55,670 Right. 807 00:30:55,670 --> 00:30:57,600 Yeah, because I do think that-- there 808 00:30:57,600 --> 00:30:58,750 was somebody said if you set up a web server, 809 00:30:58,750 --> 00:30:59,870 this is how I would do it. 810 00:30:59,870 --> 00:31:02,203 And I think the answer is there are easier ways to do it 811 00:31:02,203 --> 00:31:03,779 than they have suggested, especially 812 00:31:03,779 --> 00:31:04,820 if you're an MIT student. 813 00:31:04,820 --> 00:31:06,430 You can copy it to your web locker, 814 00:31:06,430 --> 00:31:10,275 and whoa, you've installed it-- is a fine way to do it. 815 00:31:10,275 --> 00:31:11,191 AUDIENCE: [INAUDIBLE]. 816 00:31:14,173 --> 00:31:18,149 With the TypeScript installation it enables to [INAUDIBLE] 817 00:31:18,149 --> 00:31:21,650 copy paste in [INAUDIBLE]. 818 00:31:21,650 --> 00:31:24,280 ANDREW GRANT: Cool. 819 00:31:24,280 --> 00:31:27,970 All right, and then I split Unity into concentrate on 2D, 820 00:31:27,970 --> 00:31:30,295 concentrate on 3D, but fundamentally there 821 00:31:30,295 --> 00:31:33,860 is a difference between those two-- that Unity pretty much-- 822 00:31:33,860 --> 00:31:37,070 and I heard someone even saying that Unity is designed for 3D, 823 00:31:37,070 --> 00:31:39,920 and they've kind of pasted 2D on top of it, which 824 00:31:39,920 --> 00:31:45,027 I think is an accurate criticism about usability on that. 825 00:31:45,027 --> 00:31:47,110 Has anyone experienced the-- trying to use the 2D, 826 00:31:47,110 --> 00:31:47,901 was that a problem? 827 00:31:50,920 --> 00:31:54,231 Are you going to still need to think in 3D to make it work? 828 00:31:54,231 --> 00:31:56,564 AUDIENCE: Yeah, the other thing was the initial learning 829 00:31:56,564 --> 00:31:59,785 curve was pretty-- took a while to get something simple 830 00:31:59,785 --> 00:32:01,240 started. 831 00:32:01,240 --> 00:32:04,635 [? But I feel ?] like there's a lot of potential 832 00:32:04,635 --> 00:32:07,060 making more complex 2D stuff. 833 00:32:07,060 --> 00:32:07,866 ANDREW GRANT: Sure. 834 00:32:07,866 --> 00:32:11,754 AUDIENCE: It definitely doesn't feel lacking. 835 00:32:11,754 --> 00:32:14,184 It's like Photoshop in the sense that there's 836 00:32:14,184 --> 00:32:16,630 all these features, and you maybe not even 10% of them, 837 00:32:16,630 --> 00:32:18,301 but they're there if you need them, 838 00:32:18,301 --> 00:32:19,843 which may or may not be a good thing, 839 00:32:19,843 --> 00:32:21,759 because that can be very intimidating and sort 840 00:32:21,759 --> 00:32:22,499 of hard to work. 841 00:32:22,499 --> 00:32:23,290 ANDREW GRANT: Sure. 842 00:32:23,290 --> 00:32:24,248 I agree with that 100%. 843 00:32:24,248 --> 00:32:25,835 There's too much there, perhaps. 844 00:32:25,835 --> 00:32:27,460 If you're trying to do a quick project, 845 00:32:27,460 --> 00:32:29,711 you might be tempted to use more than you should. 846 00:32:29,711 --> 00:32:31,960 Also [INAUDIBLE] some things get lost in the features. 847 00:32:31,960 --> 00:32:33,848 AUDIENCE: Yeah, in some of the videos 848 00:32:33,848 --> 00:32:35,630 they demonstrate how you can actually 849 00:32:35,630 --> 00:32:38,840 have 3D objects in the 2D environment 850 00:32:38,840 --> 00:32:41,580 when you're developing 2D games, which I 851 00:32:41,580 --> 00:32:43,210 guess they were excited about. 852 00:32:43,210 --> 00:32:45,810 And they were just like, hey, you can do this cool thing, 853 00:32:45,810 --> 00:32:50,269 but I think it has the opposite effect in that it intimidates 854 00:32:50,269 --> 00:32:50,769 people. 855 00:32:50,769 --> 00:32:55,030 There's a lot of options that were built originally for 3D, 856 00:32:55,030 --> 00:32:57,390 and looking through menus and looking 857 00:32:57,390 --> 00:33:00,840 through all drop down things, most of them 858 00:33:00,840 --> 00:33:02,880 are things you can' touch or you can't 859 00:33:02,880 --> 00:33:06,290 use, because they're meant for 3D, 860 00:33:06,290 --> 00:33:10,605 and there's no way you can restrict the UI to be only 2D. 861 00:33:10,605 --> 00:33:14,040 So I feel like they should instead 862 00:33:14,040 --> 00:33:18,780 make it into a standalone Unity 2D software, which 863 00:33:18,780 --> 00:33:20,004 would be easier. 864 00:33:20,004 --> 00:33:22,045 ANDREW GRANT: I understand why they don't turn it 865 00:33:22,045 --> 00:33:23,510 into standalone Unity 2D software, 866 00:33:23,510 --> 00:33:25,340 but I think your point is well taken. 867 00:33:25,340 --> 00:33:27,232 I think that it would help with their uptake 868 00:33:27,232 --> 00:33:29,190 if they were to try to limit their feature set, 869 00:33:29,190 --> 00:33:30,190 oddly enough. 870 00:33:30,190 --> 00:33:32,440 This is not the first time this has happened actually. 871 00:33:32,440 --> 00:33:36,239 Way back when there was Torque, which is a 3D game engine. 872 00:33:36,239 --> 00:33:38,530 It was really cheap indie-- one of the first indie game 873 00:33:38,530 --> 00:33:41,807 engines for like $100 for use it all you want. 874 00:33:41,807 --> 00:33:44,140 And they started with their big fancy Torque 3D package, 875 00:33:44,140 --> 00:33:45,480 and everyone said, wow, this is awesome. 876 00:33:45,480 --> 00:33:47,300 And a bunch of people bought it, and they never made any games, 877 00:33:47,300 --> 00:33:49,460 because 3D is, as we've mentioned, 878 00:33:49,460 --> 00:33:51,370 more than three times as hard as 2D, 879 00:33:51,370 --> 00:33:55,120 and so they came out with Torque 2D, and that did a lot better. 880 00:33:55,120 --> 00:33:57,545 Again, because developers-- 3D is an extra hurdle 881 00:33:57,545 --> 00:33:59,630 to jump over, and when all the developers have 882 00:33:59,630 --> 00:34:01,960 to deal with a short time frame, and that 3D 883 00:34:01,960 --> 00:34:03,190 can get in your way. 884 00:34:03,190 --> 00:34:04,900 So I think the takeaway for me on Unity 885 00:34:04,900 --> 00:34:08,270 is basically the same, which is it's a lot. 886 00:34:08,270 --> 00:34:10,746 You can do a lot with it, but it's got a learning curve. 887 00:34:10,746 --> 00:34:12,620 It's going to be a little bit harder for you, 888 00:34:12,620 --> 00:34:15,020 so you might want to think twice about doing that, 889 00:34:15,020 --> 00:34:16,540 especially if you're concentrating 890 00:34:16,540 --> 00:34:19,199 on a 2D game, which you probably should be doing, if you can, 891 00:34:19,199 --> 00:34:21,415 this semester. 892 00:34:21,415 --> 00:34:22,873 Unity also has a couple things that 893 00:34:22,873 --> 00:34:23,679 are a little bit different. 894 00:34:23,679 --> 00:34:25,319 I think mostly Flixel certainly-- 895 00:34:25,319 --> 00:34:30,159 and sounds like Phaser has a little Flixel blood in it. 896 00:34:30,159 --> 00:34:31,699 They're both designed for 2D. 897 00:34:31,699 --> 00:34:35,820 Very simple, straightforward implementations 898 00:34:35,820 --> 00:34:37,699 in an object oriented kind of way. 899 00:34:37,699 --> 00:34:39,241 Unity has this crazy component system 900 00:34:39,241 --> 00:34:41,032 where you've got one object, but you staple 901 00:34:41,032 --> 00:34:42,360 anything you want to to it. 902 00:34:42,360 --> 00:34:43,810 And it's really, really powerful, 903 00:34:43,810 --> 00:34:46,929 but also it takes a while to your brain around it. 904 00:34:46,929 --> 00:34:50,400 So long story short, I would say that, if you 905 00:34:50,400 --> 00:34:52,969 can do what you want to do without taking 906 00:34:52,969 --> 00:34:55,230 on a big engine like Unity, I kind of recommend 907 00:34:55,230 --> 00:34:58,447 that, but obviously if you need to do it 908 00:34:58,447 --> 00:35:00,780 and will kind of-- the reason [INAUDIBLE] if you tell us 909 00:35:00,780 --> 00:35:02,800 that you do need to do it, but if you do need to do, 910 00:35:02,800 --> 00:35:03,850 it's worth considering, because I 911 00:35:03,850 --> 00:35:06,141 think it is a very powerful and useful friendly engine. 912 00:35:06,141 --> 00:35:08,170 AUDIENCE: Which one has [? faster ?] 913 00:35:08,170 --> 00:35:10,272 development cycles? 914 00:35:10,272 --> 00:35:11,980 ANDREW GRANT: Good question, but I'm only 915 00:35:11,980 --> 00:35:17,260 going to guess at this point in our experience we have not 916 00:35:17,260 --> 00:35:20,050 used Phaser in a class before. 917 00:35:20,050 --> 00:35:21,840 I know Flixel is faster than Unity. 918 00:35:21,840 --> 00:35:24,420 It sounds like from the feedback we're getting here 919 00:35:24,420 --> 00:35:26,340 that Phaser might be a good contender, 920 00:35:26,340 --> 00:35:27,807 so I would recommend in project two 921 00:35:27,807 --> 00:35:29,890 you might want to take a look at those two engines 922 00:35:29,890 --> 00:35:34,570 as your first go to things and check it out, 923 00:35:34,570 --> 00:35:37,924 because there's not good options. 924 00:35:37,924 --> 00:35:40,340 I would go there first, though, rather than going straight 925 00:35:40,340 --> 00:35:42,360 to Unity, unless you've got a team that 926 00:35:42,360 --> 00:35:44,558 really wants to take it on. 927 00:35:44,558 --> 00:35:46,980 AUDIENCE: Are we limited to these options [? that ?] 928 00:35:46,980 --> 00:35:47,480 [INAUDIBLE]. 929 00:35:47,480 --> 00:35:49,604 ANDREW GRANT: Yes, you're limited to these options. 930 00:35:52,230 --> 00:35:53,410 So let's see. 931 00:35:53,410 --> 00:35:58,850 I think our next step then is something else. 932 00:35:58,850 --> 00:36:00,474 PROFESSOR: Yes, it is. 933 00:36:00,474 --> 00:36:01,670 So congratulations. 934 00:36:01,670 --> 00:36:04,630 You've gotten through the first 2/3 of class today. 935 00:36:04,630 --> 00:36:06,442 [APPLAUSE] 936 00:36:06,442 --> 00:36:09,160 Yay. 937 00:36:09,160 --> 00:36:11,110 And that was our gaming tutorial, 938 00:36:11,110 --> 00:36:13,680 so keep all of these thoughts in mind 939 00:36:13,680 --> 00:36:16,329 as we start up project two next week. 940 00:36:16,329 --> 00:36:17,870 The remainder of class is going to be 941 00:36:17,870 --> 00:36:19,619 devoted to finishing up project-- or doing 942 00:36:19,619 --> 00:36:21,237 more work on project one. 943 00:36:21,237 --> 00:36:23,320 We're going to do two activities that we mentioned 944 00:36:23,320 --> 00:36:24,403 at the beginning of class. 945 00:36:24,403 --> 00:36:26,390 We're going to start off with play test. 946 00:36:26,390 --> 00:36:29,090 So if you have something testable, great. 947 00:36:29,090 --> 00:36:30,265 You're ahead of the game. 948 00:36:30,265 --> 00:36:31,640 If you don't have something testable, 949 00:36:31,640 --> 00:36:33,473 we're going to give you a little bit of time 950 00:36:33,473 --> 00:36:35,250 to get you to something testable. 951 00:36:35,250 --> 00:36:36,670 What do we mean by testable? 952 00:36:36,670 --> 00:36:38,380 It means somebody else that is not 953 00:36:38,380 --> 00:36:40,450 on your team with a little bit of guidance 954 00:36:40,450 --> 00:36:44,560 by somebody on the team can make things happen in the game. 955 00:36:44,560 --> 00:36:48,070 That gives you feedback that says that was cool. 956 00:36:48,070 --> 00:36:51,230 That's what we were going for or that's really broken. 957 00:36:51,230 --> 00:36:52,140 That's awful. 958 00:36:52,140 --> 00:36:53,320 Let's not go that direction. 959 00:36:53,320 --> 00:36:58,930 That's all we're asking for you to do for class today. 960 00:36:58,930 --> 00:37:02,090 So at 3 o'clock, we are going to start the play test. 961 00:37:02,090 --> 00:37:05,950 It is 2:47 PM right now. 962 00:37:05,950 --> 00:37:06,930 Ignore that first part. 963 00:37:06,930 --> 00:37:09,513 Basically what we're going to do is set up your in your teams. 964 00:37:09,513 --> 00:37:11,270 Every team should have their game set up 965 00:37:11,270 --> 00:37:13,030 and ready to play at 3 o'clock. 966 00:37:13,030 --> 00:37:15,080 The team that is closest to them-- 967 00:37:15,080 --> 00:37:16,795 you're going to first one team is going 968 00:37:16,795 --> 00:37:18,982 to play the other team's game. 969 00:37:18,982 --> 00:37:22,430 You can have 15 minutes to do that and then swap. 970 00:37:22,430 --> 00:37:25,285 If you followed project one's examples correctly 971 00:37:25,285 --> 00:37:27,390 and you have a five minute game play 972 00:37:27,390 --> 00:37:29,850 game, so your game can be played in five minutes or less, 973 00:37:29,850 --> 00:37:32,280 you can get three tests done today. 974 00:37:32,280 --> 00:37:33,450 Awesome. 975 00:37:33,450 --> 00:37:35,280 But if you only get one or two, that's OK. 976 00:37:35,280 --> 00:37:37,740 You've got the whole weekend to finish up on that, too. 977 00:37:37,740 --> 00:37:41,920 So come back into this room 3 o'clock with your game set up, 978 00:37:41,920 --> 00:37:43,330 and we'll start the play test. 979 00:37:55,030 --> 00:37:59,520 Does everybody have a playable game? 980 00:37:59,520 --> 00:38:00,767 Yes? 981 00:38:00,767 --> 00:38:02,100 Thumbs up if you're ready to go. 982 00:38:04,760 --> 00:38:05,380 OK. 983 00:38:05,380 --> 00:38:08,400 All right, so we are not just playing our games. 984 00:38:08,400 --> 00:38:10,000 We are play testing our games, and we 985 00:38:10,000 --> 00:38:13,540 are following the Wizard of Oz method 986 00:38:13,540 --> 00:38:16,430 that Philip mentioned on Monday. 987 00:38:16,430 --> 00:38:18,590 By that what we mean is all of your games 988 00:38:18,590 --> 00:38:20,680 probably have some kind of computer 989 00:38:20,680 --> 00:38:22,370 that's doing something in the game 990 00:38:22,370 --> 00:38:25,554 that the player is interacting with the computer. 991 00:38:25,554 --> 00:38:27,970 What that means is there is some constrained communication 992 00:38:27,970 --> 00:38:31,607 between the computer and the player. 993 00:38:31,607 --> 00:38:33,190 This is a time where you want to think 994 00:38:33,190 --> 00:38:35,290 about what are the things that the player knows 995 00:38:35,290 --> 00:38:37,540 versus what are the things that the computer is doing. 996 00:38:37,540 --> 00:38:40,780 There's going to be a little bit of a difference going on there. 997 00:38:40,780 --> 00:38:42,855 Don't let the player know what the computer 998 00:38:42,855 --> 00:38:47,000 is thinking, unless it's actually part of the game. 999 00:38:47,000 --> 00:38:49,250 If you could imagine the computer saying here's 1000 00:38:49,250 --> 00:38:52,190 a screen with an icon on it that says some stuff, that's 1001 00:38:52,190 --> 00:38:53,382 something the player knows. 1002 00:38:53,382 --> 00:38:54,840 If it's just some calculation going 1003 00:38:54,840 --> 00:38:57,381 on in the background, that is not something the player knows. 1004 00:38:57,381 --> 00:39:01,240 So just think about it that way when you're doing this. 1005 00:39:01,240 --> 00:39:02,865 So how many teams do we have over here? 1006 00:39:05,640 --> 00:39:08,370 One, four? 1007 00:39:08,370 --> 00:39:10,510 OK, so pair. 1008 00:39:10,510 --> 00:39:13,130 How many teams do we have in here. 1009 00:39:13,130 --> 00:39:17,034 One, two, three, four, five, six. 1010 00:39:17,034 --> 00:39:18,650 Is that right? 1011 00:39:18,650 --> 00:39:22,260 So pair to your closest, and then pair. 1012 00:39:22,260 --> 00:39:24,170 And how many teams over here? 1013 00:39:24,170 --> 00:39:27,640 One, two-- is that three total? 1014 00:39:27,640 --> 00:39:33,290 All right, instructors will test the back one. 1015 00:39:33,290 --> 00:39:36,490 So you have 15 minutes to play one game. 1016 00:39:36,490 --> 00:39:39,410 I'm going to come back in at 3:15 PM and tell you to switch. 1017 00:39:57,850 --> 00:40:01,640 SARA VERILLI: OK, so we're going to do 1018 00:40:01,640 --> 00:40:04,945 the shift from the very fun play testing 1019 00:40:04,945 --> 00:40:08,405 and working on games to talking a little bit about project 1020 00:40:08,405 --> 00:40:08,905 management. 1021 00:40:08,905 --> 00:40:11,900 And as he said, we're trying to get the project 1022 00:40:11,900 --> 00:40:14,079 management in it bit by bit. 1023 00:40:14,079 --> 00:40:16,370 Hopefully the point at which it becomes helpful in each 1024 00:40:16,370 --> 00:40:17,980 of your projects. 1025 00:40:17,980 --> 00:40:20,090 So the first thing we're going to talk about here 1026 00:40:20,090 --> 00:40:21,380 is vision statements. 1027 00:40:25,110 --> 00:40:27,470 Why are we talking about vision statements? 1028 00:40:27,470 --> 00:40:31,440 I'd rather be play testing someone else's game. 1029 00:40:31,440 --> 00:40:33,640 The very short answer is because it's good for you 1030 00:40:33,640 --> 00:40:36,750 and because it's good for your project. 1031 00:40:36,750 --> 00:40:40,060 The longer answer is because a vision statement is really 1032 00:40:40,060 --> 00:40:42,760 one of the shortest and simplest ways 1033 00:40:42,760 --> 00:40:45,989 to make sure that you, the people on your team, 1034 00:40:45,989 --> 00:40:48,530 and the person you are making the game for-- assuming you are 1035 00:40:48,530 --> 00:40:51,910 making the game for a client, or an instructor or someone else 1036 00:40:51,910 --> 00:40:54,790 who might be interested in it-- are all on the same page 1037 00:40:54,790 --> 00:40:59,330 and understand that understand what they expect to get 1038 00:40:59,330 --> 00:41:01,650 at the end of the project. 1039 00:41:01,650 --> 00:41:06,137 It can't guarantee that you all believe 1040 00:41:06,137 --> 00:41:07,720 you're getting the same thing, but you 1041 00:41:07,720 --> 00:41:09,655 can get started by being on the same page. 1042 00:41:12,160 --> 00:41:17,030 Another very common early design document for games 1043 00:41:17,030 --> 00:41:18,350 is the design doc. 1044 00:41:18,350 --> 00:41:22,540 Has anybody here heard of design documents, I assume? 1045 00:41:22,540 --> 00:41:23,040 Yeah. 1046 00:41:23,040 --> 00:41:24,123 Do you know what they are? 1047 00:41:24,123 --> 00:41:28,400 Does anyone not know what I mean when I say a design doc? 1048 00:41:28,400 --> 00:41:31,207 OK, traditionally-- and this is actually 1049 00:41:31,207 --> 00:41:33,165 going further and further back into the history 1050 00:41:33,165 --> 00:41:35,890 of game development, for which I am thankful. 1051 00:41:35,890 --> 00:41:39,190 Traditionally, a game design doc was a document, 1052 00:41:39,190 --> 00:41:41,540 usually a big word page that might occasionally 1053 00:41:41,540 --> 00:41:43,480 get printed out, that pretty must described 1054 00:41:43,480 --> 00:41:45,870 the game from start to finish-- everything that was going 1055 00:41:45,870 --> 00:41:48,230 to happen in it, all the mechanics, all the characters, 1056 00:41:48,230 --> 00:41:51,900 all the stories, all the interactions, everything 1057 00:41:51,900 --> 00:41:53,930 that's going to happen. 1058 00:41:53,930 --> 00:41:56,670 It was traditionally a very big, long file 1059 00:41:56,670 --> 00:42:00,290 that, A, either someone spent a lot of time maintaining 1060 00:42:00,290 --> 00:42:02,760 and nobody be spent any time reading, 1061 00:42:02,760 --> 00:42:05,980 or, B, nobody spent any time maintaining 1062 00:42:05,980 --> 00:42:08,800 and nobody spent any time reading. 1063 00:42:08,800 --> 00:42:11,790 So it was not what I would call a very useful investment 1064 00:42:11,790 --> 00:42:15,300 of time, but a lot of time tended to get invested in it. 1065 00:42:15,300 --> 00:42:17,995 So you may ask, why? 1066 00:42:17,995 --> 00:42:19,870 At least partially because people feel better 1067 00:42:19,870 --> 00:42:22,040 when things are written down. 1068 00:42:22,040 --> 00:42:25,040 They'd like to have a place they can go to look at to say, 1069 00:42:25,040 --> 00:42:27,814 am I doing what I think we're supposed to be doing? 1070 00:42:27,814 --> 00:42:29,230 I'd like to go check the documents 1071 00:42:29,230 --> 00:42:30,188 and see if that's true. 1072 00:42:32,760 --> 00:42:35,054 Unfortunately, a really long document 1073 00:42:35,054 --> 00:42:37,220 that tries to detail everything is not the right way 1074 00:42:37,220 --> 00:42:38,700 to try and do this on a game. 1075 00:42:38,700 --> 00:42:41,410 Games change too fast. 1076 00:42:41,410 --> 00:42:43,560 And the thing you're trying to get to, 1077 00:42:43,560 --> 00:42:45,840 the end product of the game, is not written. 1078 00:42:45,840 --> 00:42:48,340 It's not something that's going to be something you look at. 1079 00:42:48,340 --> 00:42:51,310 It's something that happens in action. 1080 00:42:51,310 --> 00:42:54,340 So our proposed substitute-- and if someone comes up 1081 00:42:54,340 --> 00:42:57,320 with a better solution, I would love to hear it, 1082 00:42:57,320 --> 00:43:01,940 because vision statements are also not the perfect thing. 1083 00:43:01,940 --> 00:43:05,000 They're just better than anything else I've seen. 1084 00:43:05,000 --> 00:43:09,160 Our solution to this is a vision statement. 1085 00:43:09,160 --> 00:43:12,710 We tend to think that, in between a prototype, 1086 00:43:12,710 --> 00:43:14,800 and a vision statement, and really good project 1087 00:43:14,800 --> 00:43:18,010 communication, that's about-- and really good communication 1088 00:43:18,010 --> 00:43:20,590 on your project, that's most of the design documentation 1089 00:43:20,590 --> 00:43:21,090 you need. 1090 00:43:26,914 --> 00:43:29,330 All right, so we're going to talk about vision statements, 1091 00:43:29,330 --> 00:43:31,510 and then we're going to make one. 1092 00:43:31,510 --> 00:43:32,820 So there you go. 1093 00:43:32,820 --> 00:43:36,050 I forgot that I included the animation on the slide. 1094 00:43:36,050 --> 00:43:37,320 I did not time it right. 1095 00:43:37,320 --> 00:43:38,300 Oh well. 1096 00:43:38,300 --> 00:43:41,480 That's what I get for trying to be fancy. 1097 00:43:41,480 --> 00:43:43,100 So if a vision statement is going 1098 00:43:43,100 --> 00:43:46,360 to define the project-- so vision statements defines 1099 00:43:46,360 --> 00:43:49,130 the project-- or the game if it's for a game-- for the team, 1100 00:43:49,130 --> 00:43:50,720 for the client, and its investors. 1101 00:43:50,720 --> 00:43:53,710 What do you think it ought to include to do that? 1102 00:43:57,910 --> 00:44:00,290 I see my chalk boards have already been used, 1103 00:44:00,290 --> 00:44:01,930 and the chalk has been hidden. 1104 00:44:01,930 --> 00:44:02,740 There it is. 1105 00:44:02,740 --> 00:44:03,770 All right, any ideas? 1106 00:44:03,770 --> 00:44:04,640 Any suggestions? 1107 00:44:04,640 --> 00:44:06,060 What would you like to have in such a document? 1108 00:44:06,060 --> 00:44:07,190 You're the ones using it. 1109 00:44:07,190 --> 00:44:10,005 AUDIENCE: Goals. 1110 00:44:10,005 --> 00:44:11,820 [? Scope. ?] 1111 00:44:11,820 --> 00:44:13,010 SARA VERILLI: Goals. 1112 00:44:13,010 --> 00:44:13,770 Scope. 1113 00:44:13,770 --> 00:44:14,425 I heard ideas. 1114 00:44:17,050 --> 00:44:17,865 What kind of ideas? 1115 00:44:21,531 --> 00:44:22,500 AUDIENCE: [INAUDIBLE]. 1116 00:44:22,500 --> 00:44:23,458 SARA VERILLI: The game. 1117 00:44:23,458 --> 00:44:24,840 AUDIENCE: Goals, ideas. 1118 00:44:24,840 --> 00:44:26,460 SARA VERILLI: Goals, ideas, the game. 1119 00:44:26,460 --> 00:44:27,210 So I've got goals. 1120 00:44:27,210 --> 00:44:27,680 I've got ideas. 1121 00:44:27,680 --> 00:44:28,305 I've got scope. 1122 00:44:28,305 --> 00:44:29,973 I heard game. 1123 00:44:29,973 --> 00:44:30,720 AUDIENCE: Theme. 1124 00:44:30,720 --> 00:44:31,553 SARA VERILLI: Theme. 1125 00:44:31,553 --> 00:44:32,070 Theme, OK. 1126 00:44:32,070 --> 00:44:33,861 Theme, that sounds like a really good idea. 1127 00:44:37,299 --> 00:44:38,340 AUDIENCE: Core mechanics. 1128 00:44:38,340 --> 00:44:40,220 SARA VERILLI: Core mechanics, yeah. 1129 00:44:46,220 --> 00:44:47,040 Anything else? 1130 00:44:47,040 --> 00:44:48,640 AUDIENCE: The story if there is one. 1131 00:44:48,640 --> 00:44:49,473 SARA VERILLI: Story. 1132 00:44:53,112 --> 00:44:54,070 AUDIENCE: The audience. 1133 00:44:54,070 --> 00:44:55,028 SARA VERILLI: Audience. 1134 00:45:02,140 --> 00:45:05,940 Anything else you think you really need? 1135 00:45:05,940 --> 00:45:07,315 AUDIENCE: [INAUDIBLE] characters. 1136 00:45:07,315 --> 00:45:08,356 SARA VERILLI: Characters. 1137 00:45:11,410 --> 00:45:13,570 I think this is actually pretty darn good list. 1138 00:45:15,965 --> 00:45:17,590 The tricky part with a vision statement 1139 00:45:17,590 --> 00:45:20,078 is trying to get most of that in on one page or less. 1140 00:45:24,652 --> 00:45:26,360 The other thing that you vision statement 1141 00:45:26,360 --> 00:45:29,950 may want to include that is less relevant to the vision 1142 00:45:29,950 --> 00:45:32,530 part of the statement and more relevant to the team 1143 00:45:32,530 --> 00:45:34,570 is, who's working on the game? 1144 00:45:34,570 --> 00:45:36,930 What's the name of the game? 1145 00:45:36,930 --> 00:45:38,700 What is each person on the team going 1146 00:45:38,700 --> 00:45:41,597 to contribute to the game, so that the vision 1147 00:45:41,597 --> 00:45:43,930 statement becomes both a contract about what the game is 1148 00:45:43,930 --> 00:45:47,430 going to be and what the team is going to do to get it done. 1149 00:45:50,110 --> 00:45:53,140 So surprise, surprise. 1150 00:45:53,140 --> 00:45:55,240 We actually have a format for this. 1151 00:45:55,240 --> 00:45:57,010 Actually, we have two different formats 1152 00:45:57,010 --> 00:46:00,720 to help you get all of these things crammed in on one page 1153 00:46:00,720 --> 00:46:05,260 and hopefully express it well enough that you will understand 1154 00:46:05,260 --> 00:46:07,760 and be able to use it. 1155 00:46:07,760 --> 00:46:12,260 We have what we call the back of the box vision statement 1156 00:46:12,260 --> 00:46:14,280 and a high level design doc, and you guys 1157 00:46:14,280 --> 00:46:17,260 are welcome to choose to use either one of those two 1158 00:46:17,260 --> 00:46:17,950 frameworks. 1159 00:46:17,950 --> 00:46:18,866 They're up on Stellar. 1160 00:46:18,866 --> 00:46:21,437 They can be downloaded, and once I finish talking at you, 1161 00:46:21,437 --> 00:46:23,770 I will pull them up so you can see them up on the screen 1162 00:46:23,770 --> 00:46:27,470 and actually see what the files look like. 1163 00:46:27,470 --> 00:46:31,090 The idea behind the back of the box vision statement 1164 00:46:31,090 --> 00:46:33,090 is it takes a marketing pitch approach. 1165 00:46:33,090 --> 00:46:35,410 Instead of actually stating here's the goals, 1166 00:46:35,410 --> 00:46:37,201 here's the theme, here's the core mechanic, 1167 00:46:37,201 --> 00:46:40,070 here's the scope, the team comes together 1168 00:46:40,070 --> 00:46:43,390 and tries to find three, or four, or five bullet 1169 00:46:43,390 --> 00:46:46,820 points that would go on the back of the box that 1170 00:46:46,820 --> 00:46:50,470 capture those ideas within the bullet points. 1171 00:46:50,470 --> 00:46:52,300 You've all seen the box-- OK, maybe 1172 00:46:52,300 --> 00:46:54,740 you haven't seen the back of a game box 1173 00:46:54,740 --> 00:46:58,930 these days because half the games are being so downloaded 1174 00:46:58,930 --> 00:47:01,970 from Steam, but they still have the little marketing pitches 1175 00:47:01,970 --> 00:47:07,090 where it says fire 38 different guns, 1176 00:47:07,090 --> 00:47:11,010 form teams with your friends and back stab them. 1177 00:47:11,010 --> 00:47:12,114 That sort of thing. 1178 00:47:12,114 --> 00:47:14,010 [LAUGHTER] 1179 00:47:14,010 --> 00:47:19,220 But if that is the way your team thinks and your team envisions 1180 00:47:19,220 --> 00:47:20,970 the game back, that can be a very good way 1181 00:47:20,970 --> 00:47:24,495 to formulate and encapsulate all of those ideas, 1182 00:47:24,495 --> 00:47:26,120 especially if you can really drill down 1183 00:47:26,120 --> 00:47:28,800 to what are the four things you want people to say 1184 00:47:28,800 --> 00:47:31,090 about your game, and then every time you make 1185 00:47:31,090 --> 00:47:33,890 a decision about your game, every time you add a mechanic, 1186 00:47:33,890 --> 00:47:36,050 every time you add a story, a character, a setting, 1187 00:47:36,050 --> 00:47:39,260 you make a change of the way the game works, you can go back. 1188 00:47:39,260 --> 00:47:42,300 Read those four or five bullet points and say, 1189 00:47:42,300 --> 00:47:46,260 is this change actually enhancing and working 1190 00:47:46,260 --> 00:47:48,910 with that pitch? 1191 00:47:48,910 --> 00:47:51,160 And if it is, it's probably a good change. 1192 00:47:51,160 --> 00:47:54,780 And if it isn't, it probably is a bad change. 1193 00:47:54,780 --> 00:47:56,470 It gives you something to really have 1194 00:47:56,470 --> 00:47:59,110 a core of your game around. 1195 00:47:59,110 --> 00:48:00,741 Some people don't think like that. 1196 00:48:00,741 --> 00:48:02,990 Some people don't think in terms of marketing pitches. 1197 00:48:02,990 --> 00:48:07,717 They'd much rather have a better spelled out this is my goal. 1198 00:48:07,717 --> 00:48:08,550 This is the setting. 1199 00:48:08,550 --> 00:48:10,240 This is the mechanics. 1200 00:48:10,240 --> 00:48:14,610 A high level design doc is the solution for those people, 1201 00:48:14,610 --> 00:48:17,410 and in it, it asks for a goal statement for your game 1202 00:48:17,410 --> 00:48:21,740 as a short paragraph written out, rather than as pitch. 1203 00:48:21,740 --> 00:48:27,700 It's got a little less bang, but it is often more precise, 1204 00:48:27,700 --> 00:48:29,450 and both of them are equally effective. 1205 00:48:29,450 --> 00:48:31,820 What really depends on is which one 1206 00:48:31,820 --> 00:48:34,800 resonates with the team, which one the team thinks 1207 00:48:34,800 --> 00:48:35,680 works well for them. 1208 00:48:35,680 --> 00:48:37,180 That's why we have both of them. 1209 00:48:37,180 --> 00:48:40,240 They're really covering the same information. 1210 00:48:40,240 --> 00:48:42,860 You don't save anything by choosing one format 1211 00:48:42,860 --> 00:48:43,930 over the other. 1212 00:48:43,930 --> 00:48:45,770 It's just how are you presenting it 1213 00:48:45,770 --> 00:48:48,260 to yourself and to your team. 1214 00:48:48,260 --> 00:48:52,160 Both documents also ask for a little bit of game play. 1215 00:48:52,160 --> 00:48:54,510 A risk assessment-- what are the big risks on your game? 1216 00:48:54,510 --> 00:48:55,750 They may be related to your team. 1217 00:48:55,750 --> 00:48:57,833 Hey, we're trying an engine we never tried before. 1218 00:48:57,833 --> 00:48:59,510 We may not be able to get to run. 1219 00:48:59,510 --> 00:49:01,090 It may be related to the game play. 1220 00:49:01,090 --> 00:49:04,200 We are going to try and do a mechanic no one has ever 1221 00:49:04,200 --> 00:49:05,380 managed to do before. 1222 00:49:05,380 --> 00:49:07,410 Whatever your big risk is. 1223 00:49:07,410 --> 00:49:09,610 Just one or two sentences of it. 1224 00:49:09,610 --> 00:49:11,510 And then some space for your team members 1225 00:49:11,510 --> 00:49:13,468 to put in your names, what they're going to do, 1226 00:49:13,468 --> 00:49:14,477 stuff like that. 1227 00:49:14,477 --> 00:49:15,560 It's really pretty simple. 1228 00:49:18,140 --> 00:49:21,820 And the next step is, in fact, to do exactly that. 1229 00:49:21,820 --> 00:49:27,880 So as a three person team, go ahead 1230 00:49:27,880 --> 00:49:30,180 and decide which format you're going to use. 1231 00:49:30,180 --> 00:49:32,200 Create your vision document. 1232 00:49:32,200 --> 00:49:36,012 Decide who's going to upload it for Monday. 1233 00:49:36,012 --> 00:49:37,720 Make sure you've got people's names on it 1234 00:49:37,720 --> 00:49:40,780 so we know who did what, because if we're only uploading one 1235 00:49:40,780 --> 00:49:42,735 document, that means we're only getting 1236 00:49:42,735 --> 00:49:44,610 one document for every three people in class, 1237 00:49:44,610 --> 00:49:46,443 and we would like to give credit to everyone 1238 00:49:46,443 --> 00:49:48,216 for having worked on them. 1239 00:49:48,216 --> 00:49:50,590 And you're going to have until the end of class, so about 1240 00:49:50,590 --> 00:49:53,300 20 minutes. 1241 00:49:53,300 --> 00:49:58,840 Let me see if I can find where Rick has hidden the forms. 1242 00:49:58,840 --> 00:49:59,620 Are they-- 1243 00:49:59,620 --> 00:50:00,578 PROFESSOR: Yeah, sorry. 1244 00:50:00,578 --> 00:50:01,661 Don't look at my calendar. 1245 00:50:01,661 --> 00:50:03,820 SARA VERILLI: I'm not looking at your calendar. 1246 00:50:03,820 --> 00:50:04,320 Oh no. 1247 00:50:04,320 --> 00:50:05,970 I am looking at your calendar. 1248 00:50:05,970 --> 00:50:07,410 I'm sorry. 1249 00:50:07,410 --> 00:50:09,490 I'm not looking at the calendar. 1250 00:50:09,490 --> 00:50:12,110 You're looking at the calendar. 1251 00:50:12,110 --> 00:50:14,640 I'm sorry. 1252 00:50:14,640 --> 00:50:16,890 PROFESSOR: I don't know how well they're going to fit. 1253 00:50:16,890 --> 00:50:18,280 SARA VERILLI: Well, we'll do them one at a time. 1254 00:50:18,280 --> 00:50:20,000 We'll just do them one at a time. 1255 00:50:20,000 --> 00:50:20,860 PROFESSOR: [INAUDIBLE] kind of look. 1256 00:50:20,860 --> 00:50:23,090 AUDIENCE: To clarify, the upload comes before Monday. 1257 00:50:23,090 --> 00:50:24,569 Not before the end of class, right? 1258 00:50:24,569 --> 00:50:25,360 SARA VERILLI: Yeah. 1259 00:50:25,360 --> 00:50:28,570 Yeah, the upload-- the turn in date 1260 00:50:28,570 --> 00:50:32,262 is for Monday, before the start of class on Monday. 1261 00:50:32,262 --> 00:50:33,970 And the main thing is you're not actually 1262 00:50:33,970 --> 00:50:37,530 writing division doc for the prototype you just made. 1263 00:50:37,530 --> 00:50:39,590 The prototype you made is the core-- 1264 00:50:39,590 --> 00:50:43,860 is the core mechanics for the game you envision being made 1265 00:50:43,860 --> 00:50:47,120 with it for project two, OK? 1266 00:50:47,120 --> 00:50:50,050 So this is your vision document, your sort of pitchy document, 1267 00:50:50,050 --> 00:50:54,260 for project two-- with the game that will 1268 00:50:54,260 --> 00:50:56,552 be made for project two, OK? 1269 00:50:56,552 --> 00:50:59,010 All right, anyway so here's the high level design document. 1270 00:50:59,010 --> 00:51:04,640 I think that there's both an RTF format and a Word format 1271 00:51:04,640 --> 00:51:06,180 up there. 1272 00:51:06,180 --> 00:51:08,760 When you upload them, we much prefer it to be in PDF. 1273 00:51:08,760 --> 00:51:11,530 That way easy for us to read. 1274 00:51:11,530 --> 00:51:13,987 I love trying to do this while not being able to see 1275 00:51:13,987 --> 00:51:15,195 what I'm doing on the screen. 1276 00:51:18,805 --> 00:51:19,930 PROFESSOR: Look on Stellar. 1277 00:51:19,930 --> 00:51:21,700 SARA VERILLI: I like mice. 1278 00:51:21,700 --> 00:51:22,510 I much prefer mice. 1279 00:51:22,510 --> 00:51:23,259 I hate touch pads. 1280 00:51:23,259 --> 00:51:25,180 PROFESSOR: I also make mine kind of wonky. 1281 00:51:25,180 --> 00:51:25,875 SARA VERILLI: Oh, thanks. 1282 00:51:25,875 --> 00:51:26,430 PROFESSOR: You're trying to scroll. 1283 00:51:26,430 --> 00:51:26,910 SARA VERILLI: Thanks. 1284 00:51:26,910 --> 00:51:28,201 OK, yeah, I'm trying to scroll. 1285 00:51:28,201 --> 00:51:30,413 So this is basically the high level design doc, 1286 00:51:30,413 --> 00:51:33,570 and what it's got-- vision, breakdown, major game play 1287 00:51:33,570 --> 00:51:37,840 concepts, 30 seconds of game play, and then your risks, 1288 00:51:37,840 --> 00:51:39,644 and the team responsibility and breakdown. 1289 00:51:39,644 --> 00:51:41,810 Let's go ahead and jump over to the vision document. 1290 00:51:48,280 --> 00:51:50,660 And here's the vision statement one. 1291 00:51:50,660 --> 00:51:53,410 Basically all of that-- goal, and stuff 1292 00:51:53,410 --> 00:51:56,660 needs be contained in your back of the box advertisement. 1293 00:51:56,660 --> 00:51:58,957 And then the rest of it is pretty much the same. 1294 00:51:58,957 --> 00:51:59,540 Any questions? 1295 00:52:04,110 --> 00:52:06,895 OK, if there's no questions, go. 1296 00:52:26,110 --> 00:52:28,052 PROFESSOR: OK, before you leave, just 1297 00:52:28,052 --> 00:52:29,510 want to make sure we all understand 1298 00:52:29,510 --> 00:52:32,260 what is due tomorrow, because all of our projects 1299 00:52:32,260 --> 00:52:33,909 are pretty complex. 1300 00:52:33,909 --> 00:52:34,700 AUDIENCE: Tomorrow? 1301 00:52:34,700 --> 00:52:35,570 PROFESSOR: Monday. 1302 00:52:35,570 --> 00:52:36,070 Monday. 1303 00:52:36,070 --> 00:52:37,510 Thank you. 1304 00:52:37,510 --> 00:52:40,030 You're awake. 1305 00:52:40,030 --> 00:52:44,220 So for project one on Monday before class 1306 00:52:44,220 --> 00:52:46,660 starts-- so before 1:00 PM-- turn into Stellar 1307 00:52:46,660 --> 00:52:48,490 the following three things. 1308 00:52:48,490 --> 00:52:50,700 An individual post mortem-- so this 1309 00:52:50,700 --> 00:52:53,570 is a one page write up of your experiences working 1310 00:52:53,570 --> 00:52:54,740 on this project. 1311 00:52:54,740 --> 00:52:57,140 The specifications are in that project one assignment. 1312 00:52:57,140 --> 00:53:00,930 That's so we can know what you got out of this project. 1313 00:53:00,930 --> 00:53:02,260 The design change log. 1314 00:53:02,260 --> 00:53:03,740 You made some changes today. 1315 00:53:03,740 --> 00:53:05,800 So on your change log, you should at least 1316 00:53:05,800 --> 00:53:07,800 have one entry on it at the end today. 1317 00:53:07,800 --> 00:53:10,140 Now you've got two entries on it hopefully. 1318 00:53:10,140 --> 00:53:11,780 Test your game this weekend. 1319 00:53:11,780 --> 00:53:14,390 Make some changes to the prototype this weekend. 1320 00:53:14,390 --> 00:53:16,910 Add them to the change log. 1321 00:53:16,910 --> 00:53:18,180 Only one per team. 1322 00:53:18,180 --> 00:53:22,530 So appoint one person to submit all the team documents, 1323 00:53:22,530 --> 00:53:25,027 submit it, make sure all of your names are on it. 1324 00:53:25,027 --> 00:53:26,610 The vision document, which you've just 1325 00:53:26,610 --> 00:53:29,300 been working on-- one per team. 1326 00:53:29,300 --> 00:53:31,820 And again, it's a little weird for project one 1327 00:53:31,820 --> 00:53:33,910 because you're talking about what it 1328 00:53:33,910 --> 00:53:35,700 would be like for project two. 1329 00:53:35,700 --> 00:53:38,450 So under team roles and responsibilities, 1330 00:53:38,450 --> 00:53:41,489 project two is a six person project. 1331 00:53:41,489 --> 00:53:43,780 If you have an idea of what are the complex things that 1332 00:53:43,780 --> 00:53:45,450 are going to be needed for project two 1333 00:53:45,450 --> 00:53:47,800 that those mystery three people would be working on, 1334 00:53:47,800 --> 00:53:50,570 put them down-- or in your case, four people. 1335 00:53:50,570 --> 00:53:53,341 So imagine that you are working on this project for project 1336 00:53:53,341 --> 00:53:53,840 two. 1337 00:53:53,840 --> 00:53:54,510 Question? 1338 00:53:54,510 --> 00:53:58,785 AUDIENCE: Yeah, so for the vision statement things, 1339 00:53:58,785 --> 00:54:02,257 are we-- for the vision documents [INAUDIBLE] write. 1340 00:54:02,257 --> 00:54:03,840 PROFESSOR: Can you hold on one second? 1341 00:54:03,840 --> 00:54:05,195 I can't hear. 1342 00:54:05,195 --> 00:54:07,498 AUDIENCE: For the vision document that we have to hand 1343 00:54:07,498 --> 00:54:09,838 in on Monday, are we assuming that-- 1344 00:54:09,838 --> 00:54:11,682 for the team responsibility break down, 1345 00:54:11,682 --> 00:54:13,640 are we assuming that we'll be working on this-- 1346 00:54:13,640 --> 00:54:15,715 PROFESSOR: Assume you are working on this as-- yes. 1347 00:54:15,715 --> 00:54:17,798 AUDIENCE: Splitting up responsibility [INAUDIBLE]. 1348 00:54:17,798 --> 00:54:19,390 PROFESSOR: Exactly right. 1349 00:54:19,390 --> 00:54:21,760 Now, what we're doing in class-- one minute 1350 00:54:21,760 --> 00:54:24,427 to pitch your game as a project two contender. 1351 00:54:24,427 --> 00:54:27,010 You're going to come up here and just give us a quick elevator 1352 00:54:27,010 --> 00:54:27,590 pitch. 1353 00:54:27,590 --> 00:54:28,640 What is the game? 1354 00:54:28,640 --> 00:54:30,140 Why is the game exciting? 1355 00:54:30,140 --> 00:54:33,160 How does the game do what it's going to do? 1356 00:54:33,160 --> 00:54:35,090 Based on this vision document. 1357 00:54:35,090 --> 00:54:36,250 And then you're going to give us a demonstration 1358 00:54:36,250 --> 00:54:37,620 of the prototype, and that's actually 1359 00:54:37,620 --> 00:54:39,550 going to happen in this big-- basically how 1360 00:54:39,550 --> 00:54:40,735 we did play testing today. 1361 00:54:40,735 --> 00:54:42,110 You'll be demonstrating the game, 1362 00:54:42,110 --> 00:54:44,760 and more people will play your game so that we can figure out 1363 00:54:44,760 --> 00:54:45,700 which games we want to work on. 1364 00:54:45,700 --> 00:54:47,324 Question there and then question there. 1365 00:54:47,324 --> 00:54:50,090 AUDIENCE: So does it have to be [INAUDIBLE]. 1366 00:54:50,090 --> 00:54:51,530 PROFESSOR: Has to be paper. 1367 00:54:51,530 --> 00:54:52,620 This project one is paper. 1368 00:54:52,620 --> 00:54:53,745 Project one is non-digital. 1369 00:54:53,745 --> 00:54:56,908 AUDIENCE: So when do we know which projects everybody is 1370 00:54:56,908 --> 00:54:58,154 going to be working on. 1371 00:54:58,154 --> 00:55:00,570 PROFESSOR: By the end of class on Monday, all of the teams 1372 00:55:00,570 --> 00:55:03,240 will be formed for project two. 1373 00:55:03,240 --> 00:55:06,160 So project two-- again, it's a single player game, 1374 00:55:06,160 --> 00:55:06,950 project two. 1375 00:55:06,950 --> 00:55:09,140 Some of you have made multiplayer games. 1376 00:55:09,140 --> 00:55:10,257 That's OK. 1377 00:55:10,257 --> 00:55:12,840 Imagine what the game is going to be like for a single player. 1378 00:55:12,840 --> 00:55:15,320 Are those other players AI? 1379 00:55:15,320 --> 00:55:17,860 Make them AI, but project two [? as a ?] digital game 1380 00:55:17,860 --> 00:55:19,620 is only a single player game. 1381 00:55:19,620 --> 00:55:22,720 Do not turn in a multiplayer game for project two. 1382 00:55:22,720 --> 00:55:25,680 For project four, we're going to relax that, but for two 1383 00:55:25,680 --> 00:55:27,320 and three, just to make sure we're 1384 00:55:27,320 --> 00:55:30,840 getting some games in here let's make them single player. 1385 00:55:30,840 --> 00:55:32,659 Again, five minutes of game play. 1386 00:55:32,659 --> 00:55:33,950 Again, planning for randomness. 1387 00:55:33,950 --> 00:55:36,860 Is your game right now-- if project one doesn't quite 1388 00:55:36,860 --> 00:55:40,180 fit that planning for randomness theme, that's OK. 1389 00:55:40,180 --> 00:55:43,395 In your vision document, what would you do for project two 1390 00:55:43,395 --> 00:55:46,470 to beef that up to make that really pop out. 1391 00:55:46,470 --> 00:55:49,090 And again, project two-- those four engines 1392 00:55:49,090 --> 00:55:50,720 that we worked on today. 1393 00:55:50,720 --> 00:55:51,950 Not photon, Phaser. 1394 00:55:51,950 --> 00:55:53,300 I miswrote that. 1395 00:55:53,300 --> 00:55:56,487 Those are the game engines we're working for project two. 1396 00:55:56,487 --> 00:55:57,820 So I kept you a little too late. 1397 00:55:57,820 --> 00:55:58,554 Sorry. 1398 00:55:58,554 --> 00:56:00,220 If you want to keep working in the room, 1399 00:56:00,220 --> 00:56:01,886 I don't think anybody has it afterwards, 1400 00:56:01,886 --> 00:56:02,950 so feel free to work. 1401 00:56:02,950 --> 00:56:04,500 Feel free to leave.