Guys, great comments! The original question is certainly an essay question. I will define a game engine as a program, GUI, or even a machine that maps one resource to another. The outcome is a "game" perceived by the user. Common resources are: user inputs, graphics, sound files, database, text and AI response.
The aim of a game engine is to define game rules and break down a large gaming application project into smaller parts.
An example is a simple shoot'em up game. The resources are: 1) user inputs; 2) database of user positions, monster positions, map, bullet positions, bullet directions and bullet speeds; 3) graphics of user, monster, bullet, environment and events; 4) sound files of user movement, monster movement, bullet movement, environment and events; 5) user interface; and 6) AI response of monsters.
Of course they may be incorporated into a very small application when the game rule is simple, for example, a single user with dumb monsters. Definition of resources make more sense when we talk about 1000 on-line players chasing and shooting 10000 intelligent monsters of 100 different kinds on a large 3D map.
The game engine then has to: 1) actualize (or effectuate) the game rules; 2) decide when to create or destroy resources; 3) communicate with the operating system; 4) pass resources correctly from one to another in case of an event; 5) response to requests made by different resources (subroutines); and 6) maintain and distribute the resources (memory, disk space, network etc.) given by the operating system.
So, development of a gaming application will firstly require a team of people to draw a story board. Then another team of people will decide the game rules. Then the game engine will be written (usually by just a few individuals, at maximum.) Finally, a big team of different kinds of computer experts will be called in to generate the resources (graphics, sound, AI etc.) Second-stage production will mean fine-tuning of the game engine and blending resources. Eventually, an installer is written. Final-stage production involves some business matters like packaging, legal stuff, production (really making the CD's, for example), money matters, and distribution (selling).
Anyway a game engine has little resemblance to a car engine!
Faifai
I would describe it as a framework or perhaps even as an architecture. My company develops different out-of-the-shelf applications, mostly for CRM and ERP. A lot of the functionality is the same for the different applications: GUI, database- access, network communications, base logic of business components...
The advantages are:
1)The framework is developed once, and used in many different applications.
2)New functionality introduced in the framework can be used by all the applications.
The word engine is used in gaming, but it is basically the same as a framework.
I'd like to understand the meaning of game engine better too, but not for an essay:-)
So when someone says they've created a game engine entirely in Java, they simply mean they're using Java classes and no other stuff? Like the graphics might be created with Java 2D and Java 3D, and other Java technologies like RMI are used?
I'm still not clear what a game engine is? If you create a simple checkers game online, written in the Java programming language, then you're using a Java game engine because it's the frame work?
Thanks!
****
Hi ****.
Great to see you here! You must have a look at the 4k game programming contest also!
http://forum.java.sun.com/thread.jsp?forum=406&thread=293877
Could you help us make it official?
If I were to make five different checkers- like games I would make an engine.
http://blake.prohosting.com/ragnvald/a.html This is one game. Thread handling, the min- max algorithm (AI), input handling (translating a mouse- clicked event to player performes move number 4) painting...
If you could just define what is special for the specific game, and leave the rest to generic functionality, then you could develop faster.
More typical would be a 2d or 3d game where different objects moves around in a world, and you control one of them. Graphics, points, lives, levels, maps... A lot of the code is not game specific, so an engine could handle it.
See also reply 9 and 10.
Ragnvald.