[preventing cheating through variable storage]
Correct me if I am wrong, but it sounds like many of the modifications and much of the understanding that this community has of Outpost 2 would be made impossible or at least very difficult by those kind of anti-cheating measures.
I just keep thinking of some forum community far in the future cursing us for making a game that is virtually impossible to reverse engineer after its creators abandon it (and rest assured it will happen someday, if not by choice then by old age and death :heh: ).
At any rate, I disagree almost on principle with the idea of making the inner workings of something intentionally difficult to understand and interpret, because while it may discourage those who want to do harm with it (cheaters, pirates) it will also discourage to an equal degree the innocent who merely wish to understand/mod/learn from the workings of something they enjoy.
[Wild and all but baseless speculation]Instead of trying to prevent hackers from figuring out how to cheat, what if instead there were some way for OP3 to somehow check the consistency of an enemy's actions.
Some things would be simple, for example if a lynx is fired on and the damage done to it is any number that cannot be produced by standard weapons/upgrades, then the opponent is cheating. If the cost of the opponent vehicles/structures totals more than the opponent has mined, then he is cheating. If he has Weapon6 in less than the minimum time Weapon6 should take to research, if any of his vehicles traverse a given distance at more than their maximum speed, etc. Basically a system for each computer to see if the other players are advancing within the rules. Ideally there are a finite number of ways a player can gain an advantage in an RTS game, and if you check for each of them, you effectively prevent any and all cheating.
My ideal situation would be if some type of anti-cheating package like this existed as an independent module of the program, one that a player could disable through a simple command line parameter if they wanted to play a non-standard game, or for some reason allow their opponents to cheat. Making it an independent module would also allow it to be updated quickly and easily if someone found a way to slip through it.
The trick is that there is nothing preventing a hacker from disabling this anti-cheat device on their own computer, or making any changes to the program they wish. Instead fair play would be ensured by the machines belonging to the
non-cheaters.
I think ultimately that ideal is the only way to go, whether it takes the form of a consistency checker or something else. Realistically if you give a hacker total access to something (i.e. letting them install it on their machine) then they will find a way to hack it. The best way to prevent it I think, would be to give their opponents the job of ensuring fair play.
The idea is that no matter what a hacker does, he cannot realistically disable the consistency checking on another computer being used by someone who doesn't want him to cheat.
[/wild baseless speculation]No clue if anything remotely resembling that is possible or feasible for reasons of performance, coding difficulty, or failure of core assumptions, but it seems to me to be an option worth considering.