Immortius:
But there is no point in faking checksum answers if the winning condition is somehow dependent on these checksums. It would be as good as writing your own singleplayer-mod that displays "CONGRATS YOU WON THE GAME" as soon as it is started.
Cervator: Checks must not be that ressource intensive:
For the design of a multiplayer mode we have to protect any property that is essential for gameplay from cheating and your right, it will be a lot of data. So to check all these values needs a rather big amount of memory (to keep the whole world on the checking side) or a huge amount of cpu to recalculate all the checked stuff.
Instead I propose to check only randomly for random properties in random places. This way the client always has the risk of being caught while cheating but the checking-side doesn't have all the cpu-/memory-Load. Like in real life, you would be able to cheat but at a certain risk of being caught. Depending on the consequences (ban from server, ban from lobby) cheaters will be very rare. One real huge advantage of doing these performance saving random checks on the clients is we wouldn't need to touch the server when modding the game. The server would have to decide on a random base which values are checked (and keep it secret).
A) We have to prevent the following things to be manipulated by cheating:
1. inventory
2. medium and large changes in landscape (very local changes not exceeding 2 continous blocks don't interest us)
3. please complete...
B) But we also have to hide these 'secrets' from ennemy players:
1. inventory
2. not visible, continous changes in landscape (buildings, caves, ...)
3. please complete...
Now to be able to validate game logic while hiding secrets, the only way would be to make the "information to validate" a secret of multiple other players but in a way that every player can validate his part of information. Additionally the server could anonymize the datasource and only map-back the playername if it was cought cheating. This way the server would only have to distribute various anonymized cheating-validation-packages and wouldn't need any validation logic (and thus no installed mods).
For splitting up a player's information we could rely on some kind of conserved-points system: (Or does anyone have another idea)
Basically every game can be reduced in the following logic: The world contains some items (and blocks) of some gameplay-value each (ie. raw stone is of much lower value than a pickaxe) and the player has some of these items/blocks. During the game the player is able to convert some items to other items by crafting etc. and use them to win the game (similar to conservation of energy in physics). Now our "dumb server" could request them from one player and split these values between other players for validation at a ratio only known to the server. He could even give a part of it back to the player it requested it from.
Another idea would be to validate some game logic that is so old that it doesn't have any effects on gameplay (at latest at the end of the game). So some information-unveilling checks could be made at the end of the game. (A player could sabotage the game but not win by cheating)
Would that have potential to work? (I didn't have time so far to think it to an end)