Ausführen verschiedener Funktionen/Events/Aktionen bei Overlap

  • Hallo Leute,


    könnt ihr mir einen Denkanstoß geben?: Ich habe einen Actor, ein "Tor" durch das ich mich bewegen kann und ein OverlapEvent triggert.

    Diesen Actor "Tor" habe ich in einen anderen Actor geladen (als Child). Ich könnte jetzt im Parent natürlich die Funktion festschreiben, welche bei overlap ausgeführt werden soll. Da ich aber das "Tor" gerne für verschiedenste Sachen verwenden möchte und nicht für jede Aktion einen neuen Actor (Parent) anlegen möchte, brauche ich eine Art Liste an möglichen Aktionen und etwas was angibt, welche Aktion ausgeführt werden soll.


    Als Beispiel würde ich gern an einer Stelle einfach einen Zähler hochschalten, wie bei einem Hinderniskurs oder sowas. Bei einer anderen Anwendung möchte ich, dass der Player automatisch zu einer Position läuft/fliegt. Wieder bei einer anderen vllt ein Level geladen wird etc... Hier möchte ich die Erweiterbarkeit erhalten.


    Wie würdet ihr sowas umsetzen?


    PS: Gibt es vllt eine Art FunctionsBilbliothek die ich an verschiedenen Stellen (Actors) einbinden kann und aufrufen?

    • Offizieller Beitrag

    Du möchtest beispielsweise ein Tor, wie ein Stargate, erstellen, durch das man hindurchgehen kann und verschiedene Dinge passieren.

    1. Man reist zu einem anderen Planeten (Levelwechsel).
    2. Es wird eine Zahl in einem Zähler angezeigt, die anzeigt, wie oft man bereits durch dieses Tor gegangen ist.

    Vielleicht kann man auch verschiedene Optionen wählen, wenn man sich im Bereich des Tores befindet?

    Entweder du bestimmst das per Zufall und setzt zum Beispiel einen Boolean auf "True", wenn der Zufallsgenerator entschieden hat (dann ist Reisen möglich).

    Oder du setzt andere Booleans auf "True", wenn zum Beispiel im Torraum der richtige Code eingegeben wurde und man jetzt zu einem bestimmten Planeten reisen kann.


    Und noch etwas, weil du vom "Level Laden" gesprochen hast: Schau dir mal das Levelstreaming an. Als Spieler versteht man unter "Level Laden" etwas anderes als das, was technisch gesehen passiert.

    Vergiss bitte kurz alles, was du über das Level aus Spielen kennst.

    In Unreal ist das "persistent Level" so etwas wie der Weltraum - ein leerer Raum ohne irgendetwas. Das persistent Level wird auch als das Hauptlevel bezeichnet.

    Das Spiel startet, das Hauptlevel wird geladen. In diesem Level befindet sich nichts, und deshalb wird auch nichts geladen. Es ist also wirklich ein leerer Raum ohne irgend etwas.

    Nun gibt es Sublevel. Ein Sublevel könnte zum Beispiel das Menü sein. Du lädst das Menü in das persistent Level.

    Als Spieler kannst du dort Dinge tun, zum Beispiel das Spiel starten.

    Du wechselst vom Menü weg und lädst zum Beispiel den Torraum.

    Wenn du zu einem anderen Planeten reist, wird der Torraum ausgeblendet und der andere Planet eingeblendet.

    Du kannst dir die Levels also wie ein ineinanderverschachteltes Universum vorstellen.

    Der Vorteil dabei ist, dass du im Hintergrund während des Spielens Levels vorladen und sie dann schlagartig anzeigen kannst. Du kannst sie speichern, nur unsichtbar machen oder sie komplett aus dem Speicher entfernen, um Platz für neue Dinge zu schaffen.

    Die Struktur wäre: Du hast ein einziges leeres persistent Level und alles, was in deinem Spiel passiert, ist ein Sublevel.


    Das Menü ist ein Sublevel

    Der Torraum ist ein Sublevel

    Jeder Planetet ist ein eigenes Sublevel usw


    Jedes Sublevel wird dann je nach Bedarf ins MainLevel geladen.


    Dass nur so als Gedanke. Du musst also nicht immer ein Levelwechsel machen so wie du vielleicht von Fallout4 oder so kennst.

    Du hast viel mehr Möglichkeiten weil du dinge Onthefly ein und ausblenden kannst.

  • Danke für deine Anwort Sleepy

    Das Levelstreaming hatten wir schonmal in einem anderen Beitrag/Frage von mir angesprochen. Auf jedenfall ein Thema welches interessant ist und sicher tolle Möglichkeiten eröffnet. Werde ich mich sicher noch damit beschäftigen. Derzeit bin ich aber noch überhaupt nicht an dem Punkt, an dem ich anfange die Welt zu bauen bzw die "Level" aufbaue welche ins fertige Spiel kommen.


    Aktuell baue ich an den Spielmechaniken und alles was in Richtung Level geht, dient nur dem testen dieser.




    Zu dem "Tor" und Beitragsthema:

    Was es dann wirklich für Funktionen sind die beim Overlap gefeuert werden ist erstmal nebensächlich. Es geht darum, dass ich die Overlapfunktion an den verschiedenen Stellen, wenn ich das "Tor" verwende überschreiben kann. Möchte einfach nicht für jede Funktion einen neuen "Tor"-Actor mit eigener Overlapfunktion erstellen.