Tuesday, January 29, 2013

The Past and Future of Game Development Education

This was originally posted by Colt McAnlis on his blog. Sharing some of his experience with game development and creating the HTML5 Game Development Class.  

With most things, when you get to the end of an adventure, you start thinking about the beginning, which for me, started waaaay before our upcoming UDACITY course on HTML5 Game Development.


Education has always been an important portion of my career. Back in the early 90’s, when I started getting into game-development, education on the subject didn’t publicly exist; I had to teach myself what was needed through scraping together tutorials, Quake 1 / 2 source code, and hounding the gamedev.net forums. It was slow, painful, lonely, annoying work, and the results were often hit and miss. By the time I hit college my obsession had driven me from a novice to a self-educated semi-stable games-programmer, which caused nothing but grief for my CS professors (looking back, I greatly apologize to all of them ;)

The constant lamentation that I had during my self-education was the isolation. Honestly if it wasn't for a handful of contributors on the flipcode.org pages and GameDev.net forums, my career in Game development would never have happened.

That’s why I jumped at the opportunity to work as a part-time Adjunct professor at SMU Guildhall school for game development; Firstly I was impressed that this school even happened: you had heard of specialty schools like DigiPen and Full Sail, which were mostly specialty technical schools, but an accredited university picking up game dev? Wow.

Secondly, I couldn't help but see myself in the process; If I had some formal system of grizzled developers educating me on game dev, I might have been a better developer, faster. In some ways, this opportunity would be a way to try and help these pending game-developers with mentor-ship that I never had. I spent a great  4 years working there, teaching courses on Math, Physics, Graphics, and Concurrent programming. During that time, I was able to connect with hundreds of students and bring to them knowledge of all the crazy game-dev stuff that was stuck into my head. Quite frankly, I loved working with the SMU staff, and was really sad to have to move on from that chapter in my career.

I also found during that time, Engineering in Game Development is the most unique, difficult, and complex skill set across disciplines for programming; It’s very hard to find a set of programmers that have to produce as much content in a short millisecond frame time. Seriously, think about it; an RTS has to do pathing, network prediction, physics/collision detection, animation, visibility culling, scene setup, lighting, shadowing and finally graphics submission/rendering; in 30ms.

In contrast, a web-developer is considered as doing really good if their site loads in under 3 seconds.

Game dev is hard and most times unrewarding considering that most game-players won’t spend their time talking about your long hours optimizing the terrain rendering, and instead will complain about a 0.02s change in the cast-rate of your Druid build.... So part of teaching game developers involves a bit of ego-breaking; You have to let them know that any of their work is only part of the larger picture.

Back to the point, fast forward 3 years (Seriously? WTF?) I’m sitting in a cafe at Google’s Mountain View campus where I’ve spent the past year as a Developer Advocate, writing code, planning strategically, and largely educating developers. +Peter Lubbers, and I were chatting about how to reach more developers on best practices in web-game development, when he said:

“What if we did a UDACITY course on making an HTML5 game?”

I’m not really sure I ever agreed to do any work, or formally asked to be part of the project, I just started rambling on about curriculum, time frames, and started mail-bombing Peter with ideas and code snippets. We had recently wrapped up our exercise building the HTML5 PvP game GRITS, so there was plenty of content available, and it seemed like the perfect chance to bring that knowledge to more developers.

Fast forward 4 months to January 2013, where +Sean Bennet and +Calvin Hu are hunched over a video timeline, trying to find the best way to edit out my usage of the phrase “Your mom” from a UDACITY video snippet for our upcoming class; meanwhile Peter is syntax checking all the code snippets, grumbling about how awful our code looks. It’s a massive understatement to say that working with the UDACITY folks has been an amazing experience; Peter, Sean and Calvin are world-class superstars to work with, and have made creation of the course a fun and awesome process; Those guys built this course, I just opened my mouth and vomited out all the crazy game dev stuff locked in my head. The entire endeavor has proven something I’ve been thinking for a while now, standard-education for game-development is a difficult path to climb. Game devs are young, energetic, ambitious, impatient and generally focus on challenging the status quo; they need their attention funneled into an intense education curriculum to get them up and moving fast. SMU, DigiPen, FullSail and UDACITY are changing how developers make games, in the right ways.

So what’s the course about? Directly we've broken down the GRITS framework into a Client-side, and Server-side curriculum, and this first course focuses entirely on the client. We tried to approach the content to present all the tips, tricks, tools and ‘useless info’ that’s needed to make a fast, functional, client-side-only web game. The team has worked in overdrive mode to make sure that we present the right amount education, humor, and great games-industry stories to keep people interested. (also, trying to balance the right amount of @FAKEGRIMLOCK references...)

So if you’re looking to start making HTML5 games, sign up for the class now! If we’re lucky, and there’s enough feedback to warrant it, we just might be able to do the 2nd course, where we teach you how to write all the server-side portions of the GRITS code base; So no pressure, but if you like the course, tell your friends ;)

The class is set to go live on February 4th, followed up by a series of live-streamed weekly study groups, from the Google offices in San Francisco; So if you’re in the area, make sure you stop by for some face-to-face tech talk on a weekly basis!

Until then, here’s a nice blooper reel for you folks to sink your teeth into :)