Multiplayer Fahrphysik performant und modular

  • Ich empfehle dir die 4.24 zu nutzen, ist die einzige Version die ich kenne, wo ein Print String auch problemlos während des Loops funktioniert ^^


    Aber Achtung: Dafür haben die Loop Makros andere Probleme, zumindest bei mir, wie z.B., dass sie teilweise abbrechen obwohl sie noch nicht fertig sind, hehe (kann man aber fixen)



    Oder du baust einfach einen eigenen Loop auf, so schwer ist das eigentlich nicht:

    Array -> Last Index

    Array -> Get (a copy) ... als Index, nen Int nehmen, der hoch gezählt wird.

    Der hochgezählte Int endet, wenn der LastIndex erreicht wurde.


    Damit ists auch möglich, während des Loops, nen Delay einzubauen ^^

    • Offizieller Beitrag

    Damit ists auch möglich, während des Loops, nen Delay einzubauen ^^

    Es ist so gewollt, dass zwischen den loops kein delay funktioniert.



    Ich empfehle dir die 4.24 zu nutzen, ist die einzige Version die ich kenne, wo ein Print String auch problemlos während des Loops funktioniert ^^

    Da wirst du eher andere probleme im Script haben. denn das kann ich mir nicht vorstellen.

    Aber Achtung: Dafür haben die Loop Makros andere Probleme, zumindest bei mir, wie z.B., dass sie teilweise abbrechen obwohl sie noch nicht fertig sind, hehe (kann man aber fixen)

    Wie gesagt, dein Script überprüfen, das kannst du hier nicht veralgemeinern. Ich hab manchmal auch mit den gedanken gespielt, das einige sachen Bugs in der ue4 sind, aber dann doch ein logischer Fehler war von mir. Wenn die Bugs reproduzierbar sind, dann sind es richtige Bugs.

  • Es ist so gewollt, dass zwischen den loops kein delay funktioniert.

    Und trotzdem teilweise hilfreich, wenn es so wäre, also selber machen ^^

    Da wirst du eher andere probleme im Script haben

    Naja, wenn es in der 4.23 funktioniert hatte und in der 4.24 auf einmal nicht mehr, ohne dass ich was daran geändert hab (ist nach wie vor, das Standard-Makro), liegt es wohl eher nicht an mir...

    • Offizieller Beitrag

    Sie verändern bei jeder version die reihenfolge der tickrates. Wenn etwas nicht wie gewohnt funktioniert, dann liegt das eher am timing. Das die tickrates reihenfolge sich änedert, liegt nur daran, dass neue funktionen dazwischen sind. unbedingt danach forschen, warum bei dir das anders ist. Denn Fehler in solcher art wurde bisher nicht gemeldet, grad mal selber geschaut.

  • Danke du bist mein Held :)


    Ich sags euch, die Unreal Engine 4 ist das reinste Irrenhaus, bis man da was findet...


    Jetzt kann es endlich mit der Fahrphysik weitergehen.


    Demnach gleich eine neue Frage:

    Habe nun "MasterFahrzeug" Blueprint was als ParentClass: Wheeled Vehicle hat.


    Ich möchte nun das dieses MasterFahrzeug als Basis-Fahrzeug dient (sozusagen die Karosserie), an diesem setzt man nun Reifen, Waffen, Panzerung daran.


    Wo genau müssen diese Zusatzteile (Reifen, Waffen usw.) in dem MasterFahrzeug eingetragen werden.

    Wäre das eine Art SkeletalMesh-Array?

    Diese Bauteile sollen im Klemmbaustein-System an das Fahrzeug angebracht werden.


    Das ganze muss im Live Betrieb beliebig wechselbar sein, Reifen durch Panzerketten austauschen, neue Waffen usw.

    Zugleich sollen alle Bauteile zerstörbar sein (hört sich nach viel Arbeit an).



    Meine Frage bezieht sich mehr darauf, wie kriege ich einen Reifen mit Fahrphysik an das Fahrzeug, damit beides funktioniert?

  • Vom logischen her dürfte das so aufgebaut sein:


    Masterfahrzeug (leer), enthält die Variablen für die Lenkung, Beschleunigung, Bremsen usw. (diverse Variablen).


    Masterfahrzeug (leer) -> Child -> Blaupause (darin werden alle Bauteile angeheftet)


    Masterfahrzeug (leer) -> Child -> Bauteile (Panzerung usw.)


    Masterfahrzeug (leer) -> Child -> Antrieb (Reifen, Ketten, Beine usw. die Physik und Animation)


    Masterfahrzeug (leer) -> Child -> Waffen (Für alle Waffen oder sonstiges)


    Daraus werden wiederum entsprechende Child erstellt die dann später an die Blaupause angebaut/angeheftet werden. Live im Spiel.


    Die Frage die ich mir nur stelle ist, wie kann ich ein Pawn (Antrieb) an ein Pawn (Blaupause) anheften und darin speichern?

    Wäre das eine Array-Variable, die zugleich auch ein Vector enthält?


    So das z.B. Reifen 1 an X:Y:Z am Hauptbauteil in der Blaupause hängt.


    Das muss entsprechend repliziert werden, damit andere Spieler das sehen.

  • Ich hätte da eine komische Frage: Es geht um Pawn.


    MasterFahrzeug hat ein Mesh und daran hängt das Basismodul (beides Skeletal Mesh).

    Am Basismodul kommen die ganzen Bauteile/Antriebe (Räder usw.).

    Das funktioniert soweit super, die Räder fahren, aber ohne das sich das Mesh bewegt.


    Wie kann ich es machen das die angehefteten Bauteile auch das Mesh bewegen?

    Also das Mesh soll sich genau so verhalten wie die Teile die am Basismodul dran hängen, wie geht das?


    Wenn ich beschleunige oder lenke, dann fahren die Räder/Ketten alleine los...


    Das Problem ist ich muss das genau so machen und nicht umgekehrt (das die Antriebe an erster Stelle sind und alles anderen an den Antrieben/Räder/Ketten hängt). Denn so würde es funktionieren aber das ist nicht das was ich brauche.

    • Offizieller Beitrag

    Ich hab sowas auch noch nie gemacht aber von der Theorie her musst du deine Fahrzeugteile logisch durch Contraints miteinander verbinden.


    Ich stell mir das so vor:

    Bei einem Frontantrieb ziehen die vorderen Ränder die ganze Karre, Die hinteren Räder folgen den vorderräder.

    Entweder du verbindest die Hinterräder und die Karosserie und den mit den Vorderräder oder du verbindest die reifen und den Rest mit der Karosserie.

  • wieso sind die beiden teile eig skeletal?

    Fahrzeuge sind Skeletal, weil sie Bones benutzen:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Bei 19:35 zeigt er wie man die Räder zum bewegen bringt ^^

  • Ich hab sowas auch noch nie gemacht aber von der Theorie her musst du deine Fahrzeugteile logisch durch Contraints miteinander verbinden.


    Ich stell mir das so vor:

    Bei einem Frontantrieb ziehen die vorderen Ränder die ganze Karre, Die hinteren Räder folgen den vorderräder.

    Entweder du verbindest die Hinterräder und die Karosserie und den mit den Vorderräder oder du verbindest die reifen und den Rest mit der Karosserie.


    Vom logischen her Ja, aaaaaaaber das Mesh bekommt nicht die Information sich auch bewegen zu müssen.

    Das Basismodul ist die Fahrerkabine, an die dann die ganzen Teile montiert werden.

    Ein "SetWorldTransform" funktioniert leider auch nicht, weil dann könnte man einfach das World Transform von den Antrieben nehmen und dieses 1:1 auf das Mesh übertragen.


    Die Bauteile sind sich alle später entsprechend verziehen/verformen können (in reduzierter Detailstufe damit die Performance bei mehr Spielern nicht total schlecht ist).

    • Offizieller Beitrag

    wieso kann man das nicht einfach mergen? fahren die räder ohne achsen und unterbau oder mit dem zusammen?

    Wenn sich die Räder drehen sollen nicht.

    Vom logischen her Ja, aaaaaaaber das Mesh bekommt nicht die Information sich auch bewegen zu müssen.

    Das Basismodul ist die Fahrerkabine, an die dann die ganzen Teile montiert werden.

    Hast du dir mal das Paranting einmal angeschaut ?


    Wenn du im Outliner ein Mesh auf ein anderes scheibst, werden diese Verbunden.

  • Geloscht So, wie ich das mal gehört habe, soll Rotation über ein Material sogar performancesparender sein. Das ist jetzt aber nur gefährliches Halbwissen. Wie sind so deine Erfahrungen damit?

  • So, wie ich das mal gehört habe, soll Rotation über ein Material sogar performancesparender sein. Das ist jetzt aber nur gefährliches Halbwissen. Wie sind so deine Erfahrungen damit?

    Material ist immer besser ^^


    Wenn man z.B. Skeletal Gegner im Spiel hat, kommt man selten über 100 gleichzeitige Gegner ohne dass es laggt.

    Wenn man aber StaticMeshes übers Material per Vertex-Animation animiert, kriegt man locker tausende Gegner hin, sofern die nicht zu viel Berechnung in BPs brauchen...


    Wenn ich irgendwann mal Fahrzeuge in ein Spiel einbauen will, würd ich das auf jeden Fall erstmal mit StaticMeshes testen, selbst wenn es nicht so super real aussieht, immerhin wäre dann die Performance besser als bei 90% der anderen Games ^^

    • Offizieller Beitrag

    Kann rotierendes Material diesen verwisch effekt erzielen? Ich glaub, Deswegen hat man ja immer die Reifen drehen lassen.

    Exaran Ich bin da leider raus, ich hab von den Kram keine Ahnung. Ich kann dir nur empfehlen vieles neu aufzubauen. Auf etwas zu bauen was man nicht kennt ist meistens nicht möglich.

  • Kann rotierendes Material diesen verwisch effekt erzielen?

    Keine Ahnung...


    Andere Frage: Siehst du deine Reifen, wenn du im Auto sitzt?

    Selbst in nem Third-Person Auto wird es mit Sicherheit wichtigeres geben, als ob jetzt die Reifen ab ner bestimmten Geschwindigkeit so aussehn als ob sie rückwärts laufen oder nicht, wie z.B. ob man gleich gegen den Baum kracht ^^


    Edit:

    Ja, kann es...

    Externer Inhalt youtu.be
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.