Tuesday, January 13, 2009

Reposted from a TIGSource thread on the "timeline of programming," i.e., how people got into this hobby and how long it took:

I started "programming" when I was about 5 or 6 years old by copying simple GW-BASIC games out of 3-2-1 Contact! magazines. I'd make small changes to understand how it all fit together and eventually learned to write my own games (most of which were of the PRESS ENTER TO NOT DIE variety, but hey, I was 6).

I liked programming and dreamed of being a programmer on big commercial games (or as I said back then, "I want to work for Nintendo!"), but I lingered in BASIC purgatory for a while, mostly writing QBASIC games and eventually trying Visual Basic when they added VB DirectX hooks. I dabbled in level design and 3D modeling and animation, but that went nowhere. I knew that programming was what I really wanted to do, and if I was going to really make it, I needed to learn C++. (Bear in mind, this was around 1999--the current era of high-level languages with wonderful libraries wasn't what it is today. And I wanted to make big commercial games, which are still typically written in C++.)

My self-discipline back then wasn't as strong as it is now, and I never could take the time to learn C++. I enrolled in a Computer Science program at college where they offered a Java path (for most students) and a C++ path (recommended for students who already knew C++). It wasn't a great CS program. I spent two years in CS Java hell and eventually took an elective class that (unknown to me at the time) required all homework to be submitted as C code. So I finally, in the lamest way possible, wrote my first working C program and so began the long road into C++.

For the next two years, I wrote a mix of Java, C, and C++ for different classes, only vaguely grasping the differences between C and C++ and not really feeling like I was learning anything. Of course, CS projects are pretty far removed from games, and I finally realized that I just needed to man up, stop wasting time watching TV, and MAEK GAEM. I downloaded SDL, dug into the documentation, and made a bouncing ball demo. It had sprites moving around, it had keyboard input--once I could do that, I thought, it was a small step to make a game.

Meanwhile, I'd been looking at the Guildhall at SMU as a path into the games industry, but I didn't believe in myself. I didn't think I had what it took to be accepted there. On the other hand, I didn't want to program business applications for the rest of my life, and my only graduate school alternative was to follow my dad's steps and go to law school. I aced the LSAT--it's all just logic and any good programmer should do fine on it--but I had no passion for law. I wanted to make games. So in my senior year, I started cranking out game and tech demos with the intent of building a portfolio for entry to the Guildhall. Months of anxiety later, I was accepted to the Guildhall, but I still felt like I was behind the curve in game programming. I spent the months after graduation brushing up on the areas of C++ where I knew I was weakest (namely, the entirety of object-oriented programming in C++).

The Guildhall was an awesome experience for someone like me--spending all day every day immersed in programming and games and learning genuinely useful information from the teachers and classmates. It's what I imagined undergrad was like before attending and being disappointed at the lack of passion there. If you ever have the opportunity to spend two years with twenty other programmers equally as driven and enthusiastic about game programming as you, take it.

And so I graduated the Guildhall, got my job in commercial games, and continued to program independently on the side. I finally feel that I really grok C++, but I'm finding so much more to learn in related fields: I'm developing better build processes, getting excited about tools development and content pipelines for the first time, exploring shaders a bit more, and reading lots of papers on graphics and game AI.

tl;dr: It took me about 18 years to get my black belt in game programming, and that's just the beginning.

0 Comments:

Post a Comment

<< Home