Engine Architektur



  • Hi! Ich versuche nun schon seit längere Zeit meine erste Engine zu schreiben, wobei das Hauptproblem die Architektur ist. Ich habe nun schon öfters die Architektur abgeändert, und ich kann einfach keine geignete Architektur finden! Die Engine soll keine Grafik Engine, sondern eine Game-Engine werden, wobei ich mich momentan nur mit dem Grafik Bereich beschäftige! Außerdem macht die Engine nur gebrauch von DirectX 9.0c, und ist somit nicht Plattform übergreifend. Ist es in diesem Falle sinnvoll, alle DX Funktionen in eine eigene Klasse zu schieben, wie es Ogre oder Irrlicht es machen, oder sollte man besser Vertex Buffer usw ... direkt erstellen? So, dass wenn ich beispielsweise ein Modell rendern will, die Funktionen auch in diesem Scene Node verwende? Und welche vorteile hätte ich die Engine in eine DLL zu packen?



  • Also wie die Architektur deiner Engine aussieht, liegt einzig und allein an dir.
    Das kommt mit der Zeit von ganz allein, wenn du genügend Erfahrung hast.
    Am besten ist es, wenn du erstmal mit anderen Engines arbeitest, um zu erfahren, wie man mit so einer Engine umgeht.
    Schreib dir am besten auf, was dir daran gut gefällt, und was nicht.
    Ab jetzt liegt es an dir.
    Aber einige Tips können nicht schaden:
    o Versuche die Engine in Teile/Module zu teilen: Video, Sound, Grundlegendes, ... !
    o Mach dir von Anfang an eine Doku und ein paar Demos, wenn's auch nur um das Laden aus Windows-Resourcen geht!
    o Versuche nicht so viel wie möglich an Funktionen reinzupacken, sondern dem Programmierer so viel Arbeit wie möglich abzunehmen!
    o Versuche alles so einheitlich wie möglich zu machen!

    Ich hab auch mal versucht eine Engine zu schreiben, ging aber völlig in die Hose 😃 Die war mehr ein Umweg 😃
    Aber Ende der Sommerferien hab ich nochmal angefangen.
    Und jetzt läufts.

    Und zu den DLLs: Schau mal bei Wikipedia, was DLL allgemein bringen.
    Bei Engines ist es dann die Wartung, die eine große Rolle spielt, und die Austauschbarkeit. z.B. Hat deine Engine ein Grafikmodul was D3D9 benutzt, da es jetzt D3D10 gibt müsstest du im besten Ernstfall nur die eine DLL austauschen, um D3D10 zu benutzen (und natürlich eine komplette D3D10-Grafik-Engine schreiben)



  • Das mit dem Modulen ist ne gute Sache, das stimmt!

    Zum Beispiel schreibe ich mir zur Zeit ein Framework, um verschiedene "fremde" Engines mittels Interfaces unter einen Hut zu bringen, bzw bei Bedarf auszutauschen. So kann ich denselben Code plattformübergreifend nutzen, z.B. einmal für die PSP, dann wieder für Linux... wobei die eigentlichen "Eingeweide" des Programmes ständig wechseln.

    Nachteil: Oftmals müssen zu spezifische Features der Engine außer Acht gelassen oder sehr grob zusammengefasst werden, aber wenn man die eh nicht braucht, ist das annäherend egal.



  • Hi! Ich versuche nun schon seit längere Zeit meine erste Engine zu schreiben

    Ohja, musste ich ja mit ansehen...

    Die Engine soll keine Grafik Engine, sondern eine Game-Engine werden

    Grafik Engine 🙄
    Ohne "Grafik Engine" kannst du wohl keine Grafiken in deiner Engine
    darstellen. Mir scheint es so, als seiest du verunsichert. Setz dir
    mal klare Prioritäten und schreib sie dir auf ein Block. Wenn Du
    wirklich noch nie eine Engine geschrieben hast (was ich mal Stark
    vermute), solltest du dich über mehrere Tests herann tasten. Wenn
    du das dann mal hinter die Bühne gebracht hast, denke über deine
    "Engine" nach, schreib dir deine Ideen auf und versuch Dich einfach
    dran, für sowas fragt man nicht im Forum.

    Außerdem macht die Engine nur gebrauch von DirectX 9.0c, und ist
    somit nicht Plattform übergreifend

    Tut nix zur Sache, dann mach's halt in OpenGL dann hastes Plattformunabhängig. 🙄

    Ist es in diesem Falle sinnvoll, alle DX Funktionen in eine eigene Klasse zu schieben

    Hä?
    Erstell dir lieber Klassen die diese DX-Funktionen nutzen. Das
    heisst, wenn du beispielsweise einen BMP-Loader schreibst, du
    in der dementsprechenden Methode die DX-Funktionen holst.
    Ansonsten ist das Schwachsinn...

    Und welche vorteile hätte ich die Engine in eine DLL zu packen?

    Eine DLL ist vielfältig einsetzbar, deinem Skill zu Folge solltest
    du sie zur Klassen Ablagerung benutzen.

    Ahyo, wann entscheidest du dich eigentlich mal für ein Forum?
    Mfg.
    way



  • Danke für die vielen Antwrten, ich habe nun schon viele anläufe gehabt, und viele gingen in die Hose weil die Architektur nicht stimmte, deswegen habe ich mir vorgenommen, ein wenig mehr Zeit mit der Planung zu verbringen!

    Erstell dir lieber Klassen die diese DX-Funktionen nutzen.

    So meinte ich das, habe mich wohl falsch ausgedrückt!

    ieso denn für ein Forum entscheiden? Auf Spieleprogrammierer.de poste ich sachen, die generell etwas mit Spieleprogrammierung zu tun haben.



  • Meiner Meinung bringt es dieser Artikel auf den Punkt:
    http://scientificninja.com/advice/write-games-not-engines


  • Mod

    Code-Walker schrieb:

    ieso denn für ein Forum entscheiden? Auf Spieleprogrammierer.de poste ich sachen, die generell etwas mit Spieleprogrammierung zu tun haben.

    keine sorge, es spricht nichts dagegen in mehreren foren (auch das selbe) zu posten, weil die meisten selten die gleichen foren besuchen wie du, solange du nicht hier im forum mehrmals das selbe fragst 😉

    btw. die beiden ersten antworten koennte ich so auch unterschreiben 🙂



  • Ich render' mir erstmal ein Nutella-Brot mit meiner Besteck-Engine.



  • *hust*
    Code-Walker ich weiss wer du bist, du weisst anscheinend nicht wer ich bin.
    http://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=9731&highlight=dustin+braun
    Nimms nicht Persönlich...
    Gruß
    way



  • this->that schrieb:

    Meiner Meinung bringt es dieser Artikel auf den Punkt:
    http://scientificninja.com/advice/write-games-not-engines

    Vollste Zustimmung!

    Ginge es bei den Autoherstellern zu wie in der Spieleindustrie, so würden wir heute bestimmt noch Pferdekutschen fahren, weil alle zu beschäftigt wären mit dem Erfinden von neuen Rädern...


  • Mod

    way schrieb:

    *hust*
    Code-Walker ich weiss wer du bist, du weisst anscheinend nicht wer ich bin.
    http://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=9731&highlight=dustin+braun
    Nimms nicht Persönlich...
    Gruß
    way

    ich weiss nicht was diese meta diskusion fuer ein ziel hat, aber bitte klaert das doch per mail, dieser thread soll bitte bei 'engine architektur' belassen werden.



  • TdZ schrieb:

    Ginge es bei den Autoherstellern zu wie in der Spieleindustrie, so würden wir heute bestimmt noch Pferdekutschen fahren, weil alle zu beschäftigt wären mit dem Erfinden von neuen Rädern...

    Vorsicht. Vergleiche von Softwareindustrien und der Autoindustrie sind schon früher episch in die Hose gegangen:
    http://www.wussu.com/humour/gm.htm

    @Topic:
    FULLACK zu this->that



  • Ich hasse es immer wieder enn irgent emand diesen alten Post raussucht, und ihn hier schön presentiert um zu zeigen wie untalentiert ich bin ...

    @way, warum hast du den Post jetzt raus gesucht und hier gepostet, sag mir mal bitte warum?


Anmelden zum Antworten