GDC 2013 – Programmers Panel

GDC is over, and it was fairly awesome. I'll have a quick "thoughts on GDC" post later, but I wanted to get the information for the GCS panel I participated in up as soon as possible.

GDC did not record this panel this year, but thankfully, we have a fairly good unofficial recording of the panel thanks to Jeremiah Ingham. (sssshhh, don't tell GDC)

You can also just download the file, if you'd like.

The only real resources we recommended this year were at the end, where I asked each of the panelists recommended a book, and here they are:

If you have other questions of the panelists, please feel free to ping us on twitter. We're all pretty approachable (especially if we can respond in 140 characters or less).

Resources from the Professional Programmer’s Panel

I got an email recently asking about the resources we went over in our GDC 2012 panel this year. I figured it would be useful to have these in one place, so here we go!

Game development sites mentioned

Blogs:

Books:

  • Code by Charles Petzold

Mike also recommended (several times) that you get on Twitter (http://www.twitter.com), which is a piece of advice I whole heartedly agree with. Then you can follow all of the panelists.

When we were talking about game jams, we mentioned some longer game jams, including the Experimental Gameplay Project, Ludem Dare, and the competitions held on TIGSource.

If you have other resources for beginning game programmers, let me know and I'll add them to the list.

GDC Career Seminar Talk: 20 Lessons Learned

GDC is over, and my talk "From College To Industry: 20 Lessons Learned for Getting the Most out of Your Early Career" went fairly well I think.  The room was packed, which was no small feat considering how big it was, but I think that was mainly because those attending the Career Seminar had nowhere else to go during that time.  I could be wrong, though.  The title could have been that good.

Regardless, the slides for the talk are now posted and available for anyone.  I've been asked to give this talk a few more times, but I think I'm going to revise it a bit.  I really want to emphasize the two points about knowing business and making sure all the founders of a company are on the same page.  Of all the points in my talk, these two feel like the most important, but also the most belabored by other speakers, and also the most ignored.  They may be lessons that you have to learn the hard way, but want to do everything I can to really hammer those points home.  Hopefully I can accomplish that with revisions.

If you attended the talk, I'd love to hear your opinions and feedback.

Upcoming Talks

Just to keep people in the know, I'm giving two talks in the coming months. The first will be at Games Forum Germany (site is in German, obviously, thought the talk will be in English) on either January 27th or 28th, I don't really know which. The talk is titled "Data Driven is Half the Battle" and will be talking about why just setting up data driven code isn't enough, and how (both from a high level and a low level) you can create a system for giving others on your team the ability to edit your data quickly and easily.

The second talk will be at GDC, as part of the Game Career Seminar, which takes place on the Friday of the conference and is focused at students. That talk is called "From College to Industry: 20 Lessons for Getting the Most out of your Early Career" and is about, well, getting the most out of your early career. It is basically a lessons learned talk about my 10 years attending GDC, and my 6 years in the game industry. While that isn't a really long time in the game industry (anymore), I feel that some of the lessons I've learned over that time will only really be apropos to students for a short time, and thus it is most useful for me to give the talk now, when it will be most useful to them. I will be practicing this talk twice in front of student groups around the Boston area, once at WPI and once at a local SIGGRAPH meeting, to make sure that the talks really hit all the right notes and lessons and are as useful as possible to the GDC student population.

Both talk's slides will be posted on line after the talks, and the GFG talk will probably be cross posted to the Toolsmiths, since it is a tools related talk.

Newbie Tips: What Language Should I Learn?

One of the most frequent questions I get from high school and college students, especially after they read my school article in GCG, is "What programming language should I learn?" Generally, I reply to this question privately over email, but I figure it's something that I should have written about a long time ago, so here it goes. The answer is… it depends.

Now, I'm sure everyone was thinking the answer would be C++, and for the most part, you're right. But you're thinking I get this question from ONLY programmers, and only programmers that are at the level where they'd be able to work with C++ and not get intensely frustrated. Certainly, all people looking to be programmers in the game industry MUST learn C++ and MUST learn it well. But I'm getting ahead of myself. We should first look at the different type of people that ask this question and first ask them a key question: What do you want to be in the game industry? The answer to this isn't always a game programmer. Believe it or not, some artists ask this question, and I don't blame them. The more technical skills any artist has, the better they're going to be at their job. So, I've broken this down into three groups:

Programmers

If you want to be a programmer, and I mean a "real" programmer, and you're at least fairly comfortable with a computer, I recommend you start with C++. A lot of people are going to yell at me for this, because they think C++ is prohibitively hard to learn, that it's on its way out, that it will be taken over by more interpreted languages like Python or C# and that a programmer learning C++ is wasting his or her time. I don't buy it. Almost all AAA game companies still use C++ when it comes to systems level programming, and I don't see that changing any time soon. And even if I did, I'd still recommend C++. Why? Because you are always more comfortable in the language you start in, and C++, through its many idiosyncrasies (and, honestly, poor language design) forces you to think about things like memory management, simple optimizations, side effects, const variables, const methods, references, pointers and (as you get more and more advanced) things like v-tables, performance of virtual methods, memory layouts, and memory trashing. More modern languages do all they can to protect you against some of this stuff, but even they have weird performance pitfalls that, unless you have a sound basis in "close to the metal" programming, you won't fully understand and that you won't be able to optimize away.

In addition, many, many languages, are based off of C++ in some way shape or form. Regardless of whether they carry over any syntax or keywords, far too many languages are classified as "C-like" (including many scripting languages) for you to ignore it and think you'll be able to slide by without a full understanding of it.

That said, if you're in middle school or early high school, I will say there is no problem learning other languages that make your programming life easier, like VB, Python & PyGame, DarkBasic or C#. By the time you hit college, through, regardless of whether your school teaches it or not, you should be learning C++ on your own and some of the libraries that are used in game development with it (either OpenGL and / or DirectX, with a smattering of Win32, just for fun ;)).  Just be aware that if you're starting in a higher level language, that you may be forming some bad habits that may end up being hard to break.

Designers

Okay, so you want to be a designer. Join the club. Now, everyone wants to be a designer, and my advice for this was, not too long ago, think of something else to do. That is no longer the case. I now believe you can become a designer in the industry, just not the role some people think (aka, not the person who comes up with the idea for the game in the first place). Regardless, I won't go into detail about this in this article, suffice to say most designers should learn programming in some form. My recommendation is to learn the languages you will most likely use on a daily basis, and those are the languages that are used to automate tasks in Excel. This means VBA and VB.NET (and / or C#). You will be surprised just how powerful these languages are, and how much more effective you will become at working with Office after having learned them.

If you're really adventurous, you may also want to learn a scripting language like Lua or Python, and learn a game making framework like PyGame. Why? Well, cause, then you can make your own games pretty easily, and that's what you wanted in the first place right?

Artists

For your run of the mill artist, I say learn two languages: MaxScript (for obvious reasons) and Python. Unlike MaxScript, Python is actually used in other places than art, and is a more fully featured language. However, it's also integrated into most art tools, including Maya, so you waste no time by learning it. As a bonus, Python has PyGame, which means if you have even the slightest understanding of Python you can actually make your own games without programmer assistance. And if you can do that well, I hate you, as I have no art skills what so ever.

I also recommend that artists at least take a look at C#, as many game companies are starting to integrate C# into their tools pipeline, and a smart tools engineer will find ways to allow small C# "scripts" to be run on top of their tools (this is actually very easy to do, though it takes a bit of forethought in the tool's design, but I digress). Anyway, learning the language won't hurt you, and may help as C# becomes more common.

What about…

So, many people will read this and wonder what happened to their favorite tool or language. Flash and ActionScript in particular are missing, as are the scripting languages for tools like GameMaker. Well, in my mind these are specific tools, and if you want to use these tools (or you're forced to use these tools), then obviously you will have to learn their languages. The good part is that, as you learn programming languages, it becomes easier to pick up other programming languages, and the ones that I've mentioned as places to start are all languages that will give you a firm enough basis that you should be able to pick up other languages easily. I don't see the purpose of learning a specific language first. Their applications are so limited that their practicality is diminished.

So I hope that answers the question about what language you should learn. Hopefully this helps point some people in the right direction. Good luck everyone!

Programmer Portfolio Tips

Okay, I'll admit, I'm sometimes a little hard on articles on Game Career Guide. Which is funny because I've had two articles posted there
myself. So, I thought it only fair that I point out that this article on creating a game programming portfolio is actually very good. Also, since I think most of my readership is programmers, and interestingly a good number of student programmers, I thought I'd point you to it.

I do have two very minor criticisms of the article though. First, I think a lot of really good demos can take the place of one complicated game.  Certainly I always want to see a complete game, but some of the examples he puts down are actually fairly complicated.  Asteroids or Breakout, so long as it's complete, is fine.  I'd rather see something original, but it's not necessary.  If you have a lack of good demos, though, you should go for something more complicated in your full game.

Second, I don't think he puts enough emphasis on how important providing good, clean source code is.  It doesn't have to be perfect, but even if your Breakout game works, if it's complete spaghetti code it won't earn you any points in my book.  Make sure the code you provide shows a good mind for organization and good software engineering principles. That's what I'm more interested in anyway.

Any professional game programmers have additional insight for my student readers?

Game Engine Article (Again)

Hot on the heals of the web release of my Game Career Guide article on game engines, the paper / published version is now out, though the whole thing is available online for free. I'm almost always really happy with the print version of Game Career Guide. It has some great articles to help people who want to know more about breaking in to the game industry. It's just another one of those resources I wish I'd had when I was in high school / college. It also may have helped me price myself property (in terms of salary) both when I graduated and when I entered the game industry, but that's neither here nor there.

On a side note, I have to remember to put my blog in my bio for Game Career Guide from now on. I frequently get email from people asking questions about the article and almost as frequently I direct them to articles on my blog. I'm just no good at this self promotion thing.

Inside Out: A Little Ranty

Let me start by immediately apologizing to Brian Nathanson. He's about to get the brunt of my anger for something I've been dealing with for some time now, and I apologize that he just happened to publish an article that I so strongly disagree with right as I was thinking I needed to write another post on game education and its role in breaking in to the game industry.

I am, in some respects, an industry "insider." I've worked at one game studio and one game middleware startup. I've gone through crunch on a triple A title, I've helped ship patches and expansions on said title, and I was around for the pre-production of another triple A title due out soon. But, I only graduated from James Madison a scant 4 years ago (almost to the day, wow), so I feel I still have that connection to what it is like to be trying to break in. In another few years, I'll probably be too far removed to give this same advice, but for now I feel like I still know enough about what it's like that I can make some educated comments. Unfortunately, these comments are going to be directed at Brian, since he's publicly come out to talk about his experiences at a game school. Again, I'm sorry Brian.

First I want to enumerate what Brian did wrong, though some of this is going to be speculation from talking to other people that have had the same problems. First, Brian went to a school with a game program, probably without visiting the school, without knowing its teaching methodologies, it's success rate, and probably only because it offered a game development program. This is a mistake. Do your research on a school. If you haven't read my GCG article on the subject, please do. What you will learn is that there are a lot of things that make a school good or bad for any given student looking to go into game development, and the existence or non-existence of a game development program is not one of them. If Brian had visited his school before hand, he probably would have noticed that there are very few game companies in Arizona (comparatively) which means very few opportunities outside of the classroom, and that the school's staff was (probably) made up of mostly educators that were re-tasked into the game development program when they heard that game development programs were the next big thing. That would have set off warning bells saying this was probably not a place he wanted to go to school. But hey, game development degree means you'll work in the game industry right?

Which brings me to Brian's second mistake. He assumed that having a game development degree would entitle him to a position at a game development company. Because of this, he didn't work on networking and he didn't put the extra effort he needed into his portfolio (which he admits is not very competitive). I've actually heard this same "rant" from other people as well, at many different schools. They feel that a game degree somehow entitles them to a position at a game company, to which I say you are deluding yourself. Regardless of where you go and what you study, you're going to have to put work into networking and you're going to have to put work into being as good as you can be in your particular field. It's a supply and demand issue. There's a huge supply of people that want to be in the industry, and a fixed demand, partially determined by the amount of money that is flowing into it at any given time.

Which actually brings me to the crux of what I hate about this article. It's encased in these two quotes from Brian. First:

I believe the industry needs to allow for outside and inexperienced people to reinvigorate the game development process. I believe that those who have a shipped title on their resumes, while talented and dedicated, perhaps are closer to burning out than an individual out to make his or her mark…. Individuals with base skill sets and true passion are ready and waiting to be given a chance to shine. These talented and passionate people bring fresh new energy and commitment into an industry that seems to always be juggling profitability with volatility. New ideas, new game mechanics, and new appeal could be created by those who just want to make a game they would like to play. Smaller, more tightly focused, and perhaps less expensive games could be the result if the industry allowed more inexperienced developers to work while growing their skill sets.

I hear this all the time. This is bullshit masquerading as wisdom. Yes, you're right, the industry needs more new people, more fresh ideas, and more companies should take risks on recent graduates. I myself was a risk, and I'm very glad that someone somewhere decided that I was a risk worth taking, hiring me into the game industry after only a year of non-game work. But there are companies out there that hire interns all the time (EA, Bethesda, Harmonix, Ubisoft and LucasArts just to name a few) so there are people out there taking the risk of getting new energy. But this idea that all you need is a base skill set and passion? No. If you had enough passion you'd find a way other than getting a game development degree and you wouldn't be writing this article. In addition, there's nothing stopping you from doing a small, tightly focused game with a few friends on the cheap, but that's not what you want. If it was, you'd be doing it regardless of anything else. What you want is a job at a big game company doing big games, and you're upset they won't hire you straight out of college when you don't have any experience save what your teacher assigned you.  Sorry, but there are people out there in the giant supply of recent graduates that did more, regardless of whether they have a game development degree or not.

It comes down to this: If you really wanted to make games, you'd be making them. Stop giving me the excuse that the guys with the money aren't giving you the time of day. You make something interesting enough, the guys with the money eventually come knocking.

But the last idea here is what I think really misses the mark:

Having more game education schools at more recognizable public universities would attract more people into the field and would go a long way toward getting more women involved in the industry.

Because having a computer science school at basically every major public university got more women interested in computer science? Sorry, this is completely off the mark. There are people that work very hard getting more women (and other minorities too) involved in the hard sciences and in computer game development. The only thing this solution does is make game development degrees more common, which is not something we need to see. Sorry.

In the end, I think Brian's just frustrated with the closed nature of the industry, and I can understand that. But, again, it comes down to supply and demand. Lots of people want to be in the game industry because games are cool.  But not many actually want to really make games, and the distinction is very very key (though we can get into that another time).  For now, though, the only way we can tell the difference between these candidates is by the amount of work they put in to actually being a part of the industry. Regardless of what school you're at do these things (though the good schools will make you do this anyway): Go to GDC. Go to IGDA meetings. Network. Have your own personal projects.  Prototype games small games.  Finish small games.  Do stuff outside of class and show us that you really want to MAKE games.  Show us that you're worth the risk and we'll take it. If you're not going to bother, why should we?

(Final disclaimer: I'm not trying to put down all game schools here.  There are some great ones, and there are some programs I wish were available when I was looking for schools, but honestly, do your research before going anywhere that advertises a game development program.  Most of them really suck.  In addition, I don't know Brian and I've never met him, so I'm potentially putting a lot of words in his mouth.  This is not intentional.  I'm ore using him as a name for lots of other people who have had similar complaints in the past.)

QoL Newbie Questions

So a little while back I asked for your questions on the game industry. Bryan was kind enough to ask two very good questions, both of which are almost too advanced for a breaking in FAQ, and I felt were too important to be pushed to a comment, but they deserve answering, and I apologize for waiting this long to answer them.

The first question:

Some developers cite 60 hour, 6 day a week schedules like they are trying to drive people away from the industry. They speak as if this is acceptable and that only those with true passion for the work can hack it. Am I ignorant in thinking that someone - passionate or otherwise - could not possibly sustain quality output under these conditions? Is this an accurate snapshot of the industry?

This is a hard question to answer. At times, Bryan is absolutely right: it seems like developers cite their long hours in order to drive people away from the industry, and sometimes seem to wear their long hours and tough crunches as "badges of honor" (as one developer I know put it). This is a shame, as it drives perfectly talented individuals away from the industry.

But the question is, is this reality in the game industry, and I'm afraid that the answer is yes, especially if you are new to the industry. Though you don't work those hours constantly, crunches can be pretty brutal, and can last for quite a long time (depending on the company and the game). There's definitely a reason that the game industry has something like a forty percent burn out rate within five years. Think about it. That means if you're sitting in a hall of developers new to the industry, look to your left, then look to your right, one of those people will not be in the industry in 5 years.

However, I will say that many companies and individuals are trying to correct this. Any company that has a CEO or lead developer on or active in the IGDA Quality of Life SIG is one where these types of hours will not be the norm. Some studios that run scrums do so because they want to avoid long periods of crunch. But, understandably, sometimes these studios are hard to get jobs at, because they attract some very talented individuals that understand, like you do, that these types of crunch to more to hurt productivity than help it. However, if you can join a company that knows how to avoid crunch, balancing the rest of your life becomes fairly easy.

As a final point, I will say that you absolutely need some sort of passion to be in the game industry, though not necessarily for games (you can be passionate just about writing really clean SPU code like some people I know), and not necessarily because of the long hours you’re going to have to work. Really, you need passion because 90% of the work in the game industry is just as tedious and monotonous as work in other high tech disciplines, except that your pay will be lower, your benefits will be lower and customers tend to be pretty ruthless. If you can ignore all of that, working in the game industry is pretty damn awesome.

The second question:

How does it start for most developers? Specifically people today. Obviously we have not been making games for our Commodore since we were 8. Do most come from other disciplines with experience in related fields? Are most newbies (to the industry) today fresh out of college, eager to show their talents?

So, interesting story. I’ve been talking with my co-workers and other Boston game industry people for a while and they like telling stories about some of the geeky things they did when they were younger (from programming to electrical engineering, to whatever). Now, I’ve always been interested in games, but I didn’t really get into programming until late high school, and I didn’t really make a game until college. So, I’m evidence that you don’t necessarily have to program the Commodore since you were 8 to become a productive member of the game industry. That said, I wish I had some of those stories (a failed RPG maker game is about as cool as my stories get).

However, now more than ever, you have to start looking early for game industry jobs, because entry level jobs become more and more rare as time goes on. When you hit college, you should start networking, get to know people, and start feeling your way around the industry. Additionally, start making games, and (if you can) find other people to make games with, especially if you’re not at a college or university that has a games program (this is common advice that I give to everyone). If you wait to start networking and wait to start actually making games, it will be harder to find a game industry job as a “newbie.” If you take a job elsewhere, you’ll find it hard to make the time to make games after college, and, even if you do, you may find it harder to adjust to the inevitable pay drop (note this pay drop is programmer centric, artists I’m told get paid very well in the game industry compared to other industries). Basically, the idea is to take the time when you have it (in college) and take the risks when you’re young. Show that you are interested in the game industry early. By waiting, you just make it harder for yourself.

Hopefully that helps with your question. If you have any more, please feel free to post them!

GDC Swag

So, I spent this weekend moving. Literally down the street from my old place, but still, regardless of how far you go, you always have to put things in boxes and you always end up throwing a lot of stuff out. In m y case, I actually ended up throwing out a lot of t-shirts that I’d gotten from GDC and other computer related events (I actually still had my two shirts from when I was on programming team in college. That’s right, I was on programming team). It led me to this piece of advice for students and others going to GDC.

Don’t waste your time swag hunting.

Darius probably has this mentioned somewhere on his blog, but your time is better spent elsewhere. This is my 6th year at GDC, and I will tell you right now that, after this move, I will have kept the following items from all 6 years at GDC.

  • 3 large blue PlayStation cups, snagged during booth crawl
  • 1 nVidia cup, also snagged during booth crawl.
  • 1 deck of cards from ILM / Lucas Arts
  • 4 IGDA shirts (from the past 4 years, I got rid of the other 2)
  • 3 GDC shirts, the ones that actually come in your bag. I discarded the rest, including my shirts the year I was a CA
  • 2 branded shirts, one for LoTRO, and one for Maya (which is completely black and on the back says “> south You have entered a dark place. You are likely to be eaten by a grue. >”, and on the front says “Maya: Can you imagine”)
  • 1 (broken) Microsoft DirectX backpack and the accompanying organizer that went with it.

That’s it, and it should be mentioned that only the top three items were “swag” in the traditional sense (meaning I got them on the expo floor). And I didn’t have to hunt for it. The cups are filled with beer during the booth crawl. Stop by 2 or three booths, grab the cups you want. If you’re like me, you just go to the front of the line and grab a cup, since the beer is usually pretty cheap anyway. All the other stuff you can get from attending specific events or being a member of an organization, and hunting for it will do you no good.

So what did I throw away? Tons, and some of it before I even left San Jose / San Francisco. Until you actually do the rounds at the GDC expo, you have no idea how much crap swag hunting will generate for you. As soon as you step foot on the expo floor, you will be bombarded with mints, shirts, pens, puzzle boxes, demo CDs, rulers, key chains, silly putty, stress balls, bouncy balls, chap stick, boomerangs, rockets, calendars, pads, little gel creatures, silly putty, decks of cards, Slinkys (that don’t work), magazines, bags, and maybe (if you’re lucky) something that might actually be useful for you some day.

Now, I know that you’ll do the swag hunt. You have this big bag, and you want to fill it with stuff. Especially “cool” stuff like rockets you can fling at people and crazy t-shirts. But while you’re doing that, just remember there are people there, handing out swag, that probably have interesting things to say. More interesting than what they’re trying to give you anyway.