Client Relayed Multiplayer : best way to validate match winner?


Working on my first multiplayer game using Nakama so not sure what are the best or at least good practices. The game is a 1v1 turned based game which is not an authoritative game so it will use Client Relayed Multiplayer approach. I was wondering if it makes sense to compute who is the winner server side by calling a remote method (RPC) which could process match inputs and other game datas to (try) check if everything looks legitimate and if so decide who is the winner and let players (both) who is the winner (don’t know if a server method called by a client can then call a method on both clients).

To go further, would it be good practice to have the server method write the match result in the project database ?


Hello @SebSeb,

If you write an RPC to somehow check if the winner is legit, the clients can fake the inputs to make it look like it is. Maybe there are obvious fake inputs you can catch but it comes down to how sophisticated the checks are vs how sophisticated the attacker is - you need to figure out if the effort is worth it, if it’ll actually prevent cheating to an extend or if it can be easily bypassed.

You can notify the clients with the results from the server RPC using in-app notifications.

Storing match results is also entirely up to your game design, it can be useful for displaying historical match results or for inspection to look for cheaters, but since the results of matches are client-driven these could potentially be faked too.

Hope this helps.