Engines Verständnis Frage



  • Schönen Guten Tag,
    ich habe vor einioger Zeit angefangen mich mit Spieleentwicklung zu befassen. D.H. im Klartext ich habe diverse engines benutzt und damit kleine Anwendungen geschrieben.

    Mich interessiert nun wie solche engines geschrieben werden. Verstehe ich das richtig das die Engines im Prinzip nur Abstraktionen von OpenGL bzw. DirectX sind? Oder gehört da doch mehr zu als "nur" die OpenGL/DirectX Spezifikationen zu können? (Abgesehen von dem Algotithmischen Verständnis)



  • Hi!

    Eine Engine ist, grob gesagt, eine Ansammlung an Funktionalitäten um dir das Entwickeln eines Spieles (...) zu erleichtern. Es gibt für spezielle Gebiete "Engines" wie Physik, 3D Darstellung, Scripting, ...
    Was ich immer wieder höre ist etwas wie: "Ich verwende OpenGL als Engine..." das ist aber blanker Unsinn, sowohl OpenGL als auch DirectX sind APIs. *so am Rande* 😉

    Wie wird sowas entwickelt? Genau wie jedes andere Programm auch! 😉

    grüße



  • David_pb schrieb:

    Wie wird sowas entwickelt? Genau wie jedes andere Programm auch! 😉

    Naja, da liegt ja gerade das verständnisproblem 🙂

    Vielleicht habe ich mich auch etwas falsch ausgedrückt. Mich interessiert wie ich technisch z.B. eine Linie auf dem Bildschirm zeichnen könnte ohne irgend eine Engine zu benutzen. Also, wie ich der Grafikkarte sage zeichneLinie(). Denn das ist doch letztendlich das was eine Engine auch macht, sie gibt der Grafikkarte Anwesungen... Oder? 🙂



  • Hi!

    Die meisten Grafikengines nutzen APIs als Basis wie OpenGL, DirectX, o.ä. Es ist ohne eine API nicht ohne weiteres möglich grafische Ausgaben zu machen. Es gibt diverse Möglichkeiten wie Mode13 (VGA) oder Vesa, diese Grafikmodies ermögliches es dir direkt auf den Grafikspeicher zuzugreifen, du hast aber nicht die Möglichkeiten die dir eine API bietet, da die "Kommunikatonsweise" der Grafikkarte mit der Software nicht öffentlich bekannt ist und du somit nie die volle Leistung ausschöpfen kannst.

    grüße



  • Ah okay, dann lag ich mit der Vermutung das die Engines Abstraktionen von OpenGL oder DirectX sind garnicht so falsch 🙂

    Danke für die Info!
    Gruß Staati


  • Mod

    Staati schrieb:

    Ah okay, dann lag ich mit der Vermutung das die Engines Abstraktionen von OpenGL oder DirectX sind garnicht so falsch 🙂

    eine eingine ist meist eine sehr große bibliothek. sie sollte im grunde dafür sorgen, dass der programmierer der die engine nutzt mit einem einfachen interface die komplexen dinge unter der haube der engine steuern kann ohne genaueres über die vorgänge zu wissen.



  • Um das vielleicht nochmal deutlicher zu fassen. Man könnte stark vereinfacht und mit beschränkung der Allgemeinheit sagen das ne Engine eine Schnittstelle ist die den OpenGL/Direct3D Zugriff kapselt.

    Allgemein und auch im Speziellen ist eine Engine natürlich noch viel mehr.
    Mit Direct3D und OpenGL kannst du zum Beispiel deine Linie zeichnen (meistens wirst du Polygone rendern etc... ausserdem jede Menge Funktionalität was die Zusammenarbeit mit der GK angeht (Shader, Buffer, Texturen etc...)

    Eine GrafikEngine (worauf du warscheinlich hinaus willst würde jetzt in diesem simplen Beispiel z.B. einen Dateiloader für Bestimmte Bildformate (bmp, jpg, etc..) bereitstellen und vielleicht bestimmte Scenegraphen und Funktionalität um Modelle zu laden, sie zu animieren, vielleicht Kollisionsüberprüfung implementieren. Das ganze intern hübsch in eine Datenstruktur verpackt damit sie die Berechnungen auch schnell ausführen kann.

    Das wäre der simple View auf eine Engine.

    In richtigen Engines gehört dann natürlich noch einiges mehr hinzu wie ScriptingSysteme, ModulImport, gutes ThreadHandling für MultiCoreProzessoren etc... All sowas kann in eine Engine mit rein.

    Ziel ist es das jemand anders (oder auch die selbe Firma/Person) damit effizienter ein/mehrere Spiele entwickeln kann ohne sich um dies alles zu kümmern.

    Hoffe das drückt das ganze etwas klarer aus.


Anmelden zum Antworten