Hello everyone, I'm making a turn based game and right now i'm approaching to multiplayer side, let's say 1v1 for now because of that i'm here to ask advice in order to make a better decision on what to do since it's basically my first time. correct me if i'm saying something wrong please. Game is turn based with a customizable team of heroes, and each hero has different abilities, effects and so on etc etc. what i thought was this: Solution 1 - All the calculations are made on the client side, like: turn speed, attacks, damages, and so on, the only thing that client is sending to server is the ability he chose and the target selected, then server replies with an array of Randoms to actually make the actions for both players trigger the same chances and so on. Using the same randoms makes every calculation the same for both clients. Pro - Fast, low server cpu usage? Cons - easily exploitable, if game asyncs for any reason there is no saved state on server, except for the other player. Solution 2 - Client does not calculate anything (except maybe turn meters, and start / end turn buffs damages) but it sends only target and skill selected, then server calculates what the hero does and returns a list of actions with all the events, example attack, damage, add buff, and so on. Client recieves that and basically replicates the animations with just those values that got from the server. So basically after every turn both clients should have done the same skill with same effects and they should be in sync with eachother. Pro - Less exploitable since its server driven, less async and possibility to resync with server's copy Cons - high overload for server? it has to host a copy of every game and calculate every single attack if you have any idea or feedback please let me know. Thanks.