CS2 Cheat Update: Enhanced and Dynamic Visibility Check
-
InVision -
February 17, 2024 at 11:07 PM -
2,086 Views -
0 Replies
Normally we don't announce product updates in the news section, but for this update we're making an exception as the improved visibility check not only promises better ESP results, but also significant improvements to the aimbot and the general feel of the game while using our CS2 cheat.
The Problem of External Visibility Checks
The most common way of performing a visibility check in Counter-Strike used by the majority of all external cheats is based on information supplied directly by the game via network variable (imagine a variable that is either 0 or 1) where the game server keeps track of the state and sends updates to the player clients. This information, as you have been able to observe over the last few months, is highly error-prone and is not updated in a reasonable time frame, because of network latency, server update rates or for other reasons. It is simply not required for general game functionality for this information to be accurate at all times. In the context of a cheat, however, we need this information to be as accurate as possible, as this problem leads, for example, to players being treated as “not visible” even though they are clearly visible on the screen, which not only affects the ESP, but also other parts of the cheat, such as the aimbot.
This is how the visibility check looked before:
In-game screenshot showcasing the visibility check before the update.The significant delay and the problem with this method is clearly visible. As a quick way to distinguish between visible and invisible players, using this method is fine, but the result will never be truly satisfactory and comparable to an internal cheat utilizing engine functions. For this reason, we have been working hard over the last few weeks to implement a significantly better method that was already used in a similar form in external cheats for CS:GO, but had to be completely redeveloped for CS2.
The Solution to improve External Visibility Checks
The solution to improve visibility checks in an external cheat lies in extracting information on the environment directly from the map data. With the data extracted and decompressed in real time, the visibility status can be calculated very accurately based on whether there is a physical obstruction (e.g. a wall) that blocks the players' view of another player. This can be done by making use of the meshes and hulls of all physical objects in a given map. Depending on the size of the map, there are hundreds or thousands of triangles of different sizes that need to be raytraced, which is a method for calculating occlusion, i.e. for determining the visibility of three-dimensional objects (in this case other players) from a specific point (the players position) in a given space (the map). This method involves casting a ray from one point to another and checking if it intersects with any objects in the environment. If the ray reaches the target without any intersections, then the target is visible. Otherwise, it's not.
Here is a view of what the cheat sees in the background:
This is what the visibility check looks like now:
In-game screenshot showcasing the improved visibility check after the update.Extracting the information directly from the map file is not a trivial task if you want to do it dynamically for every map instead of covering all official maps once but then having to make adjustments for updates and not being able to support new/unknown maps at all. It was important to us from the start that our method worked on every map, whether after a game update or on workshop maps and we can proudly say that we have achieved this goal. Our improved visibility check is now available to everyone using our CS2 cheat, so make sure to check it out!
The Cost of Performance
The benefits of this method outweigh the "simple" method in every way, but utilizing this technology comes with one major drawback. This drawback is that this method consumes a lot of resources. Parsing the map data is a one-off process when loading a map. It can still vary greatly depending on the size of the map and the customers hardware, but the process is completed at some point. What really makes the difference in performance is the constant ray tracing against thousands of objects on a map. Although we have taken measures to drastically reduce the number of possible hits (without going into detail), a lot of computing power is still required. This is particularly noticeable on maps with many objects and details, such as de_inferno, which is hardly optimized in general (you don't need cheats to have bad performance on this map).
We wanted to present this problem openly, as some of you will have more problems with it than others. This is simply due to different hardware, but you can only ever use tools (e.g. software) that your own hardware can handle. For this reason, the new method of performing visibility checks can be switched off and the old method will be used again. We think this is a good middle way, not to force a "worse" product on customers if they were previously satisfied with how it worked. However, as we want to test the performance on a wide variety of hardware and ultimately get your feedback on it, the new method is activated by default and must be explicitly deactivated.
Instant Upgrades to the CS2 Cheat
The new technology for performing accurate visibility checks can be used to improve various features of the CS2 cheat in the future, but the update already provides some immediate improvements to the cheat. Immediately noticeable are the improvements made to the ESP, which is now updated as soon as a player's visibility status changes, just as you would expect. In addition, the aimbot benefits greatly from this update as there is no longer a scenario that causes the aimbot to not react quickly enough or to be running for too long. In future updates, new features and additional improvements will be made based on the new visibility check.
Feedback Wanted
The method of extracting and visualizing data directly from the map file is very complex, which is why we need feedback on how it turned out. If something does not work as it should, please let us know in a bug report. Make sure to always include the name of the map you played and preferably a screenshot or screen recording showcasing the problem. What we are particularly interested in is the performance on all kinds of different hardware.