Ein ganz guter Weg ist es sicher (wie schon beschrieben), eine fertige Engine mit zugehörigen Tools und Programmen zu benutzen.
Als ich damals zu Schulzeiten (ist nun ca. 15 Jahre her
) mal angefangen hatte, ein (3D-)Spiel zu entwickeln, hatte ich einen anderen Ansatz gewählt. Mit C++-Programmierung und Microsoft Visual Studio war ich damals zum Glück schon recht gut vertraut. Ich habe mir einfach unerschrocken das aktuelle DirectX-SDK heruntergeladen (damals war DirectX 7.0 gerade brandneu erschienen
), und dann auf diversen Internet-Seiten Tutorials zu Direct3D gelesen und nachprogrammiert. Zu Beginn ganz einfach: Ein Fenster erzeugen und den Fenster-Hintergrund mit Direct3D löschen. Dann ein statisches Dreieck anzeigen. Dann das Dreieck rotieren lassen. Als nächstes dann, Texturen auf das Dreieck zu bekommen. So habe ich mich mehrere Jahre lang allmählich vorgetastet, und hatte am Ende wirklich eine primitive lauffähige Grafikengine
Das war damals als 3D-Strategiespiel mit drehbarer Kamera gedacht, vom Grundkonzept etwa wie Starcraft II. Meine Engine war immerhin so weit, dass die Landschaft da war, und man mit der Kamera drüberfahren/schwenken konnte, und auch einzelne "Panzer" (waren noch Würfel ^^) konnten da entlangfahren. Das war aber der Punkt, wo ich mit dem Projekt aufgehört hatte - ich hatte weder Bock noch Erfahrung, die 3D-Modelle und Texturen zu erstellen
Bei so was wäre es halt gut, wenn man mehrere Leute im Entwicklungs-Team hat. Da malt der eine vielleicht gerne Texturen, wohingegen der andere lieber programmiert, oder so.
Trotz allem war das auf jeden Fall eine unheimlich lehrreiche Erfahrung für mich
Jetzt weiß ich wenigstens gut, wie eine 3D-Engine intern arbeitet, und wie man DirectX benutzt (mit so Eigenheiten wie Texture Stages, etc).