Ok so here is the down low. I am an intermediate C++ programmer and I am looking towards what I want to do in the future. That would be video game programming. Now here is where the big question lies, where should I start?
I run Ubuntu 11.04 and Windows 7, and I have all of the necessary tools installed on either. Now where should I start? I am not aiming for awesome 3D UI right away, just simple 2D sprite movement and background music, but I know, babysteps. Should I start with OpenGL and all of the stuff that goes with it in order to make a game, or should I just go and try for Directx? Also with your opinion if you could recommend a source to learn from I would be most appreciative! Thanks and have a good day!
There are many different paths to take. It all depends how much you really want to learn, and how easily you could get bored.
To start at the lowest level, learn how to create a window in windows. Its more complicated than you think. Im working on a project at the moment where im wrapping the windows API in classes, its been done before but im learning so much from it. Once youve made a window, you can populate it with an OpenGL or DirectX viewport.
OpenGL and DirectX are similar so its really up to you if you want your games to be cross-platform or Windows-Specific, but once again you're starting from a low level and will take a very long time to learn it all.
If you want to start making simple 2D games, used the SDL library. Its build on top of OpenGL, and can be extended to support 3D. There are many tutorials on the SDL website too. (SDL stands for Simple Direct-Media Layer).
I think I may just start off with OpenGL. I started doing some work with it but it seemed like DirectX could do more. But I prefer to work in Linux so OpenGL will work well! Now when it comes to sound will I need to OpenAL or is there a way to do it in OpenGL?
So SFML is like OpenGl in that it is portable, multiplatform, can interact with OpenGl code well but with the advantage of Audio and a few other things. I won't lie, I just kinda skimmed over the features and the FAQ's for now.
It looks really interesting and like it would be fun to learn and kinda what I want to learn! But the question arises, is SFML widely used? I know that it said it can interface with OpenGl...Ok now I lost my train of thought...Oh well! It looks fun to learn and like it is exactly what I want to do! Thank you for the suggestion! Both of you! Now to learn and expand my horizions.
SFML is a wrapper that sits atop of OpenGL, OpenAL, and other libs in order to make them easier to use for simple and common game tasks.
It's not the kind of thing that is used in the professional industry, but it's a very good starting point.
SDL is the same idea, and has been around longer, but is more C-ish, and doesn't have as many "out of the box" features (although there are add on libs that support most of what SFML does)
In regards to the cross platform idea: http://www.winehq.org/
Every program written for Windows is cross platform. This statement isn't 100% true but the guys at WineHQ are damn close to accomplishing it.
A slight correction to what Jaso333 said; it's SFML that is built on top of OpenGL. SDL allows for easy integration with OpenGL but SFML is OpenGL.
The advantage of using DirectX over OpenGL is that DirectX is the API that M$ based their console API's on. This means that porting your games to the Xbox console becomes MUCH easier, if it's not already automatic. Also the market domination of Windows machines and the wrapper I mentioned above means that you will mean you are not limiting your fan\customer base. It's also worth noting that the OpenGL DLL included with Windows is version 1.2 or something like that, so you would need to distribute and statically link the version of OpenGL that you use.
"Intermediate" doesn't really mean anything to me so I would recomend that you start learning the design and workflow concepts with SFML\OpenGL.