Being active in several forums for developers (CodeGuru, MSDN, Ronua) I see quite often people saying “I want to write games; what do I have to learn?” Turns out that the kind of games they want to write vary from chess to card games, from shooters to stragety games over the internet. But they can’t even write a “hello world” program. This post is dedicated to all the kids that after playing countless hours of Counter Strike, Unreal Tournament, Warcraft or Need For Speed decided that it would be really cool to write a games themselves.
Now, I’m not saying you could not write one, of course you could; but not something like FIFA World Cup. You could write a Gorillas, or Tic Tac Toe or even a simple five-in-a-row, but before even doing that you have to learn the concepts of programming. You have to pick a language (perhaps C++, C# or Java) and start learning what objects are, what are variables, arrays, strings, what is a virtual function, how do you handle memory, and many, many others. Then you have to start learning Windows programming concepts, and how you deal with windows, dialogs, controls, and many more. Only after than you could hope thinking about writing games.
As for games such as Unreal Tournament or Starcraft, take a look at the credits; you’ll see that tens, perhaps hundreds of people were involved in the development of such games. Designers, developers, testers, art directors, and many more. They have put thousands of hours of work each. Large teams take 1-2 years to write a game such as Need For Speed, even when a platform is already in place, from a previous version. It’s simply not something that one or two young unexperienced people can do.
But that doesn’t mean one day you could not be a part of such a team, working on the next greatest first person shooter. Before that, however, you have a long way ahead. So start learning programming first, and then think about games.