What direction should I take from here?

To put it frankly, I am getting to the point where I need to decide what I want to major in. I have narrowed it down to a few things, and one of those is programming. I've always had that "I want to make a video game!" thought in my head, so I'm going to be working more towards that.

In school, I learned C++ (some what past beginner understanding of the language, obviously I need a refresher though), minor Visual Basic and a little bit of Java. I am thinking I would like to stick to C++ (edit: but I am thinking of just using C# to make my life easier) though, and start with that.

First question being, what compiling program should I use? The only program I have ever tried was DevC++. I have heard of CodeBlocks, but I am wondering what would be the best and easiest to start with, and ultimately end with?

Second, should I be using Source SDK, Unity, or something similar for game programming? I'm not exactly sure how either of them work, but I want to know if it is something to mess with. And if it is, which one?

Third, are there any exceptionally good books or websites to learn what I need to learn for C++ game design? A list would be helpful, and I'm not shy about spending money on a program as long as it's good.


Edit: Suppose I should also ask, should I get into game modding (will probably be Half Life 1/2) for a little bit before trying to create a game from scratch, or with Unity or similar?

C++ is a good language to stick to, but if you are want to make a game using a prebuilt engine you are mostly out of luck there. When working for games here are what i know and have learned:

Unreal Engine 3: I have worked with this engine for a little over 4 years and can tell you it is one of the best. Learning UnrealScript is a bit of a pain to get started but once you know, it is a lot easier. The engine has alot of features for games and the documentation will make you a master in no time!

Unity3D: I have worked with this for 2 years and have found quite the hatred for it. It has amazing coding features using C# and can compile in real time. Only downfall is you cannot see all of its features for free!

I have only listed two of the many engines because these are some of the best to get you started and still have a pretty nice game in the end. If you want to make games though i would suggest you go and learn a graphics API such as DirectX or OpenGL. Those APIs will get you started with a rendering component and get you furthure along in your career.

Compilers: The best compiler i have found is the one that comes with Visual Studio. The license for the compiler is quite expensive, but it is the easiest to learn and use and come with all of its features for free. If you want another alternative i know CodeBlocks isn't half bad.

Last thing is you do not need to spend money to learn a language at all! First of all i would go and download the DirectX SDK and look through the sample browser it supplies. The browsers comes with just starting a proect to doing volumetric shadows. Looking through the code while looking through sites and references from gamedev.net and youtube will make you a master!

Hope this helped!

So essentially, for making a game it is learn C++, learn DirectX, and learning many other things before I can get into making something moderately big? It seems using Unreal Engine (or something similar) would be a huge improvement of time over that. At least for now.

Do you think I should go ahead and start with learning more of C++ and learn DirectX before moving on further, or should I just stick with something like Unreal Engine for now?

Also, the latest version of the DirectX SDK is June 2010, is that okay?

Yes the latest version is June 2010 and  and i would recommend you learning a language first. C++ is a good place to start only for the fact of all of the tutorials online and large ammount of documentation.And yes for a big game or moderately big games i would stick to engies pre built. 

Well, I already know basic C++, the only thing I completely failed at was creating the Windows Applications, I least I think that is what they were called. But I think that was because of lack of direction, and me getting frustrated easily with it.

What part of C++ should I look more into? I already understand basic syntax, functions, etc.

Structures and classes if you already know the very basics ... classes are a large part of what makes C++ so great!