|Comments on Sunday 21 March 2004:|
|Pondering mechanisms against cheating for peer-to-peer network games that keep score on a lobby server. I'm pretty satisfied with the anti-cheating stuff I've come up with for the actual peer-to-peer part, but I'm also concerned with the end-of-game situation, where the players' computers report the result to the server.|
Obviously the ideal situation is that one computer reports "I won" and the other computer reports "I lost" but what should be done in the situations where this isn't the case?
My thought is that on occasions where the reportage differs (ie. both computers claim to win, because one of the players is falsifying their return message), this is flagged in the records of both players.
On occasions where one computer reports victory and the other doesn't report at all (which is what will happen if the opponent disconnects), the non-reporting player is asked what happened (from a list) the next time they log in - if they claim it was a disconnect forced by the opponent, it's flagged as a disputed result (though the victor does keep the point). If they don't log in again for some period of time, the result is flagged as a loss.
If you are challenged to a game by any opponent with whom you have a disputed result, or from an IP address with whom you have a disputed result, you are warned and given the opportunity to reject the game.
Similarly, if you are challenged to a game by someone who has a suspicious ratio of disputed results, you are warned and given the opportunity to reject the game.
What flaws are there in this system, other than the possible "gang of opponents report disputed results against one person" thing? (Which, at least, also harms the reputation of each of them, so isn't something that could happen a lot.)
On a related note, I think having a 'report card' after every game would be a good thing for the "community spirit" of the game. If you're asked at the end of the game to rate your opponent on a scale of "good sport" to "obnoxious fucktard", and if people can set a mark for a level of obnoxiousness they're willing to tolerate (the combined rating for any player being made completely public, and ratings being normalised against intolerance-tolerance bias), I think that would very much encourage people to be more polite. Which can only be a good thing, u noob fux0r. [08:32]
|What amounts of time, though? You never gave anything solid.|
And you didn't leave any room for computer errors - my friend Andrew's recently disconnected itself from the Internet for a solid month (leaving him in a puddle of tears, sobbing limply). What if his opponent had forced his disconnect? His opponent would have kept the point and he wouldn't have had the chance to comment on the loss.
Also, what defines a 'suspicious' ratio of disputed results? Also, you could just claim everything's forced by the opponent because you don't want to admit you lost, and that person would have incredible amounts of disputed results.
The obnoxiousity scale is awesome. However, if you rate someone badly and they are, as you said, an obnoxious fucktard, they'd get all of their friends to rank you as an equally obnoxious fucktard, or they'd go and make dozens of accounts and all the accounts would rank you badly.
|Mm, I deliberately didn't give anything solid with regards to amounts of time and suspicious ratios - they'd have to be determined experimentally.|
If you can't reconnect, it'll be one point that the opponent gets that they don't really deserve, which is more fair than denying them the point that they *may* deserve just because their opponent doesn't bother to return. The idea isn't to have an exact record of everything, but rather for the overall picture to show whether it's likely you can trust someone or not.
The obnoxiousity thing wouldn't be that simple to exploit, since you'd have to actually play a game against someone before you could rate them at all - creating dozens of accounts would only work if you could do them each from a different IP address, and you'd still have to play a game against the person with each of them. Getting lots of friends to rank them badly is more feasibly, but again, they'll all have to play a game against the person first, and all their ranks would be pushed down too.
To further mitigate against that, the ranks could be double-normalised - anyone who only ranks obnoxious will have their ratings completely ignored. Anyone who *is consistently ranked obnoxious* will have their ratings rendered less important, too. This way clans of obnoxiousness wouldn't have so much voting power.
As for "you could just claim everything's forced by the opponent" - you could only do that once for each opponent, so that would leave each of your opponents with a slight black mark, and you with 30 disputed results, after which point you won't be able to find an opponent any more because you'll be flagged as "boy who cried wolf".
|It's worked pretty good for Ebay, so far.|
|Plus, just to clarify, you only get the option of reporting a result as forced if you disconnected during the game - normal operation is that your computer will automatically report victories and losses, and there won't even be an option for a dispute. That only comes up when someone's connection breaks or when someone is cheating.|
|Sounds solid enough; the only stumbling block I can see is a psychological one on the part of the non-cheater (or both parties, in the case of server fart) - the "It's not F-ing disputed, I won!" reaction. People tend to respond badly to black marks they (think they) don't deserve.|
BTW, I would play a game that allowed me to call the other player an obnoxious fucktard. But I agree that naming it something so appealing to call the guy that just beat your pants off is going to skew the results.
|A possible exploitation of this system:|
Given that there will be occaisional waves of obnoxious fucktards, as well as server farts or accidental disconnects, it's not unreasonable to assume that there will be a slow rise over time in the 'background count' of the game. Regular honest players can be reasonably expected to have collected a small number of black marks.
A clever and unscrupulous player will disconnect strategically. Not often, and never if it looks like he'll win. But the occaisonal "oops" against an evenly matched or better player will keep him higher on the ladder than he ought, by skill alone.
Minor quibble though, really.
|Where exactly did you get the word 'fucktard?' I think I read it in an online comic once...|
|Disconnecting wouldn't make your results any better - it counts as either a loss or a disputed loss, but a loss either way. The reason for the dispute mechanism is to prevent WinNuke and co being used to force your *opponent* to disconnect so as to get the victory.|
Fucktard was made up by a friend of mine, as a merging of fuckhead and either retard or bastard, left deliberately ambiguous.
|No, it will never make your results better, but it will make someone else up the ladder look worse, which is the same thing, just less efficient.|
|Wouldn't cost them any points either though - you get the victory if your opponent disconnects, no matter what. You always get the point, you just *can* also get a reputation demerit, enough of which make you irrelevant. One person giving you a reputation demerit (in addition to a point) won't do anything, and will harm them as much as it will harm you. More, if they keep doing it.|
|Not sure about Fucktard's origins. It's used by friends of mine, who have no connection to you, or friends of yours.|
|Could be parallel evolution. Could just be a swift-spreading word from that friend. It's not like it's a word that wouldn't all but form itself.|
|Fucktard has been in common usage around here for a very long time.|
|Fair enough. I misunderstood; I assumed (yeah, I know) that a constested result helped no one; re-reading, I see it does count as a victory if the theoretical disconnectee logs back in within time frame X.|
I also am used to a ladder style where it is not straight wins that count for you, but your win/lose ratio that determines placement.
|oh yeah on a side note if the game server is broadcasting to me my opponent's IP what prevents me from accessing him and cutting his connection? or even more fun proxy spoofing him to sabotage the game..... Actually this seems rather alot of work to care about for any casual game but if things are being tracked you eventually get an evil minded homer.|
|Oops, accidentally deleted Maxor's previous comment. It was complaining about logging wins and losses by IP, anyway, which misses the point - wins and losses *aren't* logged by IP, they're logged by login. *Disputed* wins and losses are *additionally* logged by IP, to prevent people using lots of accounts to cheat against any one opponent. The IP won't be generally logged as bad, but rather stored just for the one opponent as an address not to play against again.|
Most game servers give out the opponent's IP - the alternative is to use a huge amount of bandwidth and processing power on the server, which is generally not a good idea.
The whole point of the disputed wins and losses mechanism discussed is to deal with spoofing and connection cutting. There is nothing to stop you doing it, but with the disputing wins and losses mechanism your account will be flagged as an utter cheat if you do it a few times, and nobody will play against you. That's the whole point of what's being discussed.
|It was partially noting problems with logging wins and losses by IP...... I don't recall saying anything derogatory which would tend not to make it a complaint.|
|Either way, not relevant since I was never intending to do that.|