So quick rundown on my Blueprint setup. I have a board game with 2 clients, 2 game pieces tied to each client and tiles for the piece’s to move to after you roll 3 dice and select what dice number you want. I roll the 3 dice on client 1 and select 1 of the 3 dice (lets say I select 5). So my game piece should move 5 spaces. This logic works but only on client 1, it does not show on client 2.
My Logic Flow goes from selecting dice number. It sends the dice number selected to the game piece so it knows how far to move. The game piece moves forward 1 tile and sends a line trace down to ask the tile it is currently on where it is in the world and where the next tile is (2 vectors are sent back via BPI). I am then lerping those 2 vectors and setting actor location with it.
All Vars are set to replicate, im setting my vectors before Lerping them in the set actor location. Everything works on client 1 the way it should if i just have multicast node. If i try to tell server to multicast, nothing happens.
rep vars (current and target) are non-blocking replications.
it’s not warrantied when or if they get replicated. or in which order.
i’d pass those variables as parameters to the mc.
though personally i would architect the structure differently.
local player 1 triggers dice rolling > calls server to roll dices rpc > server informs LP1 of results via rpc
lp1 chooses dice > calls server rpc
server decides to move the actor and moves the actor on the server
actor has the appropriate replication settings so that the transform is replicated properly.
though your version probably avoids having to replicate the animation of the position (as it will animate locally), it might be harder to maintain if you add other features later. and it seems already hard to maintain as you run into these kind of bugs.
the fact that you are keeping a bunch of variables cloned between server and all clients make me think the option i suggested is preferable.