Beiträge von Exaran

    Wenn du es nicht übers Material lösen willst, was meiner Meinung nach noch das genaueste System ist, dann kannst auch dein Skellet nehmen, welcher Bone wird getroffe? Sollte ja jeder Spieler und jeder NPC eins haben? Abweichungen kannst ja über das Trace regeln.


    Was auch geht sind getrennte eigenständige Hitboxen. In Blender kannst Körperteile einfach markieren, duplizieren und dann als Hitbox abspeichern. Da leidet dann aber die Performance etwas drunter. Allerdings ist die Methode sehr genau. Ob ein Charakter ne Rüstung trägt, wäre mir bei der Berechnung egal, da die Rüstung eh irgenwo im BP hinterlegt ist, die würde ich erst bei der Berechnung des Schadens berücksichtigen (gilt nicht für Schilde)


    Über Material müsste jedes Körperteil ne eigene Material haben?

    Linker Arm = Material 1

    Rechter Arm = Material 2

    Kopf = Material 3


    Usw.?


    Das mit den Körperteilen aus Blender ist nicht gut finde ich, am besten wäre eine einfache und präzise sowie performante Lösung. Sofern ich richtig verstehe was du meinst. Das wäre sozusagen den Kopf noch mal einzeln als Mesh zu machen und diesen unsichtbar über den eigentlich Kopf zu setzen? Sozusagen ein Kopf im Kopf der dann die Hitbox ist.


    Ursprünglich war gedacht das so zu machen, das wenn eine Lücke in der Rüstung ist und man dazwischen sticht/schießt das die Rüstung dann umgangen wird, aber da ich so viele Rüstungsregionen habe ist das doch nicht so gut.


    Also was Annubis gesagt hat, funktioniert auf alle Fälle.


    Meine Idee wäre noch, dass du die Sockets der Körperregionen in nem Array speicherst, und dann mit For-each bei jedem Treffer guckst, welche Körperregion das ist, und dann deinen Schaden berechnest.

    Wie genau macht man das und wie präzise ist das ganze?

    Das mit den Bones wäre super, weil dann auch alles in den Animationen soweit passen würde.


    Bin mir da auch nicht so ganz sicher, deswegen.



    Wenn man BOX oder Zylinder usw. als Hitbox verwendet, dann verursacht das Fehler in diversen Animationen (wenn die sich überlappen).


    Daher wäre Material schon das beste, aber wie mache ich das so das es zu keinen Problem führt?


    Der Grund ist, dass man besonders viel Einstellungen am Character vornehmen kann (extrem viele optische Veränderungen), über Haut, Tattoo, Schminke usw. sowie auch die Morphs (also Größen von Körperteilen) das muss alles mit in den Schadensbereich berechnet werden.


    Sprich, eine große Person hat auch eine größere Hitbox, während eine schlanke eine kleinere hat usw.

    Hallo zusammen!


    Ich möchte gerne mein Hitboxen System erweitern und nun bin ich etwas am rätseln wie ich das am besten anstellen kann.

    Das gilt natürlich für Multiplayer über einen deticated Server! Also das ganze muss replizierbar sein!


    Es geht darum:
    Ich möchte 6 Trefferzonen am Körper haben mit unterschiedlichen Multiplikator (mal X), das soll auch für NPCs gelten. Die Schadensberechnung ist einfach.

    Kopf : 200% Schaden

    Torso : 100% Schaden

    Linker/Rechter Arm: 50% Schaden

    Linkes/Rechtes Bein: 50% Schaden


    Nun möchte ich KEINE Hitboxen haben, wie namentlich erwähnt, sondern der Körper selber soll die Hitbox sein, entsprechend der Körperteilen. Dadurch sollen die Hitboxen einfach kleiner ausfallen.

    Dazu kommt noch das die Rüstung die über dieser Hitbox (Körperteil liegt) den Schaden reduzieren soll, oder ganz aufhalten. Die Schutzwerte mit den Schadenswerten zu prüfen ist auch hier kein Problem.

    Aktuell zählen alle Rüstungsteile zusammen was das ganze ziemlich schlecht macht, weshalb ich das ganze gerne in Trefferzonen/Regionen/Bereiche unterteilen will. So das auch eine schwere Beinpanzerung mehr oder weniger Sinn macht, je nachdem.



    Wie macht man diese Körper-Passgenauen Trefferzonen?

    Aktuell habe ich nur eine Trefferzone, der Character Mesh. Das geht auch ganz gut aber das ist mir zu allgemein, leider weiss ich nicht wie ich genau ein Bein (als Beispiel) als eigene Trefferzone definieren kann.

    Kann man das über die Bones machen oder wie genau?


    Das Problem dabei ist, bei Schusswaffen ist das ganze total easy, aber bei Nahkampfwaffen kann es aufgrund der Kollision schwerer werden.

    Das Ziel beim Kämpfen sollte sein das man möglichst die Schwachstellen des Gegners trifft, Siehe oben bei Tabelle und entsprechend der Rüstung.


    WICHTIGE FRAGE:
    Welche Art der Kommunikation verwende ich am besten (bezüglich Multiplayer) für die Schadensübertragung?

    Derzeit benutze ich "Event AnyDamage" weil man damit schon viele Informationen übermitteln kann die echt hilfreich sind, aber ist das auch wirklich das Beste?


    Hier ein Bild wie der Schaden der Waffe übermittelt wird:
    ItemDataBaseAusruestung = Struct der Waffe mit den ganzen Werten darin.
    DamageTypeClass ist derzeit noch einzeln gemacht, also ich habe bisher 3 solcher Blöcke für das Schadenssystem.


    ---


    Hier ein Bild wie der Schaden am MyCharacter ankommt und entsprechend gefiltert/reduziert wird (etwa durch die Rüstung Schnittschutz usw.).

    Derzeit gibt es nur 3 Schadensarten, aber es sollen noch weitere 12 dazu kommen.



    ---


    Ich habe mal irgendwo in einem Video gesehen das jemand vom Mesh z.B. ein Bein abschneidet und dieses Bein (unsichtbar) über das original Bein stülpt und dieses "Fake-Bein" dann mit einer Trefferzone belegt.

    Das klingt schon nicht schlecht aber nicht unbedingt die Lösung wonach ich suche (das wäre recht umständlich).

    In diesem Video (als Beispiel) verwendet dieser das Physics Modell für die Trefferzonen, aber das ganze erscheint mir doch größer (zu große Hitbox) für den Kopf. Der Kopf soll sehr schwer zu treffen sein, dafür macht man auch den doppelten Schaden daran.



    Freue mich auf Infos von euch, danke!


    Euch allen ein schönes sonniges Wochende!

    Oh weiha da blicke ich bald nicht mehr durch.

    Also das Thema Weltenbau ist ja mal gigantisch groß, leider bin ich dazu bisher nicht gekommen da erstmal die Grundmechaniken vorhanden sein müssen.


    Aber wenn ich mir so einige "Megascan" Teile anschaue, da ist ein Baum schon 1-2 gb groß. Aber die sehen dafür schon richtig gut aus.

    Also ich warte auf die UE5, ich habe da einen speziellen Plan eines Sci Fi Spiels...


    Wenn es wirklich funktioniert das man ohne LODs und Low Poly Modelle arbeiten kann, also wirklich alles in Highpoly rein wirft und es läuft dann wäre das zumindest für mich ein Game Changer.


    Zumindest mich beschäftigt dieser Aspekt sehr. So sehr das ich sowieso mit der UE4 kein Spiel bringen werde... wenn das wegfällt wäre das ein Traum.

    Der Weltenbau wird am meisten davon profitieren.


    ---

    Ja so mache ich das auch, bei der aktuellen 4.25 habe ich wieder mal den Bug das die Fensterposition nicht gespeichert wird wenn man mit 2 Clients testet.

    Das liegt daran das mein Monitor eine überbreite hat (21:9) und damit kommt die Unreal Engine 4 nicht so klar :(

    War bei allen Versionen der Fall, leider.


    Aber grundsätzlich ist eine höhere Version immer relativ weniger Fehlerbehaftet als die vorgänger Version.


    ---


    Sicherlich ein Tippfehler eines Laien. Gemeint war wohl nicht 4.5 sondern 4.25...

    Das kann schon stimmen wenn die UE 4,5 schon seit 2014 existiert.

    Hallo Leute!


    Die Unreal Engine 5 steht ja bald in der Tür und dann werde ich auch einen umstieg vollziehen.

    Die Frage ist nur, macht es jetzt schon Sinn von aktuell Unreal Engine 4,25 (oder anderes) auf die aktuelle UE 4,5 (vorläufer der UE5) umzusteigen?


    Oder lieber von aktuell UE 4,25 (oder anderes) dann direkt auf UE 5.0 (bei Veröffentlichung) zu wechseln?



    Ich kann im Launcher auch nichts von UE 4,5 finden was man runterladen könnte.

    Kann man beim Select, wenn man das an das Enum andockt (links seitig), auch automatisch die Anzahl aller Enums ermittelt die dann automatisch in die Enum Indexes eingelesen werden?


    Weil wenn das ich andocke und dann filter muss (etwa mit == 1 und == 2 und == 3 usw.)... oder kann man das so machen das es nicht nach zahlen gefiltert wird, sondern nach Enum == Enum(Select) = Icon 1, 2 oder 3.

    Danke für eure Antworten.


    Janinus habe jetzt eine billige Alternative gefunden: über "Select Object", darin kann man Grafiken auswählen.

    https://docs.unrealengine.com/…s/SelectObject/index.html

    EDIT: Mist, ich sehe gerade da kann man nur 2 auswählen :(



    Tomura

    Das klingt sehr interessant!

    Jedoch ist es dafür schon zu spät und ich glaube das wäre in diesem Fall nicht gut, weil an meinem Quest System gibt es ein großes Problem.

    Das Problem ist, das es ein chaotisches dynamisches Quest System ist, das hat mit den normalen Quests wie man diese in Spielen kennt nichts zutun.

    Hier muss man selber prüfen ob die Quest erledigt oder abgebrochen wurde.


    Das ist schwer zu erklären, aber im Grunde ist die Quest nur eine Art Text und die eigentliche Aufgabe ist unbekannt.

    Also man sieht die Aufgabe aber nicht die Lösung.


    Angenommen Spieler A muss 10 Eisenbarren von Ort 1 nach Ort 2 bringen.

    Jetzt wird Spieler A von einem anderen Spieler überfallen oder kommt aus irgendwelchen Gründen, zu tode und verliert die "Fracht".


    Normalerweise wäre die Quest in einem normalen System fehlgeschlagen, aber hier könnte der Spieler die Fracht ersetzten oder andere Spieler dazu beauftragen die verlorene Fracht zu suchen, was wiederum in einer weiteren Aufgabe endet.

    Das bedeutet der Verlauf einer Aufgabe ist unbekannt.


    Es könnte sein das aus einer einfachen Quest eine riese Welt-Quest wird, die die Hilfe von mehreren Spielern bedarf.

    Grob gesagt man weiss nicht was passiert, das ist die stärke in meinem Projekt.

    Eine genauere Erklärung mache ich wenn ich das Projekt vorstelle.


    Deine Idee könnte ich aber prima für etwas anderes gebrauchen.

    Ich möchte Fahrzeuge einbauen die man relativ frei gestalten kann, da würde das mehr Sinn machen.


    Also der Blueprint (ich nenne es immer "MasterBlueprint") wäre ein Actor Blueprint (child vom Master) in dem Z.B. ein Reifen enthalten wäre. Das hat XYZ Eigenschaften usw. (vermutlich in Kombination mit einem Struct für die Infos?).

    Ein weiteres Blueprint (child) wäre eine Panzerplatte mit entsprechenden Eigenschaften.


    Jetzt möchte ich beides aneinander kleben, damit das Fahrzeug durch die Reifen fährt und durch die Panzerplatten geschützt ist.

    So in etwa?


    Eine genauere Hilfe wäre super :)

    Hallo zusammen!


    Ich mache gerade mein Quest-System fertig und bin an dem Punkt angelangt, bei dem das ganze im Spiel angezeigt wird.

    Vor allem wo das Ziel ist, mit Entfernungsberechnung usw.


    Mein Quest-System ist ein Struct in dem eine ENUM ist, in der die Quest-Klassen spezifisch eingeteilt ist. Das wäre wie folgt:

    Enum 0 = Nichts

    Enum 1 = Bewachen

    Enum 2 = Materialtransport

    Enum 3 = Ziel töten

    usw.


    Dafür brauche ich nun ICONs (also grafische Images/Bilder) die im Spiel angezeigt werden, um das ganze weniger textlastig zu machen.

    Das wäre wie folgt:


    Enum = Nichts = Fragezeichen Bild/Icon

    Enum 1 = Bewachen = Schild Bildchen

    Enum 2 = Materialtransport = Karren Bildchen

    Enum 3 = Ziel töten = Fadenkreuz



    Da ich bereits ein ENUM (im Content Browser) habe, welches ich dann als Variable im Blueprint/Widget ansprechen kann, benötige ich nun so etwas ähnliches (im Content Browser) wie ein Enum in dem alle Icons/Bilderchen abgespeichert werden und zwar genau so wie im Enum 1:1.

    Damit ich es später beim verändern einfacher habe.


    Denn je größer das Projekt wird, um so mehr fummeliger wird das ganze und dem will ich entgegen wirken. Vor allem wenn es zu Fehlern kommt, kann man so schneller sehen wo der Fehler liegt, anstatt mühselig in den ganzen Blueprints zu schauen.


    Einfach nur die Bilder in das Blueprint/Widget zu kopieren reicht mir nicht, denn die Bilder/Icons sollen später von den Spielern im Spiel verändert werden können.

    Also benötigen die sowieso einen fest Sitzplatz (als Datei). Darin sind die Basis-Icons vorhanden.


    Mehr Informationen kann ich nicht geben, weil ich nicht genau weiss wie man das Problemchen beschreibt (es handelt sich dabei um eine Leichtigkeit, nichts mega komplexes). Nur komme ich nicht auf diesen leichten Fehler.

    Mach doch einfach ein komplett schwarzes Widget und darin fügst du ein Bild + Text ein (wie man es von diversen MMORPGs kennt). Etwas was man sich während der Ladezeit anschaut und liest.


    Dabei wird Bewegung und alles gestoppt (input deactivated) und wenn fertig geladen, wird alles wieder frei gemacht.


    Sozusagen ein Fake-Ladebildschirm, obwohl man schon im Spiel ist.

    Hier die Lösung für alle die danach suchen!

    "GetWidgetChildren" von einer ScrollBox, mit ForEachLoop für jedes Teil darin und dann einfach Add zu der anderen ScrolLBox!


    Ich habe das mit einem FlipFlop gemacht, weil das so am besten funktioniert.








    ----------


    Ich habe noch ein Problem mit dem Finden des richtigen Gegenstandes in einem Array.


    Ich habe eine AuftragStruct die verändert wurde, nun muss aus der "AuftragInventar" das alte Struct mit dem neuen Struct ersetzen. Aber der macht das nicht, egal wie ich das drehe und wende.


    "AuftragAuswahlIndexMyCharacter" ist sozusagen der Index für das Widget das man derzeit ausgewählt hat, aber das funktioniert auch nicht!


    Hat da jemand eine Idee wie man in einem Array etwas ersetzen kann?


    Danke

    Danke dir freezernick!


    Das mit den zwei Arrays in einem, da hatte ich schon den Gedanken an einen Struct, aber eigentlich wollte ich das vermeiden, zu viele kleine Dinge zu machen.




    Mit welchem Befehl verschiebt man eine ScrollBox (collapsed) aus einem ausgeblendeten Bereich zu einem anderen?

    Zu 1. Wie meinst du das mit Zwei Arrays in einem?

    Das wäre meine eigentlich Frage gewesen. So das es dafür keine Verwechslung mehr gibt.

    Wie macht man ein Array mit zwei Funktionen? Sprich ActorClass/Integer Array


    Zu 2.

    Kann ich eine ScrollBox zweimal verwenden und wie geht das? Weil wenn ich zweimal die gleiche ScrollBox habe, dann würde ich mir das hin und her transferieren sparen.

    Was meinst du mit "vorher aus der anderen Box entfernen"?

    Kann man nicht einfach den Inhalt von ScrollBox 1 in ScrollBox 2 "schieben"?

    Hallo miteinander!


    Ich bin gerade dabei das Auftragsystem fertig zu stellen und nun habe ich ein Problem mit den Widgets.

    Grob erklärt:
    Man erstellt einen Auftrag und darin kann man benötigte Gegenstände als Widgets anheften, die dann mit entsprechend Stückzahl angezeigt werden.


    Z.B.

    Der Schmied braucht: 3x Eisenbarren, 4x Holz, 10x Stein usw.


    Das funktioniert alles super (bis auf die Stückzahl, dazu später mehr).

    Mein Problem ist nun das ich 2 Scrollboxen habe, 1x für den Bereich wo man den Auftrag erstellt (BearbeitenFenster) und einmal für die Vorschau/Hauptseite des Auftrages (sozusagen die HauptFenster). Im Grunde sind es Bereiche im Fenster und es wird entsprechend die eine Seite ausgeblendet und die andere angezeigt.


    Nun muss ich aber den Inhalt von ScrollBox 1 (BearbeitenFenster) in die ScrollBox 2 (HauptFenster) transferieren, damit man bei der Vorschau sehen kann wie der Auftrag im fertigen Zustand aussehen könnte. Leider funktioniert das nicht. (Siehe Screenshot)



    ---


    Das zweite Problem ist das ich im Auftragssystem (Struct) 2 Werte als Array habe.

    1x ActorClass Array (damit man weiss welcher Gegenstand es ist)

    1x Integer Array (für die Stückzahl).


    Das mit dem ActorClass Array funktioniert super, für jeden Actor im Array wird ein neues Fenster in der ScrollBox (Hauptfenster) erstellt.

    Aber leider klappt das nicht für den Integer Array, eben für die Stückzahl der Gegenstände.


    Das ganze habe ich mir so gedacht:

    Für jeden Actor im "ActorClass Array" soll entsprechend der richtige Wert im "Integer Array" (Stückzahl) genommen werden, damit die Stückzahl einfach in den Wert des Widgets kopiert wird.

    Aber wie mache ich das ActorClass Array und Integer Array 1:1 den gleichen Wert nehmen?

    Ich weiss nicht wie ich das erklären soll... es geht darum das nicht falsche Werte genommen werden.


    Z:B.

    Eisenbarren

    1 Stück


    Holz

    3 Stück


    usw.


    Jetzt sollte aber Eisenbarren (ActorClass Array) auch 1 Stück von (integer Array) nehmen und nicht die 3 Stück vom Holz... wenn ihr wisst was ich damit meine :)


    Die Stückzahl wird vom "StückZahlEditableText" genommen und im Array abgespeichert.


    Das StückzahlArray und ActorClassArray, werden beide im Auftrag Struct gespeichert und wenn man den Auftrag öffnet oder anschaut, dann werden die ganzen Werte entsprechend eingelesen und angezeigt.



    Danke für eure Infos!


    Schönes Wochenende euch allen!

    Was ist eigentlich dieses "Twinmotion 2020" was es im Epic Games Launcher bei Unreal Engine ist?

    https://www.unrealengine.com/en-US/get-now/twinmotion


    Kosten: 1x ca. 300 $

    Perpetual License = unbefristete License, aber vermutlich jedes Jahr ein neue Version? Z.B. Twinmotion 2021, 2022 usw.


    Damit soll man hochqualitative Architektur erstellen können, hat sich das jemand schon angeschaut und betrifft das auch die Landschaft (Vegetation usw.)?


    Ist das das Geld wert?

    Der VInterpTo ist besser, der muss aber wenn man z.B. RotatorZ vorher normalizied werden, sonst bugt das.


    Der RInterpTo funktioniert bei mir nicht so gut.



    Wegen DeltaTime, da ich das ganze Script mit der Kopfbewegung bereits auf 40 Wiederholungen pro Sekunde limitiert habe, brauche ich dann überhaupt noch die DeltaTime oder ist das ne andere Geschichte?


    InterpSpeed hatte ich auch schon 1-100 drinnen gehabt und da ändert sich nichts.



    So habe ich das für die horizontale Bewegung gemacht, bei der vertikalen gibt es leider noch Probleme.

    Im Grunde soll der Kopf eben bis min max (links, rechts) bewegbar sein, danach soll der in die Mitte wandern und erst danach wieder zur Gegenseite, wenn man mit der Kamera in der Kreisrunde fertig gedreht hat.

    Und das soll eben auch für das hoch und runter schauen gelten, nur eben nicht invertiert.


    Also schaue ich nach maximal links oben, soll der Kopf dann auch bei dem überdrehen nach oben gerichtet in die Mitte wandern und dann zur Gegenseite gehen.

    Sozusagen: TargetY = -40 (für hoch) und unten TargetY = 30 (für runter), während man maximal -75 nach links und 75 nach rechts schauen kann.

    Die 170 sind dafür da, weil die Rotation maximal 180 - und + ist (bis -180 und dann bis +180 = 360).

    Der tote Winkel für TargetZ = 0 und dieser ist ab -170 bis +170. Also 20 Einheiten im Nacken sind der tote Winkel. Das funktioniert auch perfekt.


    Das gleiche System hatte ich für oben und eben getrennt mit Sequence für jede Kopfrichtung.

    Was für einen Wert tue ich bei "DeltaTime" und "InterpSpeed" rein?

    Egal was für Werte ich eintrage, der Kopf springt trotzdem in die gewünschte Position.


    Ich verwende keinen Tick sondern ein "RetriggerableDelay" mit Wert 0.02 = 40 Wiederholungen pro Sekunde.