ValveSoftware / Source-1-Games

Source 1 based games such as TF2 and Counter-Strike: Source
644 stars 74 forks source link

[HL2DM][Source-1] High fps causes "speedhack" #1130

Open gavvvr opened 11 years ago

gavvvr commented 11 years ago

Hello. There is terrible bug and can be exploted. If you set your fps_max to 0 in HL2DM (and i suppose other source games) and your PC is powerful enough to handle high fps, you bacome much faster. Here are 2 video examples: http://youtu.be/tRzCaxAwk2E http://youtu.be/2cC-N2wFbXs As you can see If player watch on the wall, he has much greater fps and it causes some kind of speedhack. Unfortunately this video was captured quicky and fps is not diplayed but it is about 900 and more whaen pleyer looks at the wall. The video was captured on localhost server, but the same things happens when you connec't to internet server. high fps can't be handled all the time, it is jittering depending on what player sees, so they are laggy and it is difficult to hit them. And of course such players are faster, than regular fps_max 300 player. I think fps_max must be fixed. 300 fps is more than enough and it should not be allowed to set fps_max > 300 or = 0. And ofcourse it should be integer, no float values for such cvars.

Ok, to reproduce this issue you should have powerful PC and set fps_max to 0. This video was captured on PC with the following specs:

Maxtasy commented 11 years ago

I can confirm this problem. I recently upgraded my gaming rig and can get over 1000 fps ingame. My fps_max was set to 0 in my old config that I ported to my new PC and I first thought my game was glitching or something. I moved with double speed in some areas and realized it happens when I get over 1000 fps. It can certainly be exploited, so capping fps_max at 300 and not allowing value of 0 would be well apreciated.

It-s-Me commented 11 years ago

While you're waiting for a fix, you can block this on your server with a simple client cvar query. Sourcemod has QueryClientConVar, which is used in plugins like SMAC.

For SMAC, make sure smac_cvars.smx is installed and add something like this to your cfg. smac_addcvar fps_max equal kick 300

Realize SMAC queries a lot of other cvars, so a client will need to be connected for a minute before he's kicked, which should be fine since fps_max cant be changed while connected to a server.

AnAkkk commented 11 years ago

Is this only on HL2DM? TF2 and CSS both have an anti-speedhack (and HL2DM should too, but not sure) since a few months, which should be pretty effective, so I can't see how this can work on these games.

Speedhacking works by sending more command packets than the server tickrate, it shouldn't be related to FPS. Could you show a screenshot with net_graph 1 when you are able to do this?

Maxtasy commented 11 years ago

Okay I need to correct my post from some days ago. I just tested both settings (fps_max 300 and fps_max 0) on an internet server and the result is that both are the same speed. So, there's no speed boost anymore. On a local server it still exists, though.

Here a comparison video: http://www.youtube.com/watch?v=PZOvsy7eNG0&feature=youtu.be

Also demos: http://www.sendspace.com/file/uf752i

AnAkkk commented 11 years ago

That net_graph is useless as it's been took from a demo playback, it seems. Could you show a screenshot while playing? (net_graph 4 might be useful as well)

Maxtasy commented 11 years ago

http://abload.de/img/320_2013-08-08_000017ju0g.png

It's hard to get over 1000 fps while recording with bandicam, here's a live recording with around 900. http://www.youtube.com/watch?v=oIh5TLFhi_E&feature=youtu.be

Bucky21659 commented 11 years ago

This problem may not be on some servers, but it might on really high end ones (they sometimes have a 5000000FPS tag in the name, or something rediculous like that).. I know with Source networking there's faster communication if the client has high FPS. (You know how sometimes you think you've been killed unhumanly fast, well that's why)

AnAkkk commented 11 years ago

Server FPS has been locked to the tickrate since at least 2 years, so the FPS will always be 66. Modded servers that change the limit are not supported. Anyway that wouldn't change anything as nothing is done during extra frames, calculations are only done every tick + there is an anti speedhack.

gavvvr commented 11 years ago

As AnAkIn1 said:

Server FPS has been locked to the tickrate since at least 2 years, so the FPS will always be 66

Yes, it is loccked for dedicated servers, but not locked for listen servers :) Here are 3 proofs with fps_max0/125/300 (look at sv: in net_graph): Listenserver-fps_max0 Listenserver-fps_max125 Listenserver-fps_max300

AnAkkk commented 11 years ago

I guess that's normal, as the server is ran by the client. Though, the tickrate should still be 66.