First, gaming. If you're going to be a game programmer, you need to be a programmer first. Game programming is a subset of programming.
www.gamasutra.com is an excellent resource for information on the game industry. Sign up and spend plenty of time there. You should also obtain UT2004 the dvd edition and watch all of the video training manuals. Good stuff. Real good stuff.
BTW, despite what these 'get a game design degree in two years' schools would have you believe - game companies are NOT hiring these people. Gamasutra had a survey a while back and game companies are only hiring these people if they already have a college degree in compsci or art AND one of these degrees. Don't waste your time and money. Besides, if you really love programming, you'll probably come to realize that the thought of working for a game company is a lot cooler than actually working at one. Again, see gamasutra.
Languages.... games are written in several languages. Based on a game related report I did last semester, I would say C++, Java, and Python are the three to know right now. C++ is the most commonly used for traditional pc and console games. You must know C++ to get a game programming job at most studios. Java is becoming popular. Why? Besides the somewhat obvious online places like
http://games.yahoo.com - there are MMP's, j2me and dirty java. MMP's have are very much like any other enterprise system. You have users, authentacation, security, connectons to a database, network components, etc. Java solves this problem well. A sort of CPP client, Java server system. Dirty Java is also becoming popular - google it. J2ME is now the most commonly used language for cell phones and pda's, which is a huge and very fast growing market. Everyone has a cell phone - and games for them are going to grow, grow, grow. Finally, Python. Python has sort of quietly become
the scripting language for game engines. Don't worry if you don't know what that means - just log it away in the back of your head somewhere and spend some time with Python. Great language, nuff said.
What language should you choose to learn first? Hard to say. C++ is the hardest to master, but it is also the prefered game language. Java is very much like C++ in syntax (in fact, if you know one then you can basically read the other) and is the easiest path to creating a gui. Python is an incredibly well thought out language. An excellent starting language. So which to choose? All three are excellent 'first choices'. You'll have to decide. It certainly wouldn't hurt to know all three. Each has a place. Google 'thinking in python' ... and download it, along with thinking in java and thinking in c++ - read a few chapters of each and pick one.
Some 'different' comments on C++
------------------------------------------
Alright, don't listen to these guys, they should be ashamed (see below). Oh, and BTW, Deitel books SUCK! Ok, they're not quite that bad, but I think there are better alternatives. Why? Because they never cover WHY is why. They only tell you how and never explain in depth 'why' you want to do something (w/ the exception of the SE sections at the end of some chapters, but why the hell are they putting SE in a programming language book anyways?!). Also, they're damn near useless as a reference - little code examples are spread out all over the damn place - "now was that in chap 4, 8, or 18". Why does this index look like a rainbow?! PITA! They do have some good examples, but I really beleive there are better alternatives. Some of the GUI examples are good. A copy this code affair.
An
excellent free resource on CPP is Thinking in C++ -- google it. Unlike the Deitel books, Bruce explains how and WHY you should do things. It isn't all pretty, 256 colors, just a good no nonsense programming book with plenty of code examples. Do yourself a big favor and dl the free copy. If you like it, you can buy the print edition at most bookstores (or order it online).
If Eckel is a little too advanced for you.... I'm not sure how old you are, level of computer experience, etc. Let me know and I'll find my original CPP book. It covers everything in detail at a pretty slow pace and each chapter has a project that is analyzed and explained. Good stuff.
Now for the bible....
and Dex and Jip should be ashamed for not mentioning it. If you're going to program in CPP, you MUST have this
book by this
man. All other CPP books, tutorials, and materials (w/ the notable exception of the 'Effective' book) pale in comparison. Seriously. It is absolutely the best CPP book on the planet. Hell, it might even be the best book on the planet. Own it, sleep with it, memorize it - don't let anyone else read it - they're only going to try and steal it!
Since money is an object, I would do this - download the thinking in cpp and when you're done with that book - get the bible. All you need to cover the C++ language. Also, spend a fair amount of time at Bjarne's website. Real good stuff there.