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.


  • Mod

    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=406s

    Using olcPixelGameEngine with Visual Studio 2019
    https://www.youtube.com/watch?v=eTGSTTxR-Ss


Log in to reply