Meiner Meinung nach gibt es keine feste Definition für Engines im Computerbereich. Du kannst genauso eine Parser Engine haben oder im klassischem Sinne eine Game Engine. Ich finde es meistens am besten, wenn man das Wort einfach übersetzt. "Motor" und so verhält es sich auch, es gibt einfach keine feste Definition. Aber sie sollte eine gute Basis für ein Projekt bieten und auch in anderen Projekten sollte man sie einsetzen können.
Eine Engine ist praktisch das, was ein Spiel antreibt. Sie stellt Funktionen für bestimmte Bereiche zur Verfügung und erspart einem, direkt mit einer API zu programmieren. Engine bedeutet auch noch das Zusammenspiel von unterschiedlichen Komponenten zu perfektionieren. Viele kleine Zahnräder müssen miteinander kooperieren. Das ist ganz wichtig.
Achtung, nur ein kleiner Überblick mit wenig Inhalt, da fehlen durchaus noch Module
.Hier mal die Struktur unserer Engine:
Engine ->
LibApplications:
Stellt grundlegende Funktionen für den Start und die Verwaltung von
Applikationen bereit( Konsole, Window )
LibCore:
Praktisch die Innerein der Engine. Hier wird gaaaanz viel Mathe-Kram
erledigt und die Basis-Funktionen des OS werden gekapselt.
( FileIO, Debugging, Logging, Math, Curves, Languages, Scripts, Memory,
Streaming )
LibGraphics:
Das Herz der Engine. Stellt die grafischen Funktionen bereit.
Abstrakt gehalten.Renderer für OpenGL3 und D3D9/D3D11.
Besonderes Augenmerk auf Material-System und Scenegraph.
LibGameFoundation:
Ab hier fängt eigentlich erst die Game Engine an.
Bis jetzt war das alles eigentlich nur eine Grafik-Engine.
Hier werden Dinge wie State Machines oder Entities
implementiert.
Wie du siehst sind es einfach mehrere Module, die aufeinander aufbauen oder die miteinander vernetzt sind.
Dann gibt es noch weitere Parts aus denen Game Engines bestehen können. Man sollte immer strikt zwischen einer 3D-Engine( wie OGRE ) und einer Game Engine( wie Unity )
unterscheiden. Eine GameEngine könnte dann noch aus Sound, Networking und millionen von anderen Modulen bestehen.
Man kann Engines nicht einfach entwickeln, jedenfalls nicht im großem Maßstab. Das dauert Jahre und braucht sehr viel Erfahrung, die du anscheinend noch nicht hast. Ich empfehle dir entweder etwas wie Batzer hier im Forum zu machen oder eine bestehende Game Engine wie Unity zu nutzen. Batzer hat eine riesige Lernkurve und lernt auch sehr viel über Software-Architektur.
Engine sind hochkomplexe Software-Gebilde. Sie können aus mehreren dutzend Modulen bestehen und ein 25 Mann Team über 3 Jahre beschäftigen( CryENGINE 3 ). Es werden Bücher damit gefüllt, die sich nur mit einer Game-Engine Architektur beschäftigen.
In diesem Segment gibt es meiner Meinung nach 3 sehr gute Bücher:
*
Game Engine Architecture:
Beschäftigt sich mit den vielen SubSystems einer Engine.
In meinem Beispiel wäre das dann alles über dem
Grafik-Modul. In diesem Buch gibt es viele gute Beispiele
anhand von OGRE und der Naughty Dog in-house Engine.
Der Autor arbeitet bei Naughty Dog.Auch ein sehr
nettes Kapitel über Animationen.
*
Game Engine Design:
Achtung, sehr viel Mathematik gibt es in diesem Buch, ist ja auch
klar, denn es wurde von einem Mathematiker geschrieben. Auch
ein sehr tolles Buch, das sich auch viel mit den Renderern und
allgemein dem Grafik-Modulen beschäftigt.
*
Game Coding Complete:
Hier werden viele Sachen besprochen, die in anderen Büchern
eigentlich selten besprochen werden. Hier wird sehr
viel über SubSystems geredet.
Das sind meiner Meinung nach die wichtigsten Bücher in diesem Segment. Zusätzlich brauch man dann noch sehr gute C++-Kenntnisse, Assembler kann auch helfen und man muss unbedingt eine API( D3D oder GL ) sehr gut können. Man muss bereits bei der Planung wissen, wo es Probleme geben kann und wo man es noch besser machen kann.
Ich empfehle dir, es so wie Batzer zu machen.
Oder eben Unity/OGRE, aber nicht selberschreiben. Make games, not engines!