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.

12 accepted

Game programming is fun, but challenging. I don't think most "gamers" would enjoy the process of writing a game.

The would-be designer needs to consider the abstract design of the game (that is, what are the rules, mechanisms and goals of the game), the target computer platform and an estimate of how much time he wants to dedicate to this kind of project. Games can be an enormous effort to produce -- even tiny space invader clones are, for the novice, full of unexpected challenges and can take days to produce.

If you are new to programming in general, you should first learn that. Get up to speed on simple CGI programming or text processing. That will help give you the tools to understand some the concepts that attend game programming. I recommend learning Python or Java as an introduction to programming. Both support games well. When you're ready to design games with tighter real-time performance requirements, consider C++.

Are you an artist? If so, can you produce your own graphics for your game? Does your game require complicate 3D graphics? Are you good at producing sound or background music? These assets are essential parts of a game. You can stub your way through the design with placeholders, but the success of your game often depends on these assets.

I have used Pygame, PHP and Perl to write games (although none of them are particularly good). I'm currently working on a game in Java. Ultimately, the language and toolkit choice is determined by the platform you're targeting. If you want your game on a console, you'll probably be doing C++ or .NET. If you want to make a web game, Flash, Java or DHTML will be your easy choices.

You might want to get Killer Game Programming in Java. It's a weighty book, but it walks you through the basics very well. The Pygame's web site has solid documentation for that toolkit as well.

Perhaps you might consider using an existing game framework for creating your first game? Frameworks like Novashell and Adventure Game Studio are good tools to let your rapidly prototype many kinds of games without learning the gory details of graphics programming.

In any case, good luck with your project.


SDL + OpenGL

Why? Because they'll run on ANYTHING. The market is a lot bigger than DirectX allows for.


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.


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.


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.


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.



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.


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.


By the way I'm currently doing this - http://i35.tinypic.com/9pn75s.jpg alt text


And another answer for XNA. I teach both my 2D and 3D programming classes using XNA, and my students really enjoy it. Also great for prototyping out game ideas.


Flash and XNA (they don't work together, unfortunately).


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.


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.