Replication Multiplayer

  • Hallo,

    ich bin Anfänger und bräuchte dringend eure Hilfe.

    Ich habe einen Blueprint mit einem Stuhl und einer Kollisionsbox. Wenn ein Spieler in die Box hinein läuft soll ein Menü nur ihm angezeigt werden, wenn er die Box wieder verlässt soll das Menü verschwinden.

    Im Einzelspieler Modus geht das auch alles super.

    Im Multiplayermodus läuft der Client in die Box das Menü wird auch nur auf dem Client angezeigt. Aber egal was oder wo ich was einstelle beim Verlassen der Box bleibt das Menü bestehen.

    Läuft der Server in die Box wird auch nur ihm das Menü angezeigt, verlässt er die Box verschwindet das Menü, also genau so wie ich es haben möchte.

    Wie bekomme ich das hin das das Menü auch wieder verschwindet wenn der Client die Box verlässt.

    Setze ich alle auf no replication dann wir bei jedem das Menü angezeigt.


    Über Hilfe wäre ich sehr dankbar.

    Liebe Grüße

  • Wenn du das Widget erstellst was du im nachhinein gezielt auch wieder entfernen möchtest, musst du das Widget in einer Variable speichern.

    Wenn du dieses Widget dann vom Bildschirm entfernen willst, nimmst du die Variable und schickst es zum = Remove from Parent

    !!! Wichtig zu beachten ist, wenn du ein Widget auf einen Client speicherst, hat der Server nicht das Widget in der Variable !!!


    Am besten währe wenn du alles mal im Singleplayer ausprobiert hast.

    Multiplayer würde ich dir erst empfehlen wenn du die Grundfunktionen von UE4 gelernt hast.

  • Hallo Serox,

    ich danke dir für deine Antwort.

    Ich hatte auch schon eine Variable gemacht hat aber auch nicht funktioniert. Im Singelplayer funktioniert das alles.

    Wenn der Server nicht das Widget in der Variablen hat; scheint das ja im Moment mein Problem zu sein. Jedoch bleibt die Frage weiterhin bestehen, wie bekomme ich das hin das dieses Widget auch wieder gelöscht wird.

    Wie gesagt ich bin Anfänger jedoch ein Sigelplayerspiel ist für mich uninteressant. Und wer es im Multiplayer lernt und sein Hobby frönt der kann es nachher auch im Singelplayer.


    Gruß, bleib gesund und wenn möglich zuhause.

  • Das erste, was mir auffällt, ist, du benutzt Event_0, um Event_1 zu starten. Warum machst du das nicht gleich in Event_0? Also weg damit, den ganzen Strang gleich an Event_0 packen. Ein Plus für Übersicht und Sauberkeit.


    Aber das ist ja erstmal nur Schönheit.


    Das zweite ist, mach für jedes Event einen Strang. Weil, für Event_3 greifst du auf einen Rückgabewert von Event_1 zurück. Dieser Rückgabewert muss aber gar nicht vorhanden sein, weil dieser kommt nur zustande in dem Moment wo Event_1 ausgelöst wird, nicht aber, wenn Event_3 ausgelöst wird.


    Das zweite BP ist leider zu klein als das ich es durchgehen könnte.

  • Hallo Tomarr,

    super das du geantwortet hast. Ich habe das nun so lösen können.

    Wenn ich das ServerStuhlmenü anzeigen direkt mache also create widgent …. Erscheint es überall.

    Wenn ich nur das client Stuhlmenü anzeigen mache erscheint es nur auf den client wird dann aber nicht mehr gelöscht.

    Jetzt führt der Server das clientmenü (Run on Server) aus und das clientmenü wird als (Run on owning Client) ausgeführt.

    Analog dazu zum löschen.

    Anders oder direkt mit Run on owning Client , dann konnte ich es nicht löschen, Run on server wir es immer auf beiden angezeigt. Gleiches bei no Replicated.


    Aber ich habe noch ein anders Problem, naja eigentlich habe ich ständig irgendwelche Probleme, aber eins nach dem anderen.

    Ich habe Headrotation mit der Kamera eingebaut. Funktioniert auch super im Singleplayer.

    Im Multiplayer aber wenn ich mit der Maus rechts links schaue bewegt sich der Kopf beim Client mit und der Server sieht das auch. Alles super. Wenn der Server hin und her bewegt geht das beim Server der Client sieht die Bewegung aber nicht. Wo habe ich wiedermal was falsch gemacht?

    Über Hilfe würde ich mich sehr freuen,


    Hir wie es nun funktioniert. Mag vielleicht nicht optimal sein, aber es läuft so wie ich es will.

    D



    Hier wie ich die Head_Camera erstellt habe.

    Die HeadRotations Variable habe ich auf None replication. Wenn ich die auf Replicaed oder RepNotify setze ändert sich nichts an dem Problem. Wie bekomme ich das hin das der Client auch die Bewegungen des Servers sieht?


    Gruß