Eigene Gameengine programmieren, aber wie?
-
Hallo liebes Forum.
Ich habe mich gerade angemeldet, weil ich anscheinden zu viel Zeit habe
Ich habe beschlossen eine eigene Grafik Engine zu schreiben.
Und befor jetzt einige sagen das hat keinen Sinn und ich sollte lieber die Unreal Engine verwenden, es ist mir durchaus bewuss was durch eine eigen Engine kein wirklich gutes Spiel entstehen kann (zumindest nicht alleine und in so kurzer Zeit) doch mir geht es eher um den Lernefekt und um den Spaß.
Habe schon etwas Erfahung in der 3D Spieleprogrammierung mit DirectX 9. Dazu habe ich das Buch 3D-Spieleprogrammierung mit C++ und Directx gelesen (eigentlich nur bis zur hälfte).
C++ habe ich auch so halbwegs mit dem Buch C++ für Spieleprogrammierer gelernt.Mir stellt sich nur die Frage, ob es klug ist eine Engine mit DirectX 11 (12 ist mir zu kompliziert) zu programmieren oder eher zum Beispiel auf OpenGL zu setzten. Das wäre halt Platformübergreifend. Was sagt ihr dazu?
Wie sieht das mit der Performenc aus kann OpenGL gegen DirectX antreten?Nächste Frage: Wie kann man solche Engines implementieren? Wenn ich auch eine kleine Grafische Oberfläche erstellen möchte wo man Grundeinstellungen festlegen kann und vielleicht sorag einen Leveleditor bereitgestellt bekommt.
Den Code möchte ich dann aber in C++ und Visual Studio erstellen.Danke schon mal im voraus!
-
Obligatorisch: Write Games, Not Engines!
-
Wenn
@Contrast-Games sagte in Eigene Gameengine programmieren, aber wie?:mir geht es eher um den Lernefekt und um den Spaß.
dann ist das
Mir stellt sich nur die Frage, ob es klug ist eine Engine mit DirectX 11 (12 ist mir zu kompliziert) zu programmieren oder eher zum Beispiel auf OpenGL zu setzten. Das wäre halt Platformübergreifend. Was sagt ihr dazu?
Wie sieht das mit der Performenc aus kann OpenGL gegen DirectX antreten?doch völlig egal, oder nicht?
-
@Belli sagte in Eigene Gameengine programmieren, aber wie?:
doch völlig egal, oder nicht?
Nein, warum? Wenn ich was zum Spass programmiere, stehen bei mir meist "Nebenaspekte" im Vordergrund, z.B. eben eine möglichst performante Umsetzung. Das eigentliche Problem steht bei mir meist im Hintergrund, weil meist sowieso nicht umsetzbar.
Mich interessieren zwar keine Engines, aber wenn ich sowas zum Spass machen würde, würde für mich sicherlich Performance im Hintergrund stehen, mit hoher Wahrscheinlichkeit auch Plattformunabhängigkeit, und sicher nicht, eine "komplette" Engine zu machen, weil eben nicht realisierbar.
-
Wer sagt, dass er gerne lernen möchte, wie man ein Auto baut (er kann auch schon ein bisschen selber Fahren) und fragt, ob er der Geschwindigkeit wegen lieber Leder oder Kunstfaser für die Innenausstattung nehmen soll, dem sollte man schon sagen, dass er da vielleicht auf dem Holzweg ist.
-
@Contrast-Games Soweit ich weiss nehmen sich OpenGL und DirectX nicht viel, wenn man sie ähnlich einsetzt. Wenn du also keine Lust auf "lowest level" 3D Programmierung hast, dann wird es keinen grossen Unterschied machen ob du jetzt D3D oder OpenGL verwendest. Wobei ich nicht weiss ob man in D3D11 überhaupt noch was anderes als "lowest level" machen kann.
Was nun für dich besser ist kann ich dir nicht beantworten. Ich sag mal wenn's dir wirklich ausschliesslich um's lernen geht, und du sowieso Visual Studio verwenden willst, dann kannst du auch gleich Direct3D nehmen. Hat das modernere Interface.
Wie kann man solche Engines implementieren? Wenn ich auch eine kleine Grafische Oberfläche erstellen möchte wo man Grundeinstellungen festlegen kann und vielleicht sorag einen Leveleditor bereitgestellt bekommt.
Tjoa. Indem man sauviele schlaue Zeilen C++ in seine Tastatur hackt? Im Ernst, du erwartest doch hoffentlich nicht dass dir jemand das erklärt?
Such dir Guides/Tutorials raus mittels derer du erstmal lernen kannst wie die 3D API deiner Wahl überhaupt funktioniert. Also was es da alles an Objekten zu verwalten gibt, was diese machen/bedeuten, die ganzen Konzepte wie Vertex-Buffer, Shader, Transformationen, Projektionen und weiss der Teufel was noch. Damit schreibst du mal ein paar kleine Progrämmchen zum Rumspielen. So verbringst du mal ein paar 5-15 netto-Arbeitstage (8h Beschäftigung mit dem Thema). Dann solltest du mal einen groben Plan haben wie die API deiner wahl so funktioniert.
Und dann kannst du schauen ob du etwas ähnliches (Guides/Tutorials/...) findest wo beschrieben steht wie so "klassische" 3D Game Engines üblicherweise aufgebaut sind. Evtl. kannst du das auch aus der Doku zu einer freien C++ 3D Engine rauslesen.
Dann überlegst du dir wie deine Engine aussehen soll und wie du das Stück für Stück implementieren kannst, so dass du möglichst früh etwas hast was du ausprobieren kannst. Und dann fängst du an das Ding zu implementieren.
Und schwupp-di-wupp hast du etliche netto-Arbeitsmonate später ne mehr oder weniger verwendbare Engine. Tadaa.Wenn du jetzt meinst das klingt nach extrem viel Arbeit: ja. Klingt nicht nur so.
-
Um @Contrast-Games nicht ganz zu demoralisieren, hier sind zwei Videos, wie eine eigene Game-Engine aussehen könnte.
olcPixelGameEngine
https://www.youtube.com/watch?v=kRH6oJLFYxY&t=406sUsing olcPixelGameEngine with Visual Studio 2019
https://www.youtube.com/watch?v=eTGSTTxR-Ss