DirectX, XNA, SDL, Allegro, OpenGl, PyGame, many more! ??? whats your personal favorite ? Whats catching up? Which way to go and why ? Lol so many open ended questions! take your time.
I've been really impressed with XNA. Not only is it really fast to write for it also will run on your XBox 360 which is damn cool if you ask me. I watched Chris Bowen at last Code Camp Boston write pong with graphics and music in an hour. It was mind blowing.
Assuming you're a hobbyist thus far...
Use XNA if you want to use the latest Microsoft .NET technologies (and if you're not concerned with being portable outside of Windows and the 360). It's the successor to Managed DirectX and if you sign up for their $99/year service, you can test your games on the 360.
All libraries serves a purpose
- DirectX - popular, windows only
- OpenGL - popular, multi platform
- XNA XBox?
- Allegro - More lightweight and can't handle 3d that well
- SDL - Mostly for 2d games
For PS you have to get another SDK I believe
I haven't done much work in these but this is my general understanding of these and may be wrong.
Well, it's probably hard to get by without DirectX, if you're a professional developer.
For Semi-Pro's and small projects, I've come to love XNA because it's C#, allows cross-platform development for PC, Xbox360 and Zune, and it's the only way to get your hobby game on a console legally. Plus you can do all the cool stuff like Shaders, Multithreading and Xbox Live as well! You may want to top it off with TorqueX but certainly it's not necessary for most smaller projects.
If you're a beginning game developer, i whole-heartedly recommend the ultimate learning Game Development tool: Game Maker. It's free and for a small fee you get additional cool stuff like networking, particle effects, etc.
With our free project on the Windows platform, we're going with Ogre3D, FMOD and PhysX. All of these are free for non-commercial use (and Ogre3D is free even for commercial use.) My experience has been that all of these work great and have faced no major problems, and I'd go as far as to say that FMOD is the best in the sound engine field.
Being able to quickly prototype games using pygame is increadibly powerful. It is basically libSDL wrapped in python, and it leverages that really simple api for handling events, user input, audio and graphics (not to mention making OpenGL easy).
I wholeheartedly recommend it, even for serious game development.
Oh, also, it's super portable.
SDL + OpenGL
Why? Because they'll run on ANYTHING. The market is a lot bigger than DirectX allows for.
My favorite is XNA, it's relatively easy to learn compared to C++ & DirectX or OpenGL and the best thing about it is that you will write games in C#, which is Cool
. (Why is C# cool? it is because: it's not by a stretch as cryptic as C++/COM, it is a static language which means lots of compile time checks, and is a modern oo language, very expressive and makes writing games fun).
Also the XNA library is not too shabby either, you get a lot of stuff by default, lots of computational methods for matrices,vectors, etc, higher levels of abstraction (already has mesh objects, texture objects, effect objects).
The content pipeline is another nice feature of XNA, very helpful once you are past the first steps.
XNA has a lot of third party support, SOFTIMAGE|XSI Mod Tool.
SFML - Simple, Fast, Multimedia Library.
I've found it pretty damn good for my purposes. It doesn't require any extra setup to start working with OpenGL (unlike SDL), it's designed as a C++ OO library and is generally really simple and easy to work with.
I use XNA. That's what I built Air Legends in.
I love it. Such a bonus you can code and test for Windows, then flick a switch and have an XBOX 360 version in no time. Took me just 1 evening to make the minor XBOX 360 adjustments.
OpenGL, because it's multi-platform, and I have experience with it dating all the way back to its very beginning on SGI workstations. For the faint of heart, though, of the things on your list, I've probably heard the most good about SDL with the killer feature being that it's multi-platform, but you could also pick-and-choose different multi-platform libraries if you are good at putting them together into one engine.
Check out Torque-X. It's the Torque Game Builder for the XBox. It uses the XNA libraries and actually creates a whole app for you. I mean you still have to design it but it's much easier as you don't have to write the engine.
Something no one has even talked about his the possibility of mobile development. I decided to go the way of c++/SDL/opengl. If mobile is the future, I am sure not all mobile phones will be supporting DirectX, It is better to brave it and head into the c++/opengl(es) dungeon. The benefits are (mobile (iphone/symbian,linux),MacOSX,Windows,Linux)
XNA is good, but the feeling of being limited to their platform when everyone else, especially indie guys are busy cutting their PIE from the iphone market aint too good.! I am pretty sure more mobile platforms will follow their footsteps in the future and I dont seem them doing DirectX
I used XNA before. But now I'm on a Mac doing some iPhone game dev with cocos2d. It's really nice. Though it's abit tough to go from C# (with garbage-collector) to Objective-C with all its memory management.