Sunday, March 3, 2013

I want to learn game programming #1

So you really want to learn game programming, and you are asking where to start. I've been on the receiving end of this question so many times, that I tend to answer in autopilot. Let's get the scare talk out of the way first: making videogames is neither glamorous nor will it make you (or me) rich, it just so happens to be our passion.

It's hard work, there's a ton and more knowledge to build up on the technical side before even trying to attempt making a very simple game, and, after that, there's a lot more to learn about how to interact within a game team, with colleagues coming from different nationalities and working in different fields (from programmers to artists to producers to... managers). Work hours are long, depending on where you ended up they are even longer, the dreadful promise of crunch time in the hope that the game will be shipped on time is an always looming menace, with the little solace of the faint hope of a bonus at the end of the project (that practically very rarely or better never materializes). Speaking of money, game programmer is a very low paid job compared to other engineering fields.

If you are here to make money, move away. There's lots of good blogs on the web that teach you databases.

Are you still around?

Next question to answer is: what programming language do I learn?

Quick answer: not C++. Pretty much anything else is fine, but if I have to choose, I'd go for either Python or Ruby, two high level, dynamic languages that take most of the gritty details out of the way while you build up your confidence in writing code. At the beginning especially, you need to focus on learning how to solve problems in a simple manner and how to manage complexity: programming is hard, programming is a blend between engineering and art, programming is a creative and artistic endeavor. Mastering the Art of Programming, being games or any other engineering field, requires years of practice and not everyone will likely succeed: Keep It Simple must be your mantra.

Why not C++? Because it's a bloated, difficult, over complicated, extremely powerful language that will keep you bogged down forever in details that are completely irrelevant to learning programming. You will have to master it one day, but that day is not today.

... to be continued