Donations
|
If you wish to make a donation you can by clicking the image below.
|
|
|
|
|
11th April, 2009, 02:04 AM
|
|
Holy Shit!!
|
|
Join Date: Apr 2003
Posts: 4,029
|
|
Thank you for the results. Keep them coming.
It looks like a handful of players, maybe those that have acceleration on, have unusually high values. This will be taken into account with the next release.
Quote:
Originally Posted by minime
I have tested this on my server, it kicks innocent players from the game if they move their mouses to fast.
|
Download links have been removed. Please wait for the next version.
__________________
How to feck up a perfectly good game:
UT (1999) = UnbelievableGameSoCoolIMustHelpBringNewPlayers Tournament
UT (2008) = Unreal ThrustMyPrivatePartsInYourFaceBish
And that's probably why UTIII was a relative flop. New game, same sh*thead players ^^.
Last edited by Azura : 11th April, 2009 at 02:07 AM.
|
3rd May, 2009, 04:50 PM
|
|
Holy Shit!!
|
|
Join Date: Apr 2003
Posts: 4,029
|
|
Ok, sorry to keep you waiting (especially Switzzz ) but it's the month of May and exams have taken top priority. If anyone feels like developping the project further, feel free to contact me and I will provide you with the latest source.
__________________
How to feck up a perfectly good game:
UT (1999) = UnbelievableGameSoCoolIMustHelpBringNewPlayers Tournament
UT (2008) = Unreal ThrustMyPrivatePartsInYourFaceBish
And that's probably why UTIII was a relative flop. New game, same sh*thead players ^^.
|
3rd May, 2009, 05:57 PM
|
|
Godlike
|
|
Join Date: Nov 2007
Posts: 265
|
|
Nice work, I'm glad I can at least help gathering data and hope I can test it soon too.
More values, this one is when I tried to turn as fast as possible:
[FastTurnTry]
maxDeltaYaw=7600
maxDeltaPitch=4592
bNormalize=True
MouseSensitivity=1.640000
bUseTimer=False
timerInterval=0.100000
axisXSpeed=6.000000
axisYSpeed=6.000000
But when I played DM-Morbias][ I noticed something strange. When I was hit by a rocket or the redeemer the Yaw was very high:
[DirectRocketHit]
maxDeltaYaw=186281
maxDeltaPitch=3133
bNormalize=True
MouseSensitivity=1.640000
bUseTimer=False
timerInterval=0.100000
axisXSpeed=6.000000
axisYSpeed=6.000000
|
3rd May, 2009, 10:15 PM
|
|
Holy Shit!!
|
|
Join Date: Apr 2003
Posts: 4,029
|
|
Thanks for bringing this up rork. The possibility that a projectile hit could influence the turn speed had been considered but without in-depth testing this wasn't certain.
Things that suddenly change the viewrotation like a player getting fragged or going through a portal have been taken into account. Perhaps there is a way to ignore or filter the change by detecting a sudden change in momentum.
__________________
How to feck up a perfectly good game:
UT (1999) = UnbelievableGameSoCoolIMustHelpBringNewPlayers Tournament
UT (2008) = Unreal ThrustMyPrivatePartsInYourFaceBish
And that's probably why UTIII was a relative flop. New game, same sh*thead players ^^.
|
28th May, 2009, 02:12 PM
|
Dominating
|
|
Join Date: Sep 2006
Posts: 106
|
|
This looks familiar You use a different approach than I did, but there are many similiarities. I've worked out a _very_ simple proof-of-concept to detect sweepshots serverside a while back, but basicly didn't continue the work cause these kind of detection methods won't be used at all by clanbase a-c and poor cooperation. Reasons were that they don't want to watch demo's biased and they don't believe it can give 100% conclusive catches. I certainly agree on the last reason, considering you're checking serverside (which might be different to the game state clientside) + there can always be lucky shots. You're detecting symptoms of cheats in the end, not the actual cheat.
My suggestions for you are these:
* Timestamp dodgy moments as usefull output (think you already do this?)
* Like you pointed out yourself, keep it as simple as possible. It can be done though without lagging the server too much, there used to be anti-cheat serverside that already checked players behaviour (like clicking fire inhumanly much)
* To detect sweepshots: The basic idea is to compare the viewrotation before and after the shot. I used a very basic approach by keeping an array of the previous viewrotations of the last 5 ticks, and when a player fires on tick n, compare the viewrotation difference on pre-shot (n-1,n) and post-shot (n,n+1). If it's a sweep, both values should be alike.
The idea is that sweepshots, frags middle in a mousesweep, are mainly caused by triggers. It's pointed out by a good vid recently here and explained further here.
I haven't been able to test this approach, although I saw a significant difference between my normal aiming (pre-shot >> post-shot) and me trying to mimick sweepshots (pre-shot ~~ post-shot). It would be best to test this with a triggerbot though, gathering actual information about sweepshots. I haven't done this cause I don't want to burn my fingers and I don't have a seperate dev box available for this.
I think it could prove out to be a valuable tool for demowatching or flagging suspecious players; it's easy to look back the shots when you got timestamps. If you do it to catch cheaters in official clanbase games I wouldn't recommend it though, it's very unlikely it will ever be used or even allowed. Also, you might want to keep your detection routines more quiet tbh if you find the holy grail of serverside a-c. I guess it's really easy for cheat devs to counter your routines (ie. by limiting the turn speed or preventing sweepshots themselves).
Here's the rough code for that proof-of-concept.
The code executed every interval (tick in my PoC):
Code:
// Save viewrotations
AddViewRotation(Target.ViewRotation);
// Check for sweepshots
if(CheckFireViewRotation) {
CheckFireViewRotation = false;
DetectAndLogSweepshot();
}
// Toggle boolean to check for a sweepshot the next interval
if (Target.KillCount != PrevKillCount) {
//Analyse the kill next tick if it's a sweepshot
CheckFireViewRotation = true;
}
The actual functions:
Code:
// Save the last three ViewRotation's, which describes where to player is looking at
function AddViewRotation(rotator NewViewRotation) {
PrevViewRotations[0] = PrevViewRotations[1];
PrevViewRotations[1] = PrevViewRotations[2];
PrevViewRotations[2] = NewViewRotation;
}
/* Try to detect a sweepshot
A possible implementation would be to check if PreFire and PostFire movement
is relativly fast, but alike and fluent, like a normal 'sweep' with the mouse. */
function DetectAndLogSweepshot() {
local string sweepShotAnalysis;
local int PreFireHorizontalDistance, PostFireHorizontalDistance;
local int PreFireVerticalDistance, PostFireVerticalDistance;
PreFireHorizontalDistance = PrevViewRotations[0].Pitch - PrevViewRotations[1].Pitch;
PostFireHorizontalDistance = PrevViewRotations[1].Pitch - PrevViewRotations[2].Pitch;
PreFireVerticalDistance = PrevViewRotations[0].Yaw - PrevViewRotations[1].Yaw;
PostFireVerticalDistance = PrevViewRotations[1].Yaw - PrevViewRotations[2].Yaw;
// Log all for now, no analysis: This might lag the server, but we need the data to see if a 'sweepshot' pattern can be found.
Log(Level.TimeSeconds$" >> PreHorizontal: "$PreFireHorizontalDistance$" PostHorizontal: "$PostFireHorizontalDistance$" PreVertical: "$PreFireVerticalDistance$" PostVertical: "$PostFireVerticalDistance);
}
Last edited by killereye : 28th May, 2009 at 02:35 PM.
|
28th May, 2009, 05:12 PM
|
|
Holy Shit!!
|
|
Join Date: Apr 2003
Posts: 4,029
|
|
Quote:
Originally Posted by killereye
Reasons were that they don't want to watch demo's biased and they don't believe it can give 100% conclusive catches. I certainly agree on the last reason, considering you're checking serverside (which might be different to the game state clientside) + there can always be lucky shots. You're detecting symptoms of cheats in the end, not the actual cheat.
|
There's nothing stopping them watching a demo first and then looking at the data :p .
Also, the AC team should get used to the idea that it will one day be impossible to detect native cheats directly. On the other hand, collecting sufficient data and using statistics could help pinpoint the moments where you should keep an eye open while watching a demo.
Quote:
* To detect sweepshots: The basic idea is to compare the viewrotation before and after the shot. I used a very basic approach by keeping an array of the previous viewrotations of the last 5 ticks, and when a player fires on tick n, compare the viewrotation difference on pre-shot (n-1,n) and post-shot (n,n+1). If it's a sweep, both values should be alike.
|
That's a nice idea. There's another one floating around that would in with it quite nicely with respect to picking out triggerbot behaviour.
Quote:
Also, you might want to keep your detection routines more quiet tbh if you find the holy grail of serverside a-c. I guess it's really easy for cheat devs to counter your routines (ie. by limiting the turn speed or preventing sweepshots themselves).
|
It might be too late for that. This topic was posted with the hope that others might take the idea up and there's still an allergic reaction to anything that might remotely give out false positives from the AC community. I'm not really concerned with clan games anyway and was more interested in providing something to the admins of public servers. Whether the authors of cheats decide to adapt is up to them but, in the end, an approach like this will limit them so much that they won't be able to do a lot more than a human player.
Code:
function DetectAndLogSweepshot() {
local string sweepShotAnalysis;
local int PreFireHorizontalDistance, PostFireHorizontalDistance;
local int PreFireVerticalDistance, PostFireVerticalDistance;
PreFireHorizontalDistance = PrevViewRotations[0].Pitch - PrevViewRotations[1].Pitch;
PostFireHorizontalDistance = PrevViewRotations[1].Pitch - PrevViewRotations[2].Pitch;
PreFireVerticalDistance = PrevViewRotations[0].Yaw - PrevViewRotations[1].Yaw;
PostFireVerticalDistance = PrevViewRotations[1].Yaw - PrevViewRotations[2].Yaw;
Feel free to use the functions that calculate the difference in Yaw and Pitch. There's a few adjustments necessary as a player is limited in the way they move.
Also, it's a good idea to access the player viewrotation directly as casting to a rotator will lose some information (yaw and pitch values are clipped).
Code:
// Log all for now, no analysis: This might lag the server, but we need the data to see if a 'sweepshot' pattern can be found.
Log(Level.TimeSeconds$" >> PreHorizontal: "$PreFireHorizontalDistance$" PostHorizontal: "$PostFireHorizontalDistance$" PreVertical: "$PreFireVerticalDistance$" PostVertical: "$PostFireVerticalDistance);
}
An alternative to using logs (slow I/O operation) is to use an Actor or Object to store values. Logs can then either be spaced out or dumped in one go depending on what's possible in terms of memory on the average server.
__________________
How to feck up a perfectly good game:
UT (1999) = UnbelievableGameSoCoolIMustHelpBringNewPlayers Tournament
UT (2008) = Unreal ThrustMyPrivatePartsInYourFaceBish
And that's probably why UTIII was a relative flop. New game, same sh*thead players ^^.
Last edited by Azura : 28th May, 2009 at 06:18 PM.
|
29th May, 2009, 04:13 PM
|
Dominating
|
|
Join Date: Sep 2006
Posts: 106
|
|
Guess it can be a nice tool for publics idd I'm not working on it anymore anyway, I was only interested in clanbase games since I don't play much at publics.
Good luck with the project, nice work!
|
12th September, 2009, 06:56 AM
|
|
Rampage
|
|
Join Date: Mar 2005
Location: Denmark CPH
Posts: 87
|
|
So Azura, whats up........ didi the project get stuck somewhere between girlfriends and work?
Not a blame, any effort vs AC is admireble, just wanna know and as i said i can test on a grander scale if its ready for it
|
12th September, 2009, 05:19 PM
|
Holy Shit!!
|
|
Join Date: Mar 2007
Posts: 1,726
|
|
I will help testing too
|
9th October, 2009, 12:38 PM
|
Holy Shit!!
|
|
Join Date: Nov 2006
Location: France
Posts: 1,846
|
|
Can we have a final version ?
|
15th October, 2009, 12:40 AM
|
|
Holy Shit!!
|
|
Join Date: Apr 2003
Posts: 4,029
|
|
Hi, just a quick message to say that I'm going to get working on a functional barebones version that can serve as a foundation for gradual improvements. In the meantime, have any of you touched unrealscript or know someone that has ? It'd be nice to get a few people involved so all of this doesn't go to waste
__________________
How to feck up a perfectly good game:
UT (1999) = UnbelievableGameSoCoolIMustHelpBringNewPlayers Tournament
UT (2008) = Unreal ThrustMyPrivatePartsInYourFaceBish
And that's probably why UTIII was a relative flop. New game, same sh*thead players ^^.
Last edited by Azura : 15th October, 2009 at 12:45 AM.
|
15th October, 2009, 08:18 AM
|
Holy Shit!!
|
|
Join Date: Nov 2006
Location: France
Posts: 1,846
|
|
|
15th October, 2009, 07:00 PM
|
|
Godlike
|
|
Join Date: Aug 2004
Location: Portland,Or.
Posts: 326
|
|
Quote:
Originally Posted by Azura
Hi, just a quick message to say that I'm going to get working on a functional barebones version that can serve as a foundation for gradual improvements. In the meantime, have any of you touched unrealscript or know someone that has ? It'd be nice to get a few people involved so all of this doesn't go to waste
|
If your looking for helpful active unrealscript writers register at www.hofgamingclan.com cause I have plenty members who have experience in this area. Unfortunately not many of them come to this forum.
|
15th October, 2009, 08:20 PM
|
Holy Shit!!
|
|
Join Date: Mar 2007
Posts: 1,726
|
|
I think it would be better if you directed them here? It is a more centralised admin place without clan dramas etc
|
15th October, 2009, 10:41 PM
|
|
Godlike
|
|
Join Date: Aug 2004
Location: Portland,Or.
Posts: 326
|
|
You might be surprised but there is no clan drama in my community but I'll make sure I direct them here for future reference.
|
17th October, 2009, 07:39 AM
|
Holy Shit!!
|
|
Join Date: Sep 2004
Posts: 866
|
|
Do you still need help with coding? I am available if so.
__________________
http://www.unrealize.co.uk for XConsole, ServerLog, StealthAdmin and other Unreal Tournament mods.
-= F R A G G A L O N I A... R E S U R R E C T I O N! O L D... S K O O L... S N I P E R =- unreal://82.40.94.2
Old skool sniping. Just you, your weapon, and gravity.
|
17th October, 2009, 06:02 PM
|
|
Godlike
|
|
Join Date: Aug 2004
Location: Portland,Or.
Posts: 326
|
|
Quote:
Originally Posted by ~V~
Do you still need help with coding? I am available if so.
|
I have been letting gopostal tinker with a few of the servers since we've been having multiple server crashes which we think are due to foul play.
I always need help and if you have time I would be glad to have you aboard. Just register at www.hofgaminclan.com.
P.S. Even AnthraX has been helping us out so I made his own section on my message board for posting anti-cheat development and don't mind opening new sections for those with talent who like to see there work be of use.
|
25th October, 2009, 01:09 PM
|
|
Holy Shit!!
|
|
Join Date: Apr 2003
Posts: 4,029
|
|
SC]-[LO]\[G_{HoF}, I will register today. Do you have a dedicated forum ?
Edit: The confirmation code doesn't appear properly when attempting to register. I have sent an e-mail to the admin address.
__________________
How to feck up a perfectly good game:
UT (1999) = UnbelievableGameSoCoolIMustHelpBringNewPlayers Tournament
UT (2008) = Unreal ThrustMyPrivatePartsInYourFaceBish
And that's probably why UTIII was a relative flop. New game, same sh*thead players ^^.
Last edited by Azura : 25th October, 2009 at 01:16 PM.
|
25th October, 2009, 05:14 PM
|
Holy Shit!!
|
|
Join Date: Sep 2004
Posts: 866
|
|
Same thing. It just prints 'code code code code'
__________________
http://www.unrealize.co.uk for XConsole, ServerLog, StealthAdmin and other Unreal Tournament mods.
-= F R A G G A L O N I A... R E S U R R E C T I O N! O L D... S K O O L... S N I P E R =- unreal://82.40.94.2
Old skool sniping. Just you, your weapon, and gravity.
Last edited by ~V~ : 25th October, 2009 at 05:17 PM.
|
27th October, 2009, 06:55 PM
|
|
Godlike
|
|
Join Date: Aug 2004
Location: Portland,Or.
Posts: 326
|
|
Quote:
Originally Posted by Azura
SC]-[LO]\[G_{HoF}, I will register today. Do you have a dedicated forum ?
Edit: The confirmation code doesn't appear properly when attempting to register. I have sent an e-mail to the admin address.
|
Sorry we've been getting some strange email accounts lately and my site coder is gonna be adding the confirmation letters so to eliminate spam bots. Please send me a PM with your email address and I'll approve you Azura upon re-registering. If you have already been approved then never mind my re-register reply.
Last edited by SC]-[LO]\[G_{HoF} : 27th October, 2009 at 06:58 PM.
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
|