>>348878279
An example, because explaining it makes it easier for me to understand it. Thank you for listening:
>game is turn-based
>turn moves from player to player
>on player action, player sends serialization request, base owner deserializes it, checks if player was in the middle of his turn to validate that his request is allowed, and then takes away "turn" from player who just took action and moves turn to next player
>next player gets his turn, moves, so on
>all good
>players gets laggy, and it's his turn
>moves
>deserialization happens on base side, base owner moves turn to next player
>but laggy player didn't receive deserialization that takes turn away from him
>he takes action again
>master receives deserialization request with old info, updates their version of laggy player terminal with old info where he still had a turn
>now there are two players who are allowed to take a turn on master's side
>player just either skipped other player's turn, or game shat itself spectacularly in some other way because this wasn't really an expected situation

And moving info on player's turn to base (which is very reasonable and i already changed it) only helps slightly with the problem, because it could happen that base object deserialization lagged instead of terminal deserialization. At this point i more or less know what i have to do, i have to add variable with some server time info (or any random value) to both base and terminals, and then have user perform some known and reproducable operation on it to check if it was performed on base/server side and reject request if it's not equal to whatever happened in latest change (base owner always knows it cause he generated it).

>>348878624
Eeh, i love to think this way but i think this one's on me. I can see the solution, plus prefab pretty much worked as long as players had fast internet, too, so i think basic validation is going to solve it. It's just that my code wasn't written with that in mind.