Is There Life Beyond DirectX?
Zangief asks: "Almost any gamer has, at some point, the idea of making their own game. I am no exception, so I've been playing around with SDL, which appears to be the logical decision over the craziness of DirectX. However I have also noticed that other alternatives, such as ClanLib. There is something else? Are there any other libraries, dev-kits, or tools that would be good for indie developers?"
check out http://crystal.sf.net its good library to start you on the road of game programming in 3D
AZTEK
Allegro Homepage
Comment forecast: Bits of genius surrounded by a sea of mediocrity.
Also don't forget about Allegro (alleg.sf.net), which is pretty easy to use, and can be used on many platforms, even the lowly MSDOS.
Here is the mother lode: http://www.flipcode.net/
Really it depends on what sort of game you plan to be developing. If you are going to try out life as a small independant designer, you might want to try out some Flash stuff. I'm serious. Some people crank out a bunch of shareware Flash games. They're fun and easy to distro.
If you are looking at bigger projects, or trying to learn the coding side to things, you can pick apart one of the game engines in the above site. If you want to learn the real technique behind graphics, then you need to learn DirectX or OpenGL. That is where the real stuff gets done at the moment.
GG
As the sourceforge site says:
CG is C for Graphics. You can use it write really awesome graphics directly to DirectX or OpenGL. http://www.nvidia.com/object/cg.html
Still, if you want a unique game, with a unique feel, you'll probably end up writing some assembly, and mostly C/C++ for OpenGL.
Check out Programming Linux Games, by a Loki developer by the name of John Hall.
It goes over SDL in depth, and shows how to integrate OpenGL into it as well. As well, it touches on some other APIs of note, such as SVGALib, GGI, ClanLib, OpenGL, Plib, Glide, Xlib (for video), GTK+, TK, Fltk, Qt, and SDL_gui (for menu widgets), OSS, ALSA, ESD, and OpenAL (for audio), and cl, Guile, and Scheme (for scripting).
No comment.
you might try getting strated with pygame, a wrapper to sdl for python.
obviously if you need every single cpu tick to count, you shouldn't use this. but, it can do 30 frames per second if you write good code.
There are engines already built and out there, completely open for your use. Some of the best-selling games over the past couple years have been Mods built onto existing game engines. Why fuck with SDL/DirectX/ANYTHING when you can start off building a game, instead of an engine?
-- 'The' Lord and Master Bitman On High, Master Of All
SDL seems like the only choice. Unless you specifically want/need DOS support, or a few other platforms other libs will get you, SDL supports a large number and has gone beyond the critical mass of 1) things that use it 2) developers interested in it and 3) employed developers who spend time caring about it (Even if it's in their off time :)
SDL has also of course been used for a number of commercial games, I've used it myself with regard to two ports - One from windows which already used SDL and was extremely easy to port, and the other from Mac OS (not X) that was difficult to port and we added SDL to that so it can just as easily go to windows, BeOS, etc.
Check out ioquake3.org for a great, free, First-Person Shooter engine!
Sun has recently started paying more attention to java as a gaming platform and has been pushing java along with OpenGL as their solution.
A Multiplayer Strategy Game for Mac OS X, Windows, and Linux
Torque appears to satisfy most of what you are looking for. It's the Tribes 2 engine available to indie developers for $100/programmer.
I haven't worked with it personally, but I have looked over the feature set and demos and it appears to be a very capable game development platform.
Just remember, you need a game design, good artwork, and competent coding. There's more to game creation than "wouldn't it be cool if..." (though that's where good games start!)
Good luck!
What's wrong with DirectX?
From what I understand, it's a pain in the ass sometimes, but it's got some strengths that are hard to ignore:
1.) Well supported. Works across 98, 2k, and XP. That's MILLIONs of machines there.
2.) DirectX not only handles graphics, but sound and input as well. It's just not somethting you get from OpenGL.
3.) It's always growing. Supposedly they always have new features and stuff going into DirectX. Can't say I know how that compares with other API's, but it seems like Nvidia and ATI are always doing something with MS there.
For the record, I really am asking "what's wrong with DirectX", as opposed to using that as a clever way of saying they should be using it. I'm not the most informed person on this topic and I welcome some education on the matter.
"Derp de derp."
Gamedev.net has a TON of resources relating to game development, including a giant reference section which points to a lot of information about anything game-related.
Related to your question, a good compromise between low-level OpenGL and a full game engine (or even a commercial one here) would be GLUT. Instead of giving a piss-poor explanation of what the GLUT library is all about, I'll just point you to their FAQ. For sound there is OpenAL or the ubiquitous FMOD.
Depending on what you're looking for, a library probably is out there just waiting for you to find it. Instead of asking very general questions like this, I highly recommend you check out a little search engine called Google to find libraries or engines that suit your specific needs. Cheers!
The big problems will come when your game has to be RMS/DRM-compliant to run at all.
Got time? Spend some of it coding or testing
There's an SDL port to KOS, a small operating system which runs on the dreamcast. So most of your experience with SDL will translate into an easy path to developing for an actual console.
Everything will be taken away from you.
I'm sure other people have pointed it out, but pygame is an excellent choice to get started. Python is fun and easy (*criminally* fun and easy), and a lot of the wrapper classes will use similar names as the real-deal c/c++ libraries.
...*so* much is taken care of for you already. Don't trust my code, as I haven't untarred my 10gb home directory backup (and I'm not going to) in order to tell you how easy PyGame makes things. :^)
Seriously. I made a graphical mp3 juke-box player (like for drunk people at parties), and my code to keep music playing looked something like:
def keep_music_playing():
if !pygame.sound.is_busy():
song = get_song()
pygame.sound.play( song )
else:
pass
def main():
thread.start( keep_music_playing, 5000 );
--Robert
1) poorly supported; SDL+OpenGL does masses of platforms and targets (e.g. X, framebuffer, aalib) within those platforms that DirectX won't;
2) SDL does more with sound and input than DirectX, and handles stuff like enumerating CD drives, handles events that DirectX knows nothing of, and you can use parts of it (you needn't ship interfaces to all);
3) DirectX grows unpredictably and in directions ordained by Microsoft; SDL is GPL, make of it what you will.
Got time? Spend some of it coding or testing
> Criticism comes easier than craftsmanship. -Zeuxis, 400 B.C
Heh, I wonder who he was criticizing when he said that. I can almost see him turning up his chin as he said it...
Sheesh, evil *and* a jerk. -- Jade
You might try something like BlitzBasic or DarkBasic. They both tie in with DirectX, but free you from any low level tinkering. Letting you concentrate on game play. Which I think is really what indie games are about. I've played with DarkBasic a bit, and you can get very sophisticated games built very, very quickly.
The downside is that they only work on windows. And you might not exactly get the performance you'd get writing it directly in C or anything. But from what I've seen, it can be really fast, and it lets you concentrate on the *game*.
If you're looking for something better than Direct3D, you should check out the Q engine by Qube Software.
:)
Q 3D Engine
(FREE DOWNLOAD for Windows & Linux)
You may be interested to note that this is produced by some of the same engineers who produced Direct3D. Can't be that bad then eh?
PS I once worked for Qube, so I'm probably biased.
What about tinyptc?
It offers three basic functions, open() close() and update(), which is all you acually need, and it's very simple.
Homepage.
Note to self: get smarter troll to guard door.
I guess another downside is that they both are around $100. And not open source, etc.
But, hey, if you can quickly make a fun game (that isn't just a mod for some FPS), might be what you want.
Yes, if you don't use it.
It seem's the windows platform is losing ground rather rapidly, so it might not be worth the trouble to support at soon to be obsolete system.
quote from Lars Segerlund from the Dillo mailinglist
I've used Java3D extensively for some CAD prototypes. It is very easy to use once you get a feel for it; the latest version lets you start off with utility methods for creating a simple screengraph (with one method call). From there you just create Shapes, define their geometry, add them to the scenegraph, finally add the scenegraph to a Canvas3D, open a Frame (aka Window) with the Canvas3D in it, and you're done.
There are some tutorials on using the built-in collision detection routines (these are behaviours, so need some tweaking for use in games, as they may only fire after you've passed through a wall). You can configure the scene for head-mounted displays, etc.
Mostly it's just easy to use and you'll find a lot of material in discussion forums. It's also easy to install and get started.
On the negative side, I've heard a rumor that Sun is no longer developing Java3D, meaning that it is as it is from now on. Can anyone confirm this bit of rather shocking news?
There are two versions of Java3D: a DirectX and an OpenGL version. I use the OpenGL version and it works well; some way the DirectX version is faster but is missing some features.
www.java3d.org is an enthusiast website with a number of tutorials that would be useful to you.
if you are looking for a 3d game frame work Nebula Device is nice.
This is what Japanese often used. Not only apps get DirectX acceleration and runs on Windoze 3.1, it runs in a window too. Get it from here.
No, I don't mean the cheesy ones that at most will make a blockish mockery of your talent but start with things like WorldForge. Not only will you quickly notice the level of work necessary for a modern game, but will most likely run into very similar ideas such as yours. Take the initiative and build upon those ideas... save yourself the time of reinventing the wheel.
A good tool will really be nothing more than a well integrated collection of various libraries, engines, and other toolsets and components. A good tool API will be helpfully abstracted enough to allow for the plugin (to add, overwrite or extend) of various modules to give you your creative canvas.
If you really want to work on the various parts of the game like graphics, sound, art, behavior modelling and simulation (AI), networking, user input, etc. then you can in this hypothetical "good tool" eat that elephant one bite or component at a time.
However, if you are working on something "simpler" like a wireless device based game then you still should look into toolsets for development. If you do not then plan to spend so much time on that one small project that you will forget your name, spouse, children, and if you ever worked anywhere full time (as in "for money").Lots of people think they can make games... many start, few follow through... look for kindred spirits and flock together. These kindred spirits will be just as worried about their ideas bearing fruit as you but logic will lead you to understand you will get better results through compromise and/or good infrastructure development than just becoming another statistic. Don't ever let anyone tell you you can't do it, but listen to those that have. They will tell you to start small.
NeHe's site has lots of good tutorials.
My server