What you need
I will try to write this little post to be a reference to what you need to actually do game programming. I dont claim to be a pro so you will probably argue with me, but these are the things I have learned from my experience. I do this to the background that we, here at cboard, get alot of posts where the poster is abviously (at the moment) aiming too high.
The first thing you need to know is, of course, a programming language. And its not enough to just have read a book on it, done a few "Hello World" type of programs and maybe a calculator or 2. No you need to know a the, or rather how you can use the language and the tools it provides. Once you start with an API you will note that the game programming is very different from console programming. Although it is not necessary to know an graphics API, you will gain lots and lots of experience by doing say a text rpg, and there is nothing wrong with that. A finished console textgame is more rewarding than any unfinished graphical game. When I continue to talk about game programming I mean game programming using a graphics API.
The second thing you need to know is some sort of graphics API. It can be OpenGL, DirectX, Win32 API, SDL, Allegro, whatever, you need to at least know at least some of the tools the API provides. You will learn alot while you do the programming but there is no way you can start with a game without knowing what translate means, or how textures works in that API. The more you know about the API the better but dont stare yourself blind on the API, there are alot of things around it, some are harder than getting the picture on the screen.
The third thing I am going to cover is the ability to solve problems, because problems there will be. Dont think that just because you know the language and the API, the process will be easy. No, if you are looking for ease game programming is nothing for you. Game programming is ALL about solving problems. "How will I manage this, how will this object access that value, how do I code this behaviour, how do I get this to do that when the user does this, what must I do to make this square show up like that and how can i perform calculations on it?" are only some of the questions you will ask yourself while you program the game. Take for example an RTS: What should happend when the user tells the game that a new unit should be built? How do I create the new unit and manage it? How will I make sure the unit has the correct texture and values? How do I seperate the units from friend and foe? These are only a scrap on the surface of all the problems that comes up when you program, and if you feel that you cant find a solution to these problems (perhaps not the best, the importance is to find A solution, and of course that your code is structured enough so you can update that solution when you find a better one) perhaps you set your goal a little high (maybe not the end goal but you will have to have small goals on the way to the big goal).
The fourth and last thing is an eye for math. You dont have to be very good at math, just look at the member Bubba here, I think he at some point posted that he flunked math in school but is now regarded as one of the game programming gurus on this board. Math is something you can look up while you program, and I also think that this comes hand in hand with the problem solving part. If you can solve problems you will probably also have easy for math. Another thing to keep in mind is that 2D == not so hard math, 3D == harder math. You will often want to start with 2D to actually gain more experience with all these points I have talked about; The language (trust me you will learn ALOT by programming games), the API (same goes for this), the problem solving and math part.
Ok so you feel you have all these parts, so your ready to jump in and program Quake 10 or the next breathtaking MMORPG right? Well not really. The type of game you decide to create also decides how hard it will be. A 2D MMORPG will most likely be much much much harder to make than a simple, "lowquality" 3D FPS. The old saying "Crawl before you walk" is something that fits perfectly to game programming. There is no chance in h*** that your first complete game will be a "simple" MMORPG (because there are no such things as simple MMORPGs). I am not saying this to discourage you, chances are that if you attempt to create an MMORPG and then see that you cant make it you will just lose all your motivation and quit gameprogramming all together. Pick something that is suitable for your level of knowledge in these points I have taken up.
Now finally I am done but I want to say this first: I have not written this to discourage you or anything, I wrote this to help you decide what type of game that should be your first.
I know it is alot of text, and I am not a very good writer but this is my view on gameprogramming.
What about multiplayer? Isn't coding a game to be Multiplayer compatable quite a bit different than singleplayer?
I dont have any experience with multiplayer but I doubt that it wouldnt be easier than coding for singleplayer since you then have more problems to solve (like, how will the server handle the clients, how will the clients recieve data, how will the clients keep the syncronization betwean them and so on). I dont have much experience with game making but this is what I have learned so far (I have been working on a bigger project for quite some time, which you will probably find if you search the board), and it while working on that project that I learned all the things I have written here.