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
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.
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.
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.
An engine exploit may in rare cases be used to cheat.
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).
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.
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
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.
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.