Build from scratch or use an existing game engine.For a moment think about the entertainment industry. They have a similar choice. Sometimes they build from scratch, an example would be the move from celluloid motion picture film and movie theaters to DVDs and home theaters. Think about the time just before the transition. In the case of "use an existing game engine" you could have used the existing technologies and simply worried about content. IOW you create the script, provide the actors, provide the stage or shooting location, etc. You may even "customize" the existing technology by creating news ways of using it. For example, you may invent some new means of special effect like adding audio effects and music after the film is shot, or go even further and invent something like "bullet time" as seen in The Matrix. The "build from scratch" parallel would be deciding that you wanted to be able to allow viewers to watch the movie in their own home. You could use the existing tools (soldering irons, servo motors, etc.) and technologies (laser light, magnetic recording, analog to digital to analog conversions, etc.) and invented DVDs, Blu-ray disc players, and HDTVs to make your movie. In this case it would take a whole lot of work and some might consider the choice of theater versus home viewing not an issue. In which case much of your work outside of content creation was wasted. And there are various degrees of gray between these two extremes.
So, when it comes to computer games, whether that be massively multiplayer online games or solo-play console games or something in between, you need to make similar choices. On the one extreme you could write everything from scratch using nothing more than a text editor and a compiler, thereby creating both the content and the delivery medium. On the other, you could use one of the existing game engines like Garage Games Torque Engine or Torque Game Builder (see
this thread for other ideas.) and simply focus on content. For example many well selling and praised games are built on other game engines like the Unreal Tournament engine.
There are a vast quantity of game engines using different technologies and focused on various niche uses from FPS-based MMOG, to modern versions of the old
BBS door games. Some of them have been recently mentioned in DonationCoder threads and searching the forum archives will provide you with plenty of suggestions.
A
very small list of game engines that have caught my eye includes:
These game engines are ones where the vast majority of your work in simply creating the content. (Equivalent to writing the script and shooting a convention movie).
The next step up is the equivalent of writing a script and shooting a movie, but adding something new, like the CGI used in
LoTR battle scenes or special software to
rotoscope A Scanner Darkly. And you can do this to varying degrees.
At the base level you have a programming language like C++ or Python, but you can choose to utilize the work others have done to various degrees. Some code libraries exist to handle things like drawing graphics on the screen (OpenGL) or playing sounds (OpenAL). There are also larger libraries that handle multiple jobs like DirectX, SxDL, or Simple DirectMedia Layer (SDL). Some handle AI aspects, like AI.implant, OpenAI, and Soar. Above that are various language wrappers, like pygame which allows Python coders to use SDL and PyOgre which allows Pythonistas to use Ogre without knowing C/C++. And many other combinations exist like Delta3D, Irrlicht, or Allegro. Some are off the beaten path like
Croquet.
The next level up are the game engines and SDKs Unreal Tournament and Garage Game's TGE and TGB. Theses require coding, but are generally handled by (most often proprietary) scripting languages instead of C++ or Java. These allow for greater flexibility, but at the cost of greater time spent on delivery instead of content. Others include:
Any of the items mentioned above could be used, to some degree, in even a "server-side" game.
If somebody asked me to suggest a path through all of this, I would suggest the following strategy or crawl-walk-run.
- Create a "paper and pencil" prototype of your game.
- Use on of the high-level "game builder" applications that allow you to concentrate on content. Make due with the limitations this imposes on your game for now.
- Move to a "scriptable" game engine like Torque Game Builder
- Give up any notion of "building games" for a year or more and learn the basics of a computer language. (My personal suggestion is to start with Python for its "ease of use" over "anal control of every bit".)
- Using your year+ of study start using game libraries and SDKs like pygame and pyOgre to build simple games.
- Give up any notion of "programming games" for a year or more and revist what it takes to make a good game. Read Will Wright, Chris Crawford, and Raph Koster, et al.
- Leverage your knowledge of Python, or learn PHP, and develop a client-server (aka web-based or server-side) game. Start with something like the source code version of the Nowhere engine and begin to heavily modify it.
- Now, with all that under your belt, you can think about using Java, C++ or Python to create your own World of Warcraft or other best-selling MMOG of your chosen flavor.
- Profit!
Well, enough for now. I hope this helps some of you properly orient the map. "Digg"s and/or Donations would be appreciated ("D&D appreciated") if you found this helpful. It will also determine whether I expand on this further or eat and sleep.

[/list]