Note: If this is ever implemented it would be some time in the far off future. The idea is provided as a fundament for discussion and food for thought.
To prevent cheating construct a hash of the current class (implementation) and the state of the object to be synchronised.
Two clients enjoying a match can verify that they are seeing the same state and using the same functionality for modifying the board, determining who wins etc. by comparing hashes with each other. As long as the hashes are the same the clients can agree that they are playing the same game by the same rules. Should the hashes mismatch a recovery operation could be tried (if for example a tcp packet is slow in propagating a state change).
After some arbitrary timeout it is determined that the game is in an inconsistent state and one of the clients is using modified software. But which one is cheating? This is determined by a peer-to-peer majority vote by the collection of online players.
Note: If this is ever implemented it would be some time in the far off future. The idea is provided as a fundament for discussion and food for thought.
To prevent cheating construct a hash of the current class (implementation) and the state of the object to be synchronised.
Two clients enjoying a match can verify that they are seeing the same state and using the same functionality for modifying the board, determining who wins etc. by comparing hashes with each other. As long as the hashes are the same the clients can agree that they are playing the same game by the same rules. Should the hashes mismatch a recovery operation could be tried (if for example a tcp packet is slow in propagating a state change).
After some arbitrary timeout it is determined that the game is in an inconsistent state and one of the clients is using modified software. But which one is cheating? This is determined by a peer-to-peer majority vote by the collection of online players.
References: http://stackoverflow.com/questions/8867766/scala-dynamic-object-class-loading
To be elaborated on.