87andrewh / CornerCullingSourceEngine

A Source/CSGO port of CornerCulling
49 stars 18 forks source link

Culling in some special scenarios #8

Open arckiCriss opened 3 years ago

arckiCriss commented 3 years ago

Really appreciate your efforts in the battle against wallhackers. I did test the plugin and it works amazingly well, especially when considering the performance.

Sorry for the previous incorrect comments(edited); I checked the code and found logic for CharacterBounds. But according to our testing, It seems there are still some bugs for barrels and some small gaps. Mirage A under balcony: image Missing barrel on Mirage B apt: image

arckiCriss commented 3 years ago

For the barrel problem, I tried to increase BarrelExtent in GeometricPrimitives.h but it didn't help :(

87andrewh commented 3 years ago

Hi, thanks for the reports. Hmm, the optimal solution is to dynamically fetch the tip of each player's gun, and then use that as the point. I might have some time to try that this weekend.

I'll look into Mirage A.

arckiCriss commented 3 years ago

Thanks for your response. I agreed that the best solution is to dynamically get the location of the tip; maybe we can check the weapon type of each client and use some predefined data for each weapon model's length.

But I still didn't understand one thing; If my understanding is correct, BarrelExtent is working as a static value to extend the top vertices of the character bound. I tested it from 40 to 120 and there is no difference regarding the length where the barrel is "vanished"; Here is the example:

ezgif com-gif-maker (1)

I set the BarrelExtent to 120 in this case. And I also measured the distance between the enemy's eye to the edge of the arch, and it is surely less than 120. So the barrel including the whole body should not be culled no matter where I move to, which makes me confused.

This one might not relate to the anti-wallhack plugin since I reproduced this bug on a fresh server. valve pls :(

PS: I guess shadows on the ground are also buggy in some cases, but I don't think it matters for most scenarios.