22.08.2006, 17:49
Solving the problem of cheating in computer games is at best an uphill struggle, and at worst mathematically impossible. The situation in SAMP is currently so dire that admins have to keep a constant watch out. The problem is compounded because people have no confidence that their peers are not cheating. People often accuse others of cheating without any objective basis, and sometimes maliciously. This makes vote kicks and community reporting of cheaters ineffective. Scripted anticheat is effective at some of the obvious and simple cheats, but these cheats are rarely as harmful to the game as the others which are more subtle (e.g. weapon hit hacks). Cheat authors are obviously designing countermeasures (re: fake minigun death), and we can only expect this practice to continue.
All this means that an admin must witness evidence of cheating directly, using watch tools or whatever available, and ban the offenders, or the game will be unplayable. This is the most effective approach and I have a team of admins operating on my server who have the power to use tools like /watch and /ban. The usual way things happen is that one players accuses another of cheating, and the admins then investigate the allegation to see if they can personally find any evidence.
However, the bugs and features in SAMP make some perfectly legal behaviour *look* like cheating. Lag is an obvious example, sync issues can also cause mysterious effects. This is why I'm writing this, I have previously banned people from my server for what I assumed was cheater behaviour, but which I subsequently discovered to be due to SAMP itself. We can only expect the hackers to write cheats that look more and more like natural SAMP behaviour, so this situation may get worse.
Making objective decisions as an admin is incredibly hard, you have to keep in mind that your purpose is not to ban every cheater, but to make sure the game is not ruined. Consequently it is best not to ban people unless you see a lot of evidence that they are using cheats to ruin the game. Luckily, if someone is actually ruining the game, they are usually being unsubtle and thus you can discover what they are doing easily.
The situation will be improved if admins are efficient at discovering cheaters, but also if players give good explanation as to why they suspect a particular player is cheating. Often I see a conversation like the following:
<Idiot> joe is cheating!
(Idiot starts vote ban on Joe)
<Joe> no im not
(A few votes come in)
<Admin> how?
<Idiot> hes using hacks
<Admin> what hacks
<Idiot> health
<Joe> he just missed me
<Idiot> no i saw loads of blood come out
It seems impossible to actually educate people about the counterintuitive nature of weapon damage in SAMP. It's quite possible that Joe was cheating, or that he was lagged, or there was a bug, or "Idiot" is just frustrated by his own ineptitude. Basically players just need to learn to be more specific about their claims, and to understand how the game works. Yeah right.
In the absence of helpful players, the duty falls to the admin to try and find out whats going on. Assuming that the admin has the kind of tools I wrote for the Protect the Prime Minister server (which are pretty simple), it is still difficult to really tell, as you will have missed the incident that provoked the cheat report.
The most important tool is /watch, which makes an admin hover a given amount above or below the suspect so they can see whats going on. Of course people who see this think that the admin is cheating, but they tend to get ignored by the other admins Code for /watch is embedded in the Protect the Prime Minister code, available at http://spark.woaf.net/protectpm/.
(There are probably more advanced tools out there, please write about them in this thread if you know of any.)
These are the cheats I know and I can identify, and the "false positives" caused by bugs that I have discovered. The most dangerous cheat is (in my opinion) the health hack, because in Protect the Prime Minister, the game is ruined if the PM cannot be killed
Health hacks:
There are two of these that I have discovered. The first is easy to detect, whereas the second is virtually impossible.
- Cheaters can set their health back to 100 constantly
This is easy to detect, you check the players health, if it is 100, the admins just need to /sethealth 99 and then use /gethealth to see if it magically moves back to 100 instantaneously. Best to do it a few times to make sure, as they could have eaten food at that moment. Darco's anticheat can detect this, but things get more complicated if you have medics and hearts and stuff.
- Cheaters are invulnerable to bullets
This is like godmode in the game, I think they can sometimes be injured by unconventional deaths like falling.
This is a pain to detect as you don't know if the person shooting the bullets either can't aim, or their target's position is not synced due to lag. Not only that but it appears naturally and legally in some situations e.g. the "lucky victim" bug, as I will explain. Needless to say you have to /watch the suspected cheater and if they are walking through huge gunfights, constantly killing people (different people!) then you may have a case for their guilt. This is about the best you can do, as an admin. They will usually lose no health at all, which is most unusual as even the best player will lose a few % when fighting other people, especially if the situation is very chaotic. Let us hope that noone manages to write a hack that lets the player be hit occasionally but blocks most of the shots! Bear in mind that they may still be harmed by explosions and stuff so they may not be running around with 100% health, but they will probably be running around with a constant amount of health that never decreases in gunfights.
Aside from the lag issue, and the fact that different clients have different ideas about where everyone is, there is also the "lucky victim" bug. I noticed this while playing on a lan with my flatmate, who was running my GTA install, and thus had no hacks. Suppose there are two players in the game, the Lucky Victim and the Unlucky Victim. This bug only affects these two, everyone else will not realise it is happening. The Lucky Victim will not be harmed by the Unlucky Victim, but will be harmed by others. The Unlucky Victim will not be able to harm the Lucky Victim, but will be able to harm others. The Unlucky Victim and everyone else sees the bullets hitting, but the Lucky Victim believes he his not cheating. This obviously leads to confusion and cheat reports, when the Unlucky Victim fails to kill the Lucky Victim and end up dying. Usually when the Unlucky Victim respawns, the bug goes away!
What is happening? The Lucky Victim is displaying a character model for the Unlucky victim on their computer, this is what you see as the opponents in the game. However, the Unlucky Victim is not rendering properly for the Lucky Victim, the animations are not showing, and he is walking around in a rigid fixed position, often with arms at his sides and his legs not moving. Only the Lucky Victim will see this, the Unlucky Victim (and everyone else in the game) will see normal animations.
If the Unlucky Victim's arms and legs do not move (according to the point-of-view of the Lucky Victim anyway!) then he cannot lift his gun up and aim, and thus he cannot fire, thus no bullets are produced and the Lucky Victim never gets harmed. Remember that bullet damage is done on the victim's client, not on the gun firer's computer, and in this case that is the Lucky Victim's computer. Result: The Unlucky victim will think the Lucky victim is cheating. All of this also applies if the Lucky Victim is driving a vehicle! Sometimes it occurs when the Unlucky victim is in a vehicle, e.g. a bike, and finds that no matter how much they shoot the car in front of them, it does not start smoking. I believe this is all related to the same bug or several bugs that are very similar.
So, if you're an admin and you cannot kill someone, don't instantly ban them, they may be just be the Lucky Victim, and you may be the Unlucky Victim. Also, if you witness someone shooting someone else repetively but not knocking off any health, you have to test whether others can harm them to see if it is a cheater or this bug that is causing this.
Also, unoccupied vehicles are not synced, i.e. they can be in different positions on different clients. If the Unlucky Victim is standing on a vehicle (e.g. a boat) and the Lucky Victim's client thinks the boat is somewhere else, then he will "fall" constantly, although his actual position will remain constant, i.e. the Unlucky Victim will "hover". When people are falling they can't shoot, so again the Lucky Victim is not harmed when the Unlucky Victim believes his bullets are hitting.
Flying cars:
This is pretty harmless, and very obvious to anyone who sees it, you have to be careful its not just one of those random car "launches" you get in GTA, especially if things spawn inside other things. Also don't ban the passenger Everyone has probably noticed that sometimes its possible for two people to get into a vehicle (as driver) at the same time, and confuse the game.
Teleporting:
A range of sins, people warping to the top of buildings (in SF the game engine lets you do this with the tall building, just like in LS, but in SF there is no "yellow triangle" marking the teleporter). People can also "ghost" over the map, through buildings and the ground, etc. When people do this, you can see "UFOs" on the radar, moving around very fast and making tight corners irrespective of the terrain. It's pretty harmless and obvious and doesn't affect the game that much (unless you have a "hard to get" weapon pickup).
Weapon hacks:
-Apart from knowing that someone is using a weapon which is not on the map (note: you cannot use the "death messages" to determine this anymore), you're pretty stuck here as the script does not know what people's weapon status is. You have to actaully observe someone using a weapon which does not exist on the map before you can be sure that they are cheating. Don't forget that fire extinguishers are legally available from burgershot!
Cars being moved to a person just before they get in it:
This is probably not a cheat, although there is no reason why a cheat could not be written to do this. Firstly, why bother writing it, since there are already cheats that move the player to the car? What is probably happening here is that the unoccupied vehicle is not synced, and your client thinks its somewhere different to where the soon-to-be driver thinks it is. Once he gets in the car, the game starts propogating that client's version of events to everyone else, and you will see the car warp to its "true" location, based on the driver's client's point-of-view. Unoccupied cars are moved about by collisions, gravity, and people can get out of them while they are moving, so this is quite a common thing to see.
Thats all I've found / can remember. Please post your experiences on cheater behaviour, and also the bugs that make people look like they are cheating when they are not. Thanks for reading this very long post
All this means that an admin must witness evidence of cheating directly, using watch tools or whatever available, and ban the offenders, or the game will be unplayable. This is the most effective approach and I have a team of admins operating on my server who have the power to use tools like /watch and /ban. The usual way things happen is that one players accuses another of cheating, and the admins then investigate the allegation to see if they can personally find any evidence.
However, the bugs and features in SAMP make some perfectly legal behaviour *look* like cheating. Lag is an obvious example, sync issues can also cause mysterious effects. This is why I'm writing this, I have previously banned people from my server for what I assumed was cheater behaviour, but which I subsequently discovered to be due to SAMP itself. We can only expect the hackers to write cheats that look more and more like natural SAMP behaviour, so this situation may get worse.
Making objective decisions as an admin is incredibly hard, you have to keep in mind that your purpose is not to ban every cheater, but to make sure the game is not ruined. Consequently it is best not to ban people unless you see a lot of evidence that they are using cheats to ruin the game. Luckily, if someone is actually ruining the game, they are usually being unsubtle and thus you can discover what they are doing easily.
The situation will be improved if admins are efficient at discovering cheaters, but also if players give good explanation as to why they suspect a particular player is cheating. Often I see a conversation like the following:
<Idiot> joe is cheating!
(Idiot starts vote ban on Joe)
<Joe> no im not
(A few votes come in)
<Admin> how?
<Idiot> hes using hacks
<Admin> what hacks
<Idiot> health
<Joe> he just missed me
<Idiot> no i saw loads of blood come out
It seems impossible to actually educate people about the counterintuitive nature of weapon damage in SAMP. It's quite possible that Joe was cheating, or that he was lagged, or there was a bug, or "Idiot" is just frustrated by his own ineptitude. Basically players just need to learn to be more specific about their claims, and to understand how the game works. Yeah right.
In the absence of helpful players, the duty falls to the admin to try and find out whats going on. Assuming that the admin has the kind of tools I wrote for the Protect the Prime Minister server (which are pretty simple), it is still difficult to really tell, as you will have missed the incident that provoked the cheat report.
The most important tool is /watch, which makes an admin hover a given amount above or below the suspect so they can see whats going on. Of course people who see this think that the admin is cheating, but they tend to get ignored by the other admins Code for /watch is embedded in the Protect the Prime Minister code, available at http://spark.woaf.net/protectpm/.
(There are probably more advanced tools out there, please write about them in this thread if you know of any.)
These are the cheats I know and I can identify, and the "false positives" caused by bugs that I have discovered. The most dangerous cheat is (in my opinion) the health hack, because in Protect the Prime Minister, the game is ruined if the PM cannot be killed
Health hacks:
There are two of these that I have discovered. The first is easy to detect, whereas the second is virtually impossible.
- Cheaters can set their health back to 100 constantly
This is easy to detect, you check the players health, if it is 100, the admins just need to /sethealth 99 and then use /gethealth to see if it magically moves back to 100 instantaneously. Best to do it a few times to make sure, as they could have eaten food at that moment. Darco's anticheat can detect this, but things get more complicated if you have medics and hearts and stuff.
- Cheaters are invulnerable to bullets
This is like godmode in the game, I think they can sometimes be injured by unconventional deaths like falling.
This is a pain to detect as you don't know if the person shooting the bullets either can't aim, or their target's position is not synced due to lag. Not only that but it appears naturally and legally in some situations e.g. the "lucky victim" bug, as I will explain. Needless to say you have to /watch the suspected cheater and if they are walking through huge gunfights, constantly killing people (different people!) then you may have a case for their guilt. This is about the best you can do, as an admin. They will usually lose no health at all, which is most unusual as even the best player will lose a few % when fighting other people, especially if the situation is very chaotic. Let us hope that noone manages to write a hack that lets the player be hit occasionally but blocks most of the shots! Bear in mind that they may still be harmed by explosions and stuff so they may not be running around with 100% health, but they will probably be running around with a constant amount of health that never decreases in gunfights.
Aside from the lag issue, and the fact that different clients have different ideas about where everyone is, there is also the "lucky victim" bug. I noticed this while playing on a lan with my flatmate, who was running my GTA install, and thus had no hacks. Suppose there are two players in the game, the Lucky Victim and the Unlucky Victim. This bug only affects these two, everyone else will not realise it is happening. The Lucky Victim will not be harmed by the Unlucky Victim, but will be harmed by others. The Unlucky Victim will not be able to harm the Lucky Victim, but will be able to harm others. The Unlucky Victim and everyone else sees the bullets hitting, but the Lucky Victim believes he his not cheating. This obviously leads to confusion and cheat reports, when the Unlucky Victim fails to kill the Lucky Victim and end up dying. Usually when the Unlucky Victim respawns, the bug goes away!
What is happening? The Lucky Victim is displaying a character model for the Unlucky victim on their computer, this is what you see as the opponents in the game. However, the Unlucky Victim is not rendering properly for the Lucky Victim, the animations are not showing, and he is walking around in a rigid fixed position, often with arms at his sides and his legs not moving. Only the Lucky Victim will see this, the Unlucky Victim (and everyone else in the game) will see normal animations.
If the Unlucky Victim's arms and legs do not move (according to the point-of-view of the Lucky Victim anyway!) then he cannot lift his gun up and aim, and thus he cannot fire, thus no bullets are produced and the Lucky Victim never gets harmed. Remember that bullet damage is done on the victim's client, not on the gun firer's computer, and in this case that is the Lucky Victim's computer. Result: The Unlucky victim will think the Lucky victim is cheating. All of this also applies if the Lucky Victim is driving a vehicle! Sometimes it occurs when the Unlucky victim is in a vehicle, e.g. a bike, and finds that no matter how much they shoot the car in front of them, it does not start smoking. I believe this is all related to the same bug or several bugs that are very similar.
So, if you're an admin and you cannot kill someone, don't instantly ban them, they may be just be the Lucky Victim, and you may be the Unlucky Victim. Also, if you witness someone shooting someone else repetively but not knocking off any health, you have to test whether others can harm them to see if it is a cheater or this bug that is causing this.
Also, unoccupied vehicles are not synced, i.e. they can be in different positions on different clients. If the Unlucky Victim is standing on a vehicle (e.g. a boat) and the Lucky Victim's client thinks the boat is somewhere else, then he will "fall" constantly, although his actual position will remain constant, i.e. the Unlucky Victim will "hover". When people are falling they can't shoot, so again the Lucky Victim is not harmed when the Unlucky Victim believes his bullets are hitting.
Flying cars:
This is pretty harmless, and very obvious to anyone who sees it, you have to be careful its not just one of those random car "launches" you get in GTA, especially if things spawn inside other things. Also don't ban the passenger Everyone has probably noticed that sometimes its possible for two people to get into a vehicle (as driver) at the same time, and confuse the game.
Teleporting:
A range of sins, people warping to the top of buildings (in SF the game engine lets you do this with the tall building, just like in LS, but in SF there is no "yellow triangle" marking the teleporter). People can also "ghost" over the map, through buildings and the ground, etc. When people do this, you can see "UFOs" on the radar, moving around very fast and making tight corners irrespective of the terrain. It's pretty harmless and obvious and doesn't affect the game that much (unless you have a "hard to get" weapon pickup).
Weapon hacks:
-Apart from knowing that someone is using a weapon which is not on the map (note: you cannot use the "death messages" to determine this anymore), you're pretty stuck here as the script does not know what people's weapon status is. You have to actaully observe someone using a weapon which does not exist on the map before you can be sure that they are cheating. Don't forget that fire extinguishers are legally available from burgershot!
Cars being moved to a person just before they get in it:
This is probably not a cheat, although there is no reason why a cheat could not be written to do this. Firstly, why bother writing it, since there are already cheats that move the player to the car? What is probably happening here is that the unoccupied vehicle is not synced, and your client thinks its somewhere different to where the soon-to-be driver thinks it is. Once he gets in the car, the game starts propogating that client's version of events to everyone else, and you will see the car warp to its "true" location, based on the driver's client's point-of-view. Unoccupied cars are moved about by collisions, gravity, and people can get out of them while they are moving, so this is quite a common thing to see.
Thats all I've found / can remember. Please post your experiences on cheater behaviour, and also the bugs that make people look like they are cheating when they are not. Thanks for reading this very long post