Hallo Leute,
zunächst einmal wollte ich sagen, dass ich es toll finde, dass sich hier mittlerweile eine große deutsche Community gebildet hat. Ganz zu Anfang, also vor ein paar Jahren, hatte ich mal sowas auf Skype gemacht. Ich glaube sogar, dass es den Channel sogar noch gibt. Seit langer Zeit bin ich nun mal wieder zu UE4 gewechselt und ich habe festgestellt, dass sich doch einiges geändert hat. Wahrscheinlich hat das aber nichts mit meinem Problem zu tun
Ich suche momentan einen Denkanstoß bzw. auch einen Best-Practice zu folgender Problematik:
Ich arbeite gerade an einem Inventarsystem, welches eigentlich ausschließlich für den Multiplayer gedacht ist. Momentan ist alles noch relativ simpel aufgebaut und funktioniert auch im Singleplayer. Nun möchte ich aber den Schritt in Richtung Replizierung wagen. Hier die Eckdaten:
- Ich habe eine Variable "Item Reference" vom Typ "Master Item" (Replizierter Actor)
- Drücke ich nun auf beispielsweise die Taste "F", führe ich ein custom event auf dem Server aus.
Hierbei führt der Server einen Linetrace zwischen der Kamera(Server) und einem Vector in Blickrichtung aus. -
In der Linetrace-Funktion wird nun die Item Referenz gesetzt:
Das funktioniert soweit ganz gut. - Daraufhin wird auf dem Server die "AddItemToInventory"-Funktion aufgerufen. DIe prüft das Gwicht und enthält etwas weitere Logik. Am Ende dieser Funktion, wird dann das Item zu einem Array hinzugefügt und daraufhin Actor destroyed. Das Array ist replicated.
Die zuvor genannten Punkte funktionieren soweit. Nun ergibt sich aber bei mir folgende Frage. Ich möchte den LineTrace z.B. auf den Client auslagern und diesen nicht vom Server erledigen lassen. Setze ich nun aber auf dem Client die Itemreferenz, kann der Server damit nichts anfangen, weil diese ja nur auf dem Client existiert. Denke ich da richtig? Ich hatte bereits versucht den LineTrace auf dem Client auszuführen und die Variable mit in das Custom Event zu geben, was aber nicht funktioniert hat. Bewege ich mich da auf dem Holzweg? Leider bin ich über den Hergang ziemlich verwirrt, wie sich sowas in der Regel umsetzen lässt.
Wie würdet ihr das lösen?
Vielen vielen Dank für eure Zeit.
PS: Bei Bedarf kann ich gerne ein kleines Video anfertigen.
MFG 3HMonkey