Originally posted by: drag
Yep..
Direct3d is roughly equivilent to OpenGL.
DirectX is roughly equivilent to LibSDL.
SDL runs it's 3d stuff as a wrapper around OpenGL.. but the game designer can choose or not choose to use this and use OpenGL or DirectX/Direct3d directly.
It also provides sound (supports surround sound), file system access, input (keyboard, mouse, joystick, etc), as well as also probably some basic windowing stuff for menus and whatnot (not sure about the last bit).
It's designed just to make things easier for game designers so that they don't have to worry about the system-level details (unless they want to). All of that is taken care of through SDL.
It runs on Linux, Windows (ontop of directx or opengl), and OS X. It also has ports to many other platforms such as smart phones, pdas, and is used on games on the Playstation 2. But is fully capable..
It features bindings with many different languages such as C, C++, Python, Java, Ruby, Perl, PHP and the like. So if you _realy_ want to write a PHP game, you can.
A couple big games that I know of that used SDL are the Linux port of Unreal tournament.. at least 2003 and 2004, but I am not sure what earlier versions used. The next Unreal tournament should have a port of that also. They used OpenAL for the sound though (becasue at the time of original UT port sdl sound system was still pretty basic)
With Quake3 and Doom3 Id software had it's own sound system and such that is a decendant of the original quake/doom stuff.
With Quake4 they dropped all that and moved to OpenGL and SDL. For both Windows and Linux, I beleive... although with previous versions of their games they used DirectX for the non-3d part. So I am not sure for the Windows version. For Linux, definately.
LibSDL lags behind in the features compared to DirectX. It's definately not a one to one comparision and there are going to be certain trade offs when it comes to being very cross platform.. but SDL is quite capable and is used in a handfull of successfull commercial games.
For the actual gaming engine there are a few to pick from if you want to make a game.
There are quite a few, but the most popular OSS gaming engines that I know of include Ogre3d and Crystal Space 3d. These are full 3d gaming engines designed to be the basis of modern games, free software and otherwise.
They are quite capable with, I beleive, Ogre3d concentrating more on graphics. Crystal Space is more full featured and has more in the way of physics and whatnot, were with Ogre3d you'd have to look for physics libraries and such (which exist in open source form and propriatory forms) to use in your game or do that stuff yourself.
http://www.ogre3d.org
http://www.crystalspace3d.org
They generally use C++ for programming languages. Although they have support for python bindings and other type things like java. Python itself is fairly popular in games.. it's ease of programming lends itself to difficult and normally time consuming programmings.
For instance BattleFeild 2 used python for it's AI and character scripting among other things. Python is kinda unique in that it's easy to script with.. then you can include modules and whatnot written in C/C++ for speed sensitive things. Also it lends itself to be used in programs generally written by other programming languages.
Also there are other cross-platform gaming engines..
Such as Quake3.. Since it's Open source now you can use it in whatever game you want. Things that were popular mods at one point are now moving to being independant games. Improvements in stability, speed, and portability are being made to it and it's something that I'd think would be interesting to any hobbyist programmer.
The CVS code is aviable..
http://icculus.org/quake3/
Older Quake engines also are being used...
And that all is just open source stuff.
You've got commercial game engines that work fine in Linux, like the Torque game engine (100 bucks), which is based on the original Tribes game.