Cheating

People have been playing games by mail for many years, probably centuries. In most cases, the games they are playing were originally meant to be played face to face, and the rules of those games evolved accordingly. Playing one of these games at a distance makes some of these rules difficult or impossible to enforce.

There has been quite a bit of discussion, at various times and in various forums, about how to prevent cheating in electronic games. The constant stream of complaints, accusations, counter-accusations, and general ill will surrounding other on-line backgammon facilities made the rec.games.backgammon newsgroup in my opinion essentially useless. (Perhaps this furor has died down by now. I really haven't gone back to check. I do recommend retrieving the FAQ, however.)

There are, of course, many different reasons to play a game. Some play for the acclaim, some for money, and some like the feeling of domination that victory brings. Frankly, all of those people bug the hell out of me. ldb was written to be played for the pleasure of the game, not as the means to some other end. As such, there is no protection from cheating, nor most likely will there ever be. Using only e-mail, it is very clumsy to implement a secure dice roller, because the player must decide not to double before he may roll. Knowing what your roll would be before deciding to double is a great advantage, and any security scheme that does not prevent that is not really secure. The flurry of mail messages that would be required to use a "trusted" third party dice roller would slow the game down so much as to render it unplayable. Making a direct connection, instead of using e-mail, would make this approach practical, but only for those with direct network connections. Many people do not have this kind of service, however, and would be unable to play ldb with such a restriction. This concern over cheating is, to me, only relevant to those using the game for some other purpose, such as glory or standings. For those of us who play for the sake of the game itself, and the people we get to meet, cheating is not a concern since there is nothing at stake anyhow. Besides, over time it is easy to tell the difference between someone who beats you by superior strategy and positioning, and someone who simply seems to get "lucky rolls". That being said, however, please don't assume that anyone who gets three double-6's in a row to win the game is cheating. I've seen it happen, and if you've played long enough you probably have too. I don't suggest confronting people in any case, because there's no way to prove it, and besides they are more than adequately punished by the knowledge that they couldn't win legitimately, and are therefore losers.

In previous versions of ldb, one of the terms of the copyright was that cheaters were denied permission to use ldb. This seemed cute at the time, but was entirely unenforceable. Also, it's silly to think that someone would cheat at a friendly game, but would be unwilling to violate a copyright. If they'd cheat you, they'd cheat me too.

Modifying ldb to allow you to cheat is easy. In fact, I deliberately made it easy so that there would be no satisfaction in figuring out how to do it, and besides making it hard is practically impossible when you distribute source code. Anyone could do it who's read the first three chapters of one the billions of C books that are out there. Nobody will be impressed if you do it, they will just pity you. You probably only did it because you're unable to attract members of the opposite sex, and all you do is sit at home and watch reruns of "Starsky and Hutch". You might try bathing... just a suggestion.

So, what is considered cheating? The following are some of the obvious possibilities:

  1. Replacing or modifying the dice roller such that you have, or could have, advance knowledge of the rolls that it will generate.
  2. Modifying the data file to insert rolls other than those generated by the dice roller module.
  3. Erasing the rolls you were given so as to cause new rolls to be generated.
  4. Reseeding the random number generator in such a way that future rolls can be predicted.
  5. . Modifying ldb to allow you to double after seeing what your roll would be.
  6. Modifying and redistributing ldb with a defective dice roller that will generate unfavorable rolls for your opponents. Beware of the provisions in the GPL about modifying ldb. See the file COPYING.
  7. Deleting a game, or refusing to continue playing it, because you don't believe you can win.

Some things I don't consider cheating:

  1. Replacing the random number generator with a different one. As long as it has reasonably uniform distribution, there doesn't seem to be any harm in that.
  2. Testing or maintenance activities. If you're trying to find a bug in ldb, you might need to synthesize the rolls that you think will expose the bug. Make sure your opponent knows you are doing this.
  3. Fixing a damaged game. If ldb crashes, or your file is accidentally lost, you might lose the roll that ldb generated for you, or the move you made. If you remember what it was, use a text editor to plug it into .ldbdata. Otherwise, you have no choice but to generate a new roll and continue playing the game.

Ldb should never ever ever NEVER be used to gamble for anything more than maybe a beer, and even then only if you can afford to lose it, and if it's legal wherever you live. Ldb does not protect you from cheaters in any way, and ldb comes with NO WARRANTY. If you don't believe this, read the file COPYING, which is a verbatim copy of the GNU General Public License; these are the only terms under which you can legally use ldb. The GNU people take their copyrights very seriously, and when they say there is NO WARRANTY, they do NOT mean, well, most people don't get a warranty, but for someone as special as YOU, we'll make an exception. You are ON YOUR OWN.