Spawn PLayer Start

  • Hallöchen, hätte da eine Frage, über die die alteingesessenen von euch sicher schmunzeln werden ;)

    Da ich gerne meinen Charakter etwas zeitversetzt statt dem Level spawnen möchte dachte ich mir ich setze diese Nodes als Custom Event in den PlayerController.

    Das Event wird ausgeführt sobald ich den einen Button im Widget eines vorherigen Levels drücke, zeitversetzt durch ein Delay von 5 Sekunden.

    Wenn ihr Anregungen habt wie ich das besser machen könnte oder anders, wäre ich sehr verbunden, denn irgendwie scheint das bei mir nicht zu klappen. Die Level laden, aber nur die Landcape und der Charakter gar nicht, ab da nur einen Ausschnitt der Landscape im graugekachelten Grid vor mir.



    Ich danke im Vorhinein und wünsche euch ein schönes Wochenende euer Marc

  • Weiß nicht genau was du meinst.

    Habe einfach ein open level(Mainlevel) und danach ein load stream level(Unterordner mit world composition) des eigentlichen levels eingefügt. Danach ein cast to playercontroller und nach einem delay das Spawn Player event aufgerufen dass du oben sehen kannst.

    Beim Open level habe ich absolute nicht angeklickt, ist aber auch angeklickt dasselbe.

  • Das Erste, was mir auffällt, wenn du bereits eine Referenz zu Player Start hast, dann brauchst du natürlich keinen Cast To Player Start mehr machen.


    Wenn ich das richtig verstehe, dann spawnst du dann den Spieler und blendest dann das HUD ein.


    Aus irgend einem Grund scheint dein Spiel die ganze Zeit aber noch in eine Art Pausemodus zu sein, den du danach beendest. Da würde ich jetzt gerne mal fragen, warum du das in einem Pausemodus machst und wie dieser aussieht?


    OK, danach schaltest du in Game Only und lässt den Cursor verschwinden. So weit, so gut.


    Aber irgendwie scheint sich das BP nicht mit deiner Frage zu beschäftigen, ich sehe da kein Delay oder ähnliches.

  • Der Cast to PLayer Start ist da, damit ich dessen World Location bekomme, Wusste nicht was ich sonst in den Objectnode reinpacken soll.

    Das HUD sollte zwar eingeblendet werden, kommt aber auch nicht.

    Der Pausemode wird von Beginn an ausgeführt. Hatte das noch von früher drin.

    Der Delay liegt im Widget in dem das Custom Event (Spawn Player) aufgerufen wird. Dies sollte verhindern, dass mein Charakter durch den Boden kracht. Hatte das Problem einige Zeit.


    Habe da drei Warnings im OutputLog: Failed to find streaming levelobject associated with Ground2(Name des Levels stimmt aber).

    und: Warning OSS: No game present to join for session(GameSessio).

  • Weiß nicht genau was du meinst.

    Wenn ein neues Level geladen wird, wird dein PlayerController neu gespawnt.

    Alle Delays funktionieren somit nicht mehr ^^


    Mach dein Spawn-Character-Event bei Begin-Play rein, dann gehts.

    Kannst ja abchecken, welches Level es ist, damit der nicht im Hauptmenü gespawnt wird...

    Oder mach direkt nen eigenen Controller fürs Hauptmenü.


    Bei deinem "SpawnActor"-Event, musst am Ausgang aber noch ein Possess dran hängen, sonst wunderst dich, wieso du nichts machen kannst.

  • Ich habe im PLayer Controller keinen Delay. Ist im BtnStart des Character Creators nach dem Laden der Map.

    Hab nun versucht das Spawn Character Event in Begin Play zu platzieren: Resultat: Der Charakter fällt durch den Boden.

    Hier das Blueprint zum Laden der Maps: Leider sagt er mir im Outputlog, dass er meine Map nicht findet und dass obwohl beides WorldComposition mit Häkchen versehen ist und auch wenn ich das Mainlevel lade, finde ich unter Window-Levels dass entsprechende Level und kann es im Editor laden. IM Output log habe ich 2 Warnings:

    (No game present to join for session(gameSession) sowie ...toleave for session) und ein Error

    (InputMode: UIOnly - Attempting to focus Non-focusable widget SOBjectWidget)

    vielleicht könnt ihr mir dabei helfen.

    Alles Gute und einen schönen Sonntag euch allen

  • Warum hängst du dein Delay dann nicht einfach auch zwischen BeginPlay und Spawn deines Charakters. Ein Delay in einem Widget kommt mir etwas gruselig vor.


    Oder noch besser, du machst ein CustomEvent. In diesem Event packst du dann deinen Playerspawn rein. Nach BeginPlay startest du dann einen Timer, von mir aus 5 Sekunden oder so, der dann das Customevent nach Ablauf der Zeit aufruft. So umgehst du das Delay. Delay ist nicht unbedingt die sauberste Lösung für solche Sachen.


    Screenshot reiche ich gleich nach.

  • Ist im BtnStart des Character Creators nach dem Laden der Map.

    Wenn ichs richtig verstanden hab, dann ist der Character Creator ein eigenes Level, welches als Hauptmenü fungiert.
    Danach lädt ein neues Level mit deiner Spielwelt.

    Richtig?


    Wenn dein Character Creator, Funktionalität drin hat, einen Character zu spawnen, dieser im neuen Level aber nicht vorhanden ist, kann auch nichts gespawnt werden...


    Du brauchst wie in jedem Actor, auch in jedem Level eine eigene Logik (bei World-Composition nur im Persistant?) ^^


    Hab nun versucht das Spawn Character Event in Begin Play zu platzieren: Resultat: Der Charakter fällt durch den Boden.

    Logischwerweise brauchst da auch ein Delay, wie Tomarr richtig erkannt hat...


    Hier das Blueprint zum Laden der Maps:

    Seh ich nicht...

    (No game present to join for session(gameSession) sowie ...toleave for session) und ein Error

    Das Spiel sucht nach einer Multiplayer-Session, wurde keine Session erstellt, wird auch keine gefunden ^^


    Ich könnte mir auch vorstellen, dass das Multiplayer-Zeug das Problem ist, dass keine Map geladen wird, das ganze World-Composition soll in UE4 bisschen umständlich sein...


    Falls du bei deinem World-Composition, die Landscape mit Origin-shifting verschoben hast, hast du ein Problem, denn das funktioniert in der UE4 nicht...

    Sollte zwar mal kommen, aber wird wohl nie kommen, da ja die UE5 raus ist, hehe

    https://docs.unrealengine.com/…the%20multiplayer%20games.



    Wollte mich damit eigentlich vor nem Monat auseinandersetzen, dann wurde aber das World-Partition in der UE5 gezeigt und hab es somit bleiben lassen, da das wohl das World-Composition ersetzen soll (wenn ichs richtig verstanden hab).

    https://docs.unrealengine.com/…dFeatures/WorldPartition/


    Delay ist nicht unbedingt die sauberste Lösung für solche Sachen.

    Wenn du noch erklären könntest, wieso das Delay ein Problem ist, wärs auch nicht schlecht ^^

    Ich benutze öfters Delays, hatte nie Probleme damit...

  • Delay stoppt einen Prozess komplett. Wenn man es aus Versehen falsch anwendet, stoppt man eventuell einiges was man gar nicht stoppen möchte, weil halt die ganze Prozedur angehalten wird.


    Ein Timer by Event ist ein eigener Prozess, der halt verzögert ein Event auslöst, ohne das irgendetwas einfach gestoppt wird.


    Sicher hat Delay auch seine Daseinsberechtigung und richtig angewendet ist es auch kein großes Problem. Man sollte es aber mit Vorsicht genießen.

  • Delay stoppt einen Prozess komplett

    Richtig wäre es, wenn du nicht schreiben würdest, dass gestoppt wird, sondern verzögert...

    Ich dachte da gibts irgendwelche besonderen Probleme, von denen ich nichts wusste, das was du schreibst ist doch genau das was es zun soll ^^


    Aber gut, manche Leute sehen eben auch im Englischen ein Problem und einen Übersetzer kennt auch keiner, hehe

  • Richtig wäre es, wenn du nicht schreiben würdest, dass gestoppt wird, sondern verzögert...

    In der Zeit wo der Prozess verzögert wird, wird er aber komplett gestoppt. Nichts geht mehr in der Zeit des Delay.


    Also ist schon richtig wie ich es geschrieben habe.


    Natürlich wird der Prozess auch irgendwann weiter ausgeführt, aber nicht in der Zeit des Delay. Und diesen Effekt will man nicht immer haben.

  • Hallöchen.

    Ja das mit dem Fehlenden Blueprint tut mir leid. Hab ich irgendwie verschlampt.

    Nun ein wenig nach euren Vorschlägen herumgetüftelt und siehe da es funktioniert. Naja fast.


    Einzig und allein das zweite Level wird nicht geladen und siehe da, dank euren Hilfestellungen glaub ich den Fehler gefunden zu haben. Zwei meiner Level haben, wer weiß warum, verschobene Position und damit auch Absolute Position(World origin shifting?) könnte ja damit zusammenhängen. Nun habe ich leider keine Ahnung wie ich die wieder in richtige 0,0,0 Position bekomme.

    Versuche ich es mit Reset Level Position wird das Level irgendwohin gespawnt und bewege ich es wieder an den Ursprungsort, dann habe ich wieder keine 0,0,0 Werte in der absolute Position. Noch dazu lassen sich die Maps nicht wieder an die richtige Stelle verschieben. Gibt es da irgendeinen Trick? Bin für Anregungen dankbar, gleich welcher Art.


    Danke auf jeden Fall für die bisherige Hilfe, ihr habt mich weitergebracht.

  • In der Zeit wo der Prozess verzögert wird, wird er aber komplett gestoppt. Nichts geht mehr in der Zeit des Delay.

    Dann nenn es doch wenigstens pausiert...

    Wenn was gestoppt wird, geht überhaupt nichts weiter ^^


    Gibt es da irgendeinen Trick?

    Keine Ahnung, hab noch nie Levels mit dem "OriginShifting" verschoben...


    Wie wärs mit "WorldComposition" deaktivieren, Level speichern und laden, dann "WorldComposition" wieder aktivieren?

    Müsste eigentlich funktionieren, da dadurch alles resettet werden sollte.


    Sollte das nichts bringen, kannst auch einfach das Persistent-Level neu erstellen, dauert bestimmt weniger lang, als wenn du jetzt noch paar Tage, ne Lösung suchst ^^

  • Es will und will nicht so wie ich will, doch leider kann ich es nicht brechen.

    Das ist das letzte was ich nach euren Anweisungen gemacht habe. Ich bekomme immer die Fehlermeldung, dass die Engine den PlayerStart nicht findet, dabei ist dieser im Mainlevel(Persistent). Auch wenn ich den PlayerStart in das Ground2-Level einfüge, so funktioniert es nicht. Dass ist ein Käse. Zudem lädt mir die Engine zwar das Ground2-Level aber nur als grau-gekachelte Landscape in weiter Ferne. Jedoch weder das Material der Landscape noch die eingefügten Actors. Muss ich die eigens angeben die zu laden?


    Das einzige was funktioniert ist, dass wenn ich aus dem editor im Mainlevel starte und den CustomizableChar als DefaultPawn angebe, er mir den letzten Char den ich einst im CharacterCreator erstellt habe einfügt. Da funktioniert alles einwandfrei.

    Ich kann jedoch nicht den Char als Default PawnClass eingefügt lassen, da er mir ja sonst durch den Boden kracht, sobald ich aus dem CharacterCreator starte, da das Ground2 Level, Auch ohne den ganzen Delays zu langsam lädt. so ein Oberkäse.


    Naja, wird hoffentlich schon werden.

    Schönen Abend noch und alles Gute und viel Erfolg

  • Reine Wortklauberei.

    Gut, dann bin ich hier raus, wenn du es nicht blickst ^^


    MacArmand Du brauchst nicht das Level extra zu laden, wenn World-Composition aktiviert ist, sollte das automatisch geladen werden, aber scheinbar ist da mehr kaputt, versuch einfach das was ich vorher geschrieben hab, wenn das nichts bringt, der allwissende Tomarr weiß bestimmt mehr...


    Mit dem Levelstart, wird wohl einfach die Referenz leer sein, mach ein "GetAllActorsOfClass" mit der Class "Payerstart" und dann dahinter ein "Get (a copy)" dort "0" und es findet den ersten Playerstart, der existiert (falls er existiert).

  • Also mit der Referenz hattest mal wieder Recht, aber er lädt mir das Level trotzdem erst, wenn der Player schon da ist und dann fällt er durch den Boden und über mir entsteht langsam das Level. Echt blöd sowas.


    Hab das nun auch mit dem Set timer by event probiert, genau dasselbe Problem. er lädt erst gar nix, dann den Charakter, der gleichmal zu fallen anfängt. Nach ein paar Meter Freiflug ein neben angefügtes Level und schließlich wenn ich längsts weit unten bin, dann das eigentliche Level. Ich sehe es schön über mir entstehen.

  • Wofür steht denn das erste Delay? Soll das Load Level Stream Object Zeitverzögert geladen werden? Gibt es dafür einen Grund?


    Das zweite Delay würde ich auf jeden Fall mal per "Set Timer by Event" versuchen, und dann mit deinem Spawnplayer verknüpfen.


    Aber was so deine anderen Fehler angeht, hast du vielleicht mal ein paar Dateien im Windowsexplorer verschoben oder gelöscht? Oder ist dir vielleicht die Engine, bzw. der Editor mal abgestürzt als du deine Contentstruktur geändert hast oder so?