Kleine strategische Frage zum Umgang mit externem Programmcode in Bezug auf die Unreal Engine

  • Hi zusammen.


    Ich habe da mal eine strategische Frage zum Handhaben von externem Programmcode in Beziehung zur Unreal Engine.


    Ist es möglich, einen externen Programmcode in normalem Ansi C++ zu schreiben, in Form einer DLL/API und diese dann in den C++-Code des Projektes innerhalb des Unreal Frameworks zu nutzen?


    Also die Frage etwas anders gestellt, möglich ist es ja sicher, ist ja immer C++. Aber könnte mir die Engine das vielleicht übel nehmen? Weil innerhalb des Frameworks hat die Engine ja ihre eigene Mathbiblithek und einige andere. Zumindest, wenn ich das richtig gesehen habe. Könnte es da zu unerwünschten Überschneidungen oder gar Fehlern kommen? Oder wird das durch die Compilierung dann strikt getrennt und spielt dann keine Rolle mehr?

  • Naja, bei den Plugins ist das halt so eine Sache. Das war ja mein ursprünglicher Plan. Dann hätte ich irgendwann eine gute Bibliothek, die ich auch gut speichern und handeln kann.


    Nur das Problem ist halt noch immer, wenn ich in der Engine in C++ programmiere, kommt irgendwann ein Punkt, wo das Projekt abschmiert und es völlig egal ist, ob ich nun die letzten Änderungen rückgängig mache, oder ob ich aus den Sicherheitsdateien das Projekt lade, ich kann das Projekt dann nicht mehr starten, weil die Engine dann immer so abstürzt, wie bei dem Projekt, wo du mir schon einmal geholfen hast. Nur mit dem Unterschied, bei dem Projekt reichte es, wenn ich es schaffte die Map neu anzulegen. Das ist aber leider nicht immer so.


    Deswegen wollte ich einfach mal das, was ich vielleicht auch außerhalb erledigen kann, halt dann auch außerhalb erledigen und nur so wenig wie möglich mit C++ in Verbindung mit der Engine zu machen.

  • Grundsaetzlich hast du etwas falsch gemacht wenn die Engine abstuerzt. Ich weiss dass das mit C++ leider recht einfach ist.


    Natuerlich kannst du auch vieles in einer (oder mehreren) dll machen. Wenn du verstehst wie man eine dll einbindet sollte das kein problem sein.


    Best practice trotzdem immer: Plugin. Das gute ist du erstellst Plugins ja meist eh in einem leeren projekt - wenn dann die map hinueber ist ist es nicht so schlimm.


    Ob du jetzt ein Plugin machst oder eine dll ist nominell kein Unterschied - in einem Plugin kannst du aber auf die Engine Funktionen zugreifen - was ja meist schon erforderlich ist wenn du nicht gerade ein tool schreibst um csv Dateien in eine Datenbank zu importieren oder so. Sprich - alles was du in der Engine machen willst - ob nun Rendertargets bedienen, etwas spawnen usw - das geht nur als plugin.

  • Wie gesagt, das Schwierige dabei ist halt, wenn ich zum Beispiel ein Projekt starte, ganz egal ob als C++ Projekt, oder ob ich schlichtweg ein BP-Projekt starte und um eine Bluebrintklasse erweitern will, es ist immer dasselbe.


    Ich Compiliere, um zu testen, ob es bis dahin funktioniert, natürlich nur, wenn ich auch innerhalb des Projektes nichts offen habe, was zu Fehlern führen könnte, also habe ich dann zum Beispiel Funktionen, die einfach nur eine unverarbeitete Variable zurückgebe, also so, dass der Compiler da nicht meckern würde.


    Wenn alles funktioniert, mache ich mich an die nächste Funktion. Irgendwann komme ich an einem Punkt an, wo dann die Engine crashed, so wie bei dem Projekt, wo du mir damals halt geholfen hast. Wenn ich dann aber die Änderungen rückgängig mache, weil in VS kann ich das Projekt ja trotzdem noch laden und compilieren, crashed die Engine dann trotzdem, so dass ich das Projekt nicht mehr öffnen kann.


    Und dabei habe ich noch nicht einmal irgendeine Map oder so geladen. Die Klasse ist einfach nur in dem Projekt vorhanden, nirgends geladen oder was auch immer. Und das macht mich hat schon etwas stutzig, weil das einfach keine Logik folgt, die ich jetzt so nachvollziehen könnte.


    Es gibt da drei Möglichkeiten.


    Die erste ist, wenn ich das Projekt compiliere, baut sich irgendetwas in die Engine ein, was halt nicht funktioniert. Das halte ich für sehr unwahrscheinlich, denn so tief stecke ich in der Materie nicht drin, als dass ich irgendetwas in der Engine ändern würde. Wenn da also nicht von sich aus irgendetwas passiert, wovon ich mal ausgehe, dann sollte das also nicht der Fehler sein.


    Zweitens, irgendetwas ist schlichtweg mit meiner Installation schiefgelaufen. Wobei ich inzwischen Engine als auch VS schon neu installiert habe. Eigentlich sollte das also auch nicht der Fehler sein, es sei denn, es gibt da einen grundlegenden Fehler, wovon ich jetzt aber mal nicht ausgehe, dann wäre ich ja nicht relativ alleine mit dem Problem.


    Das Dritte und Wahrscheinlichste, wovon ich momentan ausgehe, ist halt, dass mein Rechner so langsam schlapp macht. Ich will zwar schon recht lange meinen neuen Rechner komplettieren, aber mir fehlt noch das Mainboard und der Speicher. Ersteres ist in der Ausführung, wie ich sie haben will, derzeit nicht lieferbar, oder halt schweineteuer. Deswegen hänge ich halt noch immer an meinem Laptop, der halt auch schon ein paar Tage auf dem Buckel hat und gerne mal heiß läuft. Und bei heutigen Laptops, mal so auseinander nehmen, neue Wärmeleitpaste darauf, naja, es ist halt alles verklebt. Deswegen halte ich das fast schon für das wahrscheinlichste, dass in der Richtung irgendetwas nicht stimmen könnte. Einige Spiele etc. machen da auch Probleme, von daher jetzt nicht so unwahrscheinlich.