Experienced Points

Experienced Points
The Language of Game Development

Shamus Young | 13 May 2014 15:00
Experienced Points - RSS 2.0
Experienced Points Game Development

You can see this divide in a lot of the major game engines like Unity, CryEngine, Unreal, and every id Software engine since 1996. They are all written in low-level languages, but they have these high-level scripting languages bolted on so you can write clear and (one hopes) readable gameplay code while still having the core of the engine optimized for speed.

Which brings us back to the original question:

"What programming language should I learn?"

I'm a C++ programmer. (For the purposes of this discussion, I'm not going to draw a distinction between C and C++. I do both, but difference isn't important here.) The language is the backbone of modern game development. But being the backbone doesn't mean it's the most interesting, rewarding, or expedient. It's what operating systems are written in. It's what drivers are written in. It's what big-time graphics engines are written in. It's very fast, very powerful, and an absolutely terrible place to begin learning programming. As our machines get faster and faster, we need C++ less and less. As much as I like C++, I can see it's on the way out. It's not going extinct or anything. (At least, not in my lifetime.) But it's becoming a less critical part of a growing whole. AAA studios are limiting what gets done in C++, and indies are actively avoiding it.

My advice is this: Do NOT start with C++. If you want to know where to start, I suggest Python. I don't know it myself, but the conventional wisdom is that it's a really good place to go to learn to type some stuff and have something interesting happen. I spent an hour with it last year, and it did live up to its reputation as something you could pick up without needing to bog yourself down with a bunch of arbitrary rules and programming theory first.

But before you go running off to earn your black-belt in writing code, maybe stop and ask yourself what it is that attracts you to game development. It's just one of many, many jobs in the industry. If you just want to design games - like, you enjoy coming up with gameplay systems and rules - then there are a lot of roads that lead there. Artistic and management jobs can land you at the head of a team just as easily as a programming position. Maybe even easier.

If you're young, don't sweat it. Try lots of stuff. See what's fun. Don't wait to take a class on it. Classes are great, but don't limit yourself to what adults can teach you because a lot of the most relevant stuff hasn't been turned into curriculum yet. Just hit Google and see what's out there. Try making some mods for existing games. (Skyrim and Valve games are both decent places to start.) Try making models or textures. Even if you come back to programming, you will be enriched if you understand what artists want and need when they're doing their job. Far too many young people make the mistake of selecting their major and then seeing if it suits them. Experiment as much as you can.

One final note: you shouldn't see programming as this distant, mysterious, and esoteric body of knowledge. Movies tend to elevate technical people to the status of space-wizards. But just because knowledge isn't widely known doesn't mean it's hard to learn. Don't get caught in the trap of thinking, "I'm just a regular person. I could never do that." The secret is that we're all just regular people. Programmers are not strange aliens with gigantic pulsating distended brains. We're just oddballs who enjoy this stuff. If you enjoy it - or if it sounds like you would enjoy it - then you have the most important thing: You have passion. Go for it.

Shamus Young is the guy behind Twenty Sided, Spoiler Warning, and How I Learned.

Comments on