A new post in less than a month!? Whaaaaaaaaaat!?!?!?
Every once in a while I browse the forums on Gamedev.net and the #gamdev channel on IRC. Rarely do I actually join the conversation. Usually it’s because by the time I get to a particular conversation, someone has already answered the question and I have nothing to add, or someone has answered it and I don’t fully agree, but don’t feel the effort to explain my disagreement is really worth the effort. Or it just isn’t that important.
However, something I’ve been seeing a bit of is “I learned the basics, where do I go from here?” Specifically, the topic in question is C++ programming. A lot of seniors who are experiencing senioritis, also known as “Just Let Me GTFO Already Syndrome,” talk a bit of smack about the last year and a half at DigiPen. Specifically DigiPen’s Computer Science program. Or at least, me and all the seniors I knew did. However, to be fair, the first two and a half years of DigiPen sets a good foundation of skills and topics you should have. If you aren’t good at them, they’ve at least introduced you to them and that allows you to go on your own to master them.
Something that kind of gets to me is when people respond to this with things like, “I’d recommend using stuff like SDL or SFML” and/or “start learning DirectX or OpenGL”. I’d like to take a step back here. For one, this is a person who just finished gaining a firm grasp on what they consider “the basics”. In other words, they’ve learned how to syntactically use the language and are familiar with basic programming concepts. Going from grasping the fundamentals to graphics programming and having to handle windows and GUI elements is a huge gap!
For a beginner who has never touched anything outside of printf() or std::cout before, or heck, anyone looking to improve for that matter, I’d recommend introducing a few new challenges to what you already know and build up to you’re goal. So, in the case of a command-line warrior, make a game completely in ASCII. Building any game, even text games, will give you valuable experience.
After you’ve made a game or two in ASCII and feel comfortable, move on to 2D. 2D isn’t as complicated as 3D and introduces you to window management, the message pump, linear algebra, and the graphics API you choose. And all of these skills DIRECTLY translate over when you eventually get to 3D. And, obviously, once you feel comfortable in 2D, move on to 3D.
If you’ve gone to DigiPen, you’ll recognize this progression. What it all boils down to, in my opinion, is scope. Going from knowing hardly anything to attempting to learn ten different things all at once can be overwhelming. With this progression, concepts are introduced at a slower pace, allowing you to focus on a smaller set of problems at a time.
There are many potential ways to approach game development, but I feel that many new developers want to jump the gun and we encourage them. Take it from someone who’s jumped the gun a few times and bit off more than he could chew, slow down. I promise you’ll get better faster.