Blueprint oder C++

  • Hallo,
    ich bin es nochmal und wollte mich erkundigen was bei c++ beim unreal Engine besser ist (oder nicht) als Blueprint. Hat man mit c++ mehr Möglichkeiten und kann damit detaillierter arbeiten? Und müsste ich dann mit c++ jede einzelne Wand/Dach/gras/himmel/sonne etc. Programmieren ?



    MFG,
    FlurrY :)

    • Offizieller Beitrag

    Hi Flurry, Blueprints sind eine sehr einfache Möglichkeit gerade für Anfänger ein Spiel ohne direkte Programmierkenntnisse zu entwicklen, dabei werden die Blueprints die im Prinzip Quellcode Blöcke sind miteinander verbunden. Daraus entsteht wie bei einem Platine ein kompletter Ablauf durch die verschiedenen Bausteine.


    Blueprints haben den Nachteil das sie unperformanter sind as beispielsweise C++


    Blueprints sich zwar einfacher ab so ganz ohne Programmier Verständnis gehts dann auch nicht. Wenn du also eh entiwickeln willst dann lerne doch C++ und verwende dann die Blueprints als bequeme Alternaitve.


    Wände, Dächer, Grass usw kann man zwar mit sehr hohen Aufwand auch über Code generieren aber ich bezweifel das dies mit Blueprints möglich ist.


    3D Objekte werden normalerweise in 3D Programmen wie beispielsweise Blender gebaut und dann in die Engine importiert.
    Ein Himmel kann beispielsweise in einem 2D Programm entworfen werden oder durch ein einfaches Foto importiert werden. Auch mit der UE kann ein Himmel generiert werden dabei bestimmt man beispielsweise die Farbe des Himmels und welches Bild man als Himmel verwenden möchte.

  • ok und die Position der Objekte könnte ich dann einfach mit c++ variablen bestimmen? und könnte ich dann beispielsweise einfach in Blender das ganze Landscape machen und diesen dann als C++ code ausgeben lassen und das dann in unreal engine einfügen und als landscape definieren? Oder kann ich auch beides auf einmal auswählen so das ich solche generellen sachen in Blueprint mache und eher komplexere in c++?

    • Offizieller Beitrag

    Jaein könntest du zwar aber wäre ziemlich umständlich.


    Da gerade WM ist nehmen wir mal an du hast in Blender einen Fußball (Kugel) erstellt. Der Fußball hat in Blender eine Positionsangabe XYZ. Der Mittelpunkt deiner Szene in Blender ist immer XYZ = 0 (X=0, y=0,z = 0)
    X ist Links/Recht
    Y ist rauf oder runter
    Z ist nach vorne bzw nach Hinten (3D Tiefe)


    Dein Ball könnte also zb auf X-1 oder auf X1 stehen Der unterschhied ist ob Plus oder Minus. (Der Mittelpunkt ist ja XYZ = 0


    Wenn du dein Objekt in die UE Ladest steht dein Objekt normalerweise immer auf 0 dort kannst du dann Objekt dort hinschieben wo du Ihn hin haben möchtest.


    Du könntest nun zb Via Blueprint bestimmen das der Ball immer X + 1 bekommst wenn du die Leertaste Klickst somit würde sich der Ball bei jedem mal Leertaste Klicken immer um 1 in Richtung X Position verschieben.
    Wenn du nun möchstest das sich der Ball wie ein Ball verhält musst du ihm Physikalische Eigenschaften geben das machst du beispielsweise mit einem Rigid Body den du dem Ball zuweist. Im Riged Body kannst du nun Eigenschaften einstellen beispielsweise kannst du festlegen wie schwer der Ball ist. Wiegt er ne Tonne rollt er natürlich anderst als wenn er nur ein paar Gramm wiegt.
    Du kannst dort beispielsweise auch die Reibung einstellen umso mehr Reibung er bekommt umso schneller wird er langsamer uws.


    Auch hier übernimmt die Engine eine menge Arbeit für dich. Du musst nicht erst eine Physiksystem schreiben damit sich der Ball korrekt verhält sondern das macht das Rigid Body für.


    Du stellst dir das glaube ich viel zu kompliziert vor :) Spiele entwickeln ist sehr komplziert aber solche einfachen dinge sind sehr viel Einfacher wie du denkst.

  • Hallo,


    C++ ist eine Progammiersprache, damit beschreibt man eine Abfolge von Answeisungen.
    Mit Blender erstellt man 3D-Objekte, die in Dateien abgespeichert werden. Das ist dann kein C++...
    In der UE4 erstellst du dein Landscape zum Beispiel mit Hilfe einer Heightmap oder direkt mit dem Editortool.


    Du kannst immer beides Verwenden. Allerdings erben die Blueprints immer von anderen Klassen, sodass die Basisklassen am Ende immer auf C++ hinauslaufen. Jemand der noch nie Programmiert hat kommt mit Blueprints einfacher zu einem Ergebnis, da in C++ doch einiges an Schreibarbeit anfällt durch die Unterteilung in Deklaration und Implementierung. Da regnet es gerade bei Anfängern gerne mal Fehler.


    Gruß.
    Mario

    • Offizieller Beitrag

    Quellcode oder auch Blueprints darfst du dir nicht wie ein Buch vorstellen das man Seite für Seite runter schreibt.


    Du hast ja in deinem Spiel ganz unterschiedliche Elemente die unterschiedliche dinge tun sollen. Du Baust dir zb ein Script das der Ball immer springen soll wenn du die Leertaste drückst. Dieses Script weißt du nun dem Ball zu.
    Hast du zb eine Tür die sich öffnen soll weißt du dieses Script der Tür zu. Jedes Elemente bekommt sozusagen sein eignen Script.
    Eine Wand die nichts tun braucht auch kein Script, diese braucht nur einen Collider damit die Engine erkennt wenn du gegen sie läufst oder darauf schießt etc.


    Du kannst zwar Blueprints und C++ verwenden das musst du aber nicht das meiste kann man mit Blueprints umsetzen. Nur bei komplexen Sachen brauchst du dann wirklich C++

  • Kein Problem.


    Die Engine ist in C++ geschrieben. Diese bietet Basisklassen für Akteure, Charaktere und viele andere Sachen an. Diese sind alle in C++ und wenn du willst, dann kannst du darauf in C++ weiter aufbauen. Das feine ist nun, dass du das nicht musst. Als Artist oder Quereinsteiger, oder einfach weils bequemer ist, kannst du auf Blueprints bauen. Blueprint ist eine Art Skriptsprache, die intern in C++ Code umgewandelt wird. So kannst du fast alles in Blueprints machen. Das was noch nicht mit Blueprints geht schreibt man sich für gewöhnlich in eine eigene C++ Klasse und macht es für Blueprints verwendbar.


    Wenn dir Vererbung bereits ein Begriff ist, dann muss ich noch dazu sagen, dass jede Klasse in UE4 von irgendwas erben muss, was letzt endlich ein UObject wird. Deine Blueprints können zwar von C++ Klassen und von Blueprints erben aber deine C++ Klassen können nicht von Blueprints erben.


    Gruß
    Mario

  • Du kannst zwar Blueprints und C++ verwenden das musst du aber nicht das meiste kann man mit Blueprints umsetzen. Nur bei komplexen Sachen brauchst du dann wirklich C++

    Ich arbeite konsequent nur mit Blueprints obwohl ich C++ Erfahrung habe.


    Mit Blueprints erstellt man nicht nur in unglaublicher Geschwindigkeit vollwertige C++ Programme sondern ändert auch schnell und übersichtlich ab.
    Blueprint liefert einem nicht nur die passenden Funktionen oder Klassen sondern gibt einem auch Hinweise und Infos darüber ohne das man nur einen
    Blick in die Doku werfen muss.


    Das Debugen ist einfach und wird visuell perfekt dargestellt.


    Mir ist bis jetzt nichts bekannt was man nicht in Blueprint erstellen kann.


    Auch um komplexe Programme zu erstellen ist Blueprint unschlagbar. Es gilt einfach Ordnung zu halten und Programmteile in Funktionen Makros zu packen.


    Ja, in Blueprint erstelle Programme sollten ein wenig langsamer laufen. Das kann man aber in der Regel vernachlässigen.


    Gute Infos liefern Youtube Videos.


    PS: Blueprint ist keine Scriptsprache

  • PS: Blueprint ist keine Scriptsprache


    Blueprint ist eine Art Skriptsprache, die intern in C++ Code umgewandelt wird.


    Es wird von einem Interpreter umgewandelt. Folglich ist es eine Art Scriptsprache. Den Teil den man sieht sieht mans zwar nicht an, dass da eine Sprache dahinter steckt, aber öffne mal ein Blueprint mit einem Texteditor. Da wird der bezug zu "Sprache" etwas deutlicher.

  • Ich rate JEDEM ganz stark zu Blueprints - selbst Profis nehmen Blueprints und wenn alles klappt bauen sie das mit c++ nach, um die letzten 0,00001% Performance rauszukitzeln - mmN kommt man als Hobbyist ohnehin nicht an die Performancegrenzen. bzgl. BP <-> c++


    Games wie etwa "Into the Stars" sind vollständig in BP realisiert ohne eine Zeile c++