by "scientificninja" (Josh Petrie?)
To begin with, the term "engine" (specifically as it related to the game development world) has no strict definition. Therefore, in the interests of keeping everybody on the same page, I'll define the term as I intend to use it in this article. An "engine" is a collection of robust, reusable software subsystems (possibly including both code libraries and tools) designed to facilitate the development of actual games by addressing specific requirements. The requirements tend to be broadly-defined: rendering, audio, physics, et cetera. Particularly ambitious engines that address multiple broad requirement groups tend be to known as "game engines" rather than just "graphics engines" or "physics engines."
Now that that's out of the way, let's turn to the real issue: how to build engines, and more specifically, if you should even bother.
For any number of reasons, many neophyte game developers (and even some moderately experienced ones) seem to t