Cheating

From OdaWiki

Cheating is the use of an unfair advantage by various means in competition to do better than other players. The Odamex client and WAD files may be modified, and some players choose to modify them to cheat. Our community is against cheating and takes active measures to prevent, detect and eliminate cheats.

Types of Cheats

Wallhack

This is a modification of the client for a visual advantage, most commonly to be granted the ability to see another player through a wall to know where he or she is located most of the time.

Speedhack

This is often achieved by a stand-alone process that changes one's speed in order to do things that are normally not possible, like moving faster than other players. There are many ways to do this, almost all of them change the timing of the client's outgoing data packets.

Aimbot

This is a common cheat that is often produced by modifying the client and that uses automatic aiming algorithms in order to attain superior aim.

Exploit

An engine exploit may in rare cases be used to cheat.

Rejected solutions

Closing the source

Security through obscurity leads to both insecurity and obscurity. This:

  • Stagnates development
  • Reduces number of eyes checking the code for bugs
  • Encourages binary cheat distribution
  • Has been shown to fail countless times
  • Limits the target platforms

An open source project under a viral license forces source code to be made available of any derived works (including cheats).

Blacklisting

Some have proposed banning all cheaters. This is a bad idea because:

  • A ban can only lock out a computer address, not the individual
  • Long ban lists require much storage and maintenance
  • If used sparingly, some innocent players would also be banned by mistake
  • Reduces the scope for testing countermeasures

However, in specific cases, bans remain a useful deterrent.

Whitelisting

A global login system was proposed in order to enforce nicknames. This would, in theory, cut down on the number of potential spoofing and DDoS problems by only accepting connections from a list of signed-up members. It would also make user-tracking easier. However it has not been implemented because:

  • It would require far more storage and maintenance than even a blacklist
  • It would provide a single point of failure
  • It would give someone control over users that nobody should have

Sacrificing performance

Server-based prediction is optionally implemented in the pre-beta versions of odamex. It is enabled by the sv_speedhackfix server variable. Despite totally preventing speedhack cheats, in practice, gameplay becomes too jittery for all clients.

Also see: Cheat-Proofing Dead Reckoned Multiplayer Games

Possible solutions

Statistical evaluation

Statistical analysis of live and recorded games is likely to lead to an effective solution. Players tend to have very different performance characteristics compared to programmatically supported ones.

Clientside virtual machine

It may be possible to push all possible cheat code implementations out of the core engine if a secure virtual machine (vm) is implemented on the client. The virtual machine would maintain the entire game state, and the client would not have sufficient information to decode it except where the vm grants it that privilege. The server would generate new vm code for every game, so that code-specific cheats become useless. It is difficult to see whether such a solution will be successful as it requires a complete translation of the doom engine into a flexible vm representation. There weaker versions of this idea might also be useful.

What you can do

When you believe that another player has used an unfair advantage against you, you can report that player to the server administrator. The Odamex development team could be interested in this as a bug to be fixed, but please take up issues with the player themselves with your server administration. The Odamex development team does not have the power to ban a player globally or on any individual server except where it is a server operated by a team member.

If you do think it's a bug, please prepare all the necessary information and file a report on our bug tracker.