Beiträge von Tomarr

    Ich verstehe den Zusammenhang nicht so ganz. Was haben meine Interfaces damit zu tun? Ich habe dir auf Discord 8 Stunden, Schritt für Schritt, erklärt, wie die funktionieren. Das Dumme ist nur, du hast zu dem Zeitpunkt noch nicht einmal verstanden, wie ein Branch funktioniert. Und da sehe ich das Problem. Viele sehen nur Tutorials und klicken das nach, sie überlegen aber nicht, wieso das so gemacht wird. Und genau dasselbe Risiko, da nehme ich mich jetzt auch nicht aus, ist, wenn man ständig nur die KI fragt.


    Mit deiner Framerate usw. hat das mal gar nichts zu tun, sondern mit technischer Umsetzung. Das Ziel bei der Programmierung sollte nicht die Framerate sein, sondern die möglichst korrekte Umsetzung, dann kommt die Framerate ganz von alleine. Denn die meisten Framerateneinbrüche kommen wegen fehlerhafter Abfragen im Code, lange Umwege bei der Kommunikation zwischen den Actoren usw.

    Es ist ja nicht so, dass ich KI grundsätzlich schlecht finde, als Unterstützung. Zum Beispiel um die Musik für mein Spiel zu erstellen. Ich habe halt nicht so die Gesangsstimme und eine professionelle Opernsängerin kann ich mir auch nicht leisten.

    Aber viele machen ja inzwischen alles mit KI. Inkl. Programmcode. Das Problem dabei ist, ihr fangt an blind den Code zu übernehmen, ohne ihn zu verstehen. Das ist schon bei normalen Tutorials oft der Fall. Ich kann nur immer wieder dazu raten nicht zu viel mit KI zu machen. Vielleicht mal Tipps holen, vielleicht auch mal ein Titelbild oder Inspiration für ein Design. Oder einen Bereich, den ihr nicht selber könnt und diesen auch nicht durch jemanden ersetzen könntet, der an dem Projekt mitarbeitet, in meinem Fall Musik und Gesang, da kenne ich halt niemanden.

    Aber bitte, hört auf euer Gehirn komplett an die KI abzugeben und diese alles machen lassen. Davon gibt es wirklich schon genug Spiele, sogar auf Steam und Co. Und sie sind alle schlecht, weil einfach ohne Seele.

    Das ist etwas schwieriger zu erklären. Aber, ich versuche es mal.

    Du musst dafür sorgen, dass dein Mesh ein korrektes Physics Asset hat. Dazu musst du mit Rechts auf das Mesh klicken und Physics Asset -> Create und Assign wählen. Ich nehme jetzt mal an, dass du den Tentakelknochen schon eigene Collisionsbuddies, wie Kapseln oder Kugeln hinzugefügt hast.

    Im Blueprint musst du das Ragdol im richtigen Moment starten (Zeitpunkt des Todes) zum Beispiel im Death Event musst du aufrufen, Set Simulate Physics auf true. Target ist die Meshkomponente und Haken bei Simulate setzen. Da dein Monster offensichtlich normalerweise schwebt, könnte es hilfreich sein, dass du gleichzeitig noch disable Movement setzt.

    Wie gesagt, etwas schwer zu schreiben, aber ich denke so in etwa müsste es hinhauen.

    Also, wenn du Physik aktiviert lassen möchtest, musst du dem Aktor eine Physics Constraint Komponente hinzufügen. Bei den Details setzt du als Komponente 1 den Torso und als Komponente 2 die Tentacle. Die Angular- und Lineralimits stellst du auf Locked, wenn es eine starre Verbindung sein soll, oder auf Limited, wenn du eine Art schwingendes Gelenk haben möchtest. Einfach mal ein wenig ausprobieren, wie es für dich am besten hinhaut.

    Oder halt Physik deaktivieren. In den meisten Fällen braucht man Physik nicht standardmäßig. Normalerweise schaltet man Physik für den Moment ein, wo sie benötigt wird, also wenn es einen Auslöser gibt, aber man lässt die Physiksimulation nicht dauerhaft laufen. Viel zu teuer von der Rechenleistung her, besonders, wenn man dann auch noch eventuell viele Objekte / Actoren hat, die alle plötzlich ständig Physik simulieren.

    Ich persönlich würde dir deswegen auch eher zu letzterem raten. Sonst landest du ganz schnell in einer Framratefalle. Das geht auch bei einer guten Grafikkarte und einem guten PC schneller als man manchmal denken mag. Mal davon abgesehen, dass wenn sich viele Physiksimulierte Objekte sich gegenseitig beeinflussen, weil gerade irgendetwas Größeres passiert, das Ganze sehr schnell komisch wirken kann.

    Also so einfach sollte es zumindest sein. Kommt natürlich auch auf deine Vorbereitung an. Sockets sind aber die häufigsten und einfachsten Verbindungen in der Engine. Gibt da auch noch andere Techniken, aber das sollte so der eigentliche Workflow sein, wenn man nicht etwas ganz wild doll Besonderes umsetzen will.

    Sockets haben den Vorteil, man kann sie relativ genau platzieren und namentlich ansprechen usw. Wahlweise kannst du auch Bones direkt ansprechen, aber das macht man in der Regel bei Trefferzonen usw.

    Kommt aber alles, wie immer, darauf an, was du wie umsetzen willst. Das mit dem Socket würde ich dir aber als Erstes empfehlen.

    Willkommen. Solange du nicht die ganzen 1 Million Fragen auf einmal stellst, bekommen wir das bestimmt hin, also meisten, so ab und zu, also wir haben zumindest oftmals ein paar Worte dazu und es könnte sogar sein, dass sie ab und an mal hilfreich sein könnten. Letzteres dann allerdings auf eigene Gefahr.

    Gut Ding will Weile haben. Ich hab extra ne Pizza besorgt für Discord aber da is ja auch nix los. Letzter Post vom April...

    Aber nicht auf unserem Server. Da ist erst vor kurzem einiges hinzugekommen. Ansonsten reden wir halt per Voicechat sehr häufig.

    ch benutz DIscord aber gar nicht, das is für mich so ne MIllenial also nach 2000 geborenen Software, für junge Leute.

    Jetzt übertreibst du aber ein klein wenig, oder? Erstens, 2000 ist auch schon 25 Jahre her, zweitens, du wirst wohl noch keine 84 sein. Und Discord ist halt die beste Art, neben diesem Forum, auch mal etwas zeitnah zu kommunizieren und am Stück zu kommunizieren. Gut, Teamspeak oder so wäre da auch noch gegangen, aber Discord bietet da einfach mehr Möglichkeiten und auf eins mussten wir uns ja einigen.

    Na ich glaube, die Zeit des Z1 sind doch ein wenig vorbei. Ich glaube auch nicht, dass man da die Unreal Engine drauf installieren kann, egal wie lang der Lochstreifen ist. Ich denke auch, dass die heutigen Methoden der Programmierung, egal in welcher Sprache, dann doch ungleich leichter sind.

    Ich denke aber, ich weiß so ungefähr, was du meinst und glaube, das geht vielen so. Man hangelt sich erst von Tutorial zu Tutorial und am Ende funktioniert es auch, aber so richtig von Grund auf hat man es dann halt doch nicht gelernt. Ich bin ja jetzt schon eine ganze Weile mit der Engine unterwegs und ich denke, dass ich jetzt so langsam wirklich mal etwas besser werde, allerdings auch recht vorsichtig gedacht, denn die Engine kann einem sehr schnell mal wieder beweisen, dass man doch nur ein Dödel an der Tastatur ist, wenn man nicht aufpasst.

    Deswegen will ich ja auch jetzt nach und nach auf C++ wechseln. Das hatte ich zwar schon des Öfteren vor, aber zum Beispiel hat mir das letzte Projekt, an dem ich mit beteiligt war, dass BPs doch ganz schnell auf die Nerven gehen können, weil man irgendwann nur noch Verbindungen und bunte Linien sieht, verteilt in zig verschiedenen BPs usw. Nur deswegen will ich auf C++ umsteigen, weil ich denke, man kann da auf Dauer besser die Übersicht behalten, schneller auch mal was ändern, was auch immer. Also mir geht es eher um das Handling, nicht, weil ich vielleicht denke, dass man irgendetwas mit BPs nicht umsetzen kann oder so. Inzwischen sind BPs schon sehr umfangreich nutzbar, ich hatte schon lange keine Situation mehr, wo ich mir vielleicht eine eigene Node in C++ bauen muss, das war früher eher schon einmal der Fall.

    Ich meine, falls du mal genauer dich darüber unterhalten willst, du bist auf Discord gerne willkommen, auch, wenn jetzt im Sommer, weniger los ist, selbst ich bin dann nicht ständig online.

    Wenn ich mir so manche Material Blueprints anschaue die gefühlt 1000 Befehle ausführen und trotzdem läuft es flüssig als wärs nur ne Textur scheint das kaum ins Gewicht zu fallen. Das packen moderne CPUs mit links und Frameraten Probleme kommen fast immer durch Auflösung, Polycount und Beleuchtung.

    Und genau das ist das Problem, weswegen sogar viel AAA-Titel versagen. Niemand macht sich Gedanken über die Codeoptimierung. Nun mag es zwar ein sehr selten vorkommendes Beispiel gewesen sein, wo ein Programmablauf oft in eine leere Else-Verzweigung schauen muss, immerhin gibt es ja noch Events, Eventdispatcher usw., über die man vielleicht solche Situationen auch lösen könnte. Aber, stell dir mal vor, du hast ein Spiel, welches mit 120 FPS, also 120 Bildern pro Sekunde, laufen soll. Und jetzt läuft es aus irgendeinem Grund mal ganz blöd und er schaut auch 120 Mal pro Sekunde in dieses leere Else. Immerhin werden die meisten solche Abfragen hinter ein Tick-Event setzen, welches wirklich oft aufgerufen wird. Doch, dann kannst du die Performance verbessern, wenn du das vermeidest. Nur, weil heutige Rechner scheinbar enorme Rechenleistungen haben im Vergleich zu einem 80386er-Prozessor und auch mehr RAM haben, als die damaligen 640 KB, gibt es da keine Ausrede sich nicht zumindest darüber Gedanken zu machen und auch das neben hohen Polygonzahlen nach Möglichkeit zu vermeiden.


    was ist dann and, or, not oder nor?


    Mit dem logischen Not-Operator sieht es dann halt so aus


    Code
    if  (i != 20)
    {
        tu das eine;
    }
    else
    {
        tu etwas anderes;
    }


    Im zweiten Beispiel hast du die IF- und Else-Zweige quasi umgekehrt.


    Dann das Ganze mit AND


    Code
    if  (i == 20 && y < 20)
    {
        tu das eine;
    }
    else
    {
        tu etwas anderes;
    }

    Hier müssen beide Bedingungen erfüllt sein, sonst landet die Abfrage im Else-Zweig


    Und das Ganze noch einmal mit ODER


    Code
    if  (i == 20 || y < 20)
    {
        tu das eine;
    }
    else
    {
        tu etwas anderes;
    }

    In diesem Fall reicht es halt, wenn einer oder beide wahr sind. Nur wenn beide nicht erfüllt sind, landest du im Else-Zweig.


    Und so funktioniert es auch in der Engine.


    Das normale IF


    Zwei Varianten mit der Verneinung !=


    Beispiel mit AND


    Beispiel mit OR


    Im Wiki auf dieser Seite habe ich die logischen Operatoren übrigens mal eingefügt, da kannst du dir genau anschauen, welche Wirkung diese haben.


    Ich habe nochmal zwei Bilder eingefügt, die den Bereich des jeweiligen Codes darstellen und auch zeigen, dass das eigentliche IF vor dem Branch stattfindet.

    Ja, irgendwie schon, aber doch nicht so ganz. Blueprints sind, wie soll ich das ausdrücken, eine Art Wrapper-Version von C++.

    Du kannst es ja zum Beispiel auch mischen, du kannst ein BP-Projekt nutzen und, wenn nötig, kannst du dir über eigenen C++-Code eigene Nodes schreiben. Das ist relativ einfach und du kannst dir ja mal ein kurzes Tutorial dazu auf YouTube anschauen. Da wirst du dann erkennen, dass ein ganzer Teil des Codes dann die Ein-/Ausgänge und das Aussehen der Node beschreibt.

    Deswegen gibt es auch ein paar Unterschiede zu BP und C++. BP sind, nennen wir es mal relativ gekapselt. So kannst du in einem BP zum Beispiel ein Enum erstellen, dass die Schlüsselworte "True" und "False" enthält, ohne Probleme. In C++ Code geht das nicht so einfach, weil es halt Schlüsselworte der Programmiersprache sind.

    Ähnlich wird es mit Branch sein. In dem Makro "Branch" wird im Hintergrund zwar ein If ... Then ... Else im Wrapper stecken, macht es aber, wie kyodai schon geschrieben hat, etwas unflexibler, weil immer ein Else mit enthalten ist. Bei C++ kannst du es weglassen.

    Nun weiß ich allerdings, weil nicht ausprobiert, das einen negativen Einfluss auf das Programm hat, denn theoretisch wird das Else, auch wenn es leer ist, immer mit überprüft bei fehlgeschlagenem If. In C++ kannst du das Else halt weglassen. Wenn es negativen Einfluss auf die Geschwindigkeit hat, dann kann ich mir durchaus vorstellen, dass es auch nicht irrelevant ist, wenn viele solche Abfragen in kurzer Zeit durchlaufen werden.

    Aber, zumindest theoretisch, weil auch das habe ich noch nicht ausprobiert, kannst du dir auch eine Node schreiben, wo es nur einen If-Zweig gibt, dann wird der folgende Code halt nur bei Erfüllung einer Bedingung ausgeführt, wenn das Ergebnis True ist, ohne, dass da eventuell noch ein Else-Zweig kurz nachgeschaut wird, auch, wenn er leer ist.

    Deswegen, wenn du solch weitreichenden Überlegungen in deinem Projekt Platz finden, also auch was die Optimierung von zeitlichen Abläufen angeht, hast du immer die Möglichkeit BP und C++ auch zu mischen, sprich, du musst nicht unbedingt alles in BP oder C++ schreiben. Dann hast du halt beides aus beiden Welten, einmal die Leichtigkeit und das schnelle, relativ fehlerfreie Vorankommen mit BP und auch die Flexibilität, Optimierungsmöglichkeiten und Kontrolle von C++.

    Viele sagen zwar, es gibt keinen Unterschied zu BP und C++, und ja, es hat sich im Laufe der Versionen wirklich verbesser, sodass man immer weniger eigenen C++-Code schreiben musste, aber hier und da ist es vielleicht nicht so verkehrt, vielleicht doch einmal über Optimierungsmöglichkeiten nachzudenken. Ist halt immer nur die Frage, ob dir der Aufwand das Ganze wert ist und es sich am Ende dann halt auch wirklich für dein Projekt lohnt, oder du vielleicht nur mit dem guten Gefühl ins Bett gehst, dass du deinen Code ein Stück mehr optimiert hast und das am Ende vielleicht dein Antrieb dafür ist.

    Sieht doch gut aus.

    Ja, mit den ganzen Programmen, mit denen man als Alleinprogrammierer umgehen muss, ist schon ziemlich umfangreich.


    Ich hatte neulich auch festgestellt, dass ich mich neben der Engine und Blender eigentlich noch mehr mit Substance Designer und Painter beschäftigen müsste. Aber dann ist mir eingefallen, hey, ich habe irgendwie trotzdem nur einen Kopf und zwei Hände.

    Ja, ist schon anstrengend, wenn man seinen Traum verwirklichen will. Aber hey, es soll ja Menschen gegeben haben, die es sogar geschafft haben. ;)

    Alles extrem gute Fragen. Wie gesagt, mir kommt das Ganze noch vor, als wäre es noch in einem sehr frühen Stadium. Alphastadium wäre da wohl noch geprahlt.

    Ich hatte versucht einen neuen Ordner anzulegen usw., aber umbenennen ging nicht, blieb immer bei "New Folder". Auch andere Einstellungen waren da nicht besser. Mal davon abgesehen, dass sich auch nichts geändert hat, die Dateien landeten dann auch nicht im New Folder oder so.

    Ich bin mir nicht ganz sicher, ob das jetzt an meinem Rechner und meiner Installation liegt, weil sowohl meine Festplatte ist ein wenig überfordert, einige Installationen/Deinstallationen habe ich auch schon hinter mir usw., als auch mein Rechner selbst hat schon ein paar Jahre auf dem Buckel. Da kann natürlich auch schon einiges durcheinandergekommen sein. Zumindest vermute ich das. Ich kann mir gar nicht vorstellen, dass bei Epic noch keiner gemerkt hat, dass das alles nicht so richtig funktioniert.

    So, habs mir mal angeschaut. Ist ein wenig frikelig, wie ich finde, funktioniert aber.

    Ich gehe mal davon aus, dass du keinen Schritt übersehen hast, zum Beispiel wie Source hinzufügen, Record klicken usw.
    Die Aufnahme wird sofort gestoppt, in dem Moment, wo du das Spiel stoppst. Es wird dann automatisch in einem Contentordner mit dem Namen Cinematics gespeichert. Da kannst du die Sequenz dann auch wieder aufrufen.

    Ich hatte die internen Tools noch nie benutzt, scheint mir noch ein wenig in der Entwicklung zu sein, oder so. Einiges an den Einstellungen und der Handhabung ist schon merkwürdig. Zum Beispiel, wenn man einen Ordner in die Einstellungen hinzufügt, kann man den Namen nicht festlegen usw. Deswegen konnte ich jetzt auch nicht wirklich viel ausprobieren, vielleicht ist es ja auch nur bei mir so.

    Das kommt ja darauf an, welche Software du benutzt, Videocapture oder ähnliches. Da gibt es ja verschiedene Programme.

    Die internen Tools der Unreal Engine, ich weiß nicht, ob die bei deiner Frage zutreffen, ist auch nicht ganz so innovativ. Empfehlen würde ich, die das OBS Studio.

    Und dann kommt es natürlich auch darauf an, wo du veröffentlichen möchtest. Auf YouTube zum Beispiel würde ich das mp4-Format, 1080er-Auflösung und ein Seitenverhältnis von 16:9 empfehlen.