Fog of War: Ultimate solution for Wallhacking?
Cheats are becoming a recurring problem in online games and increasingly difficult to manage. That's why VALORANT's anti-cheat team started to work on it from the very beginning of the development. Paul "Arkem" Chamberlain, the anti-cheat lead for VALORANT, describes how the implementation of the Fog of War system to fight wallhack was done.
The principle function of a wallhack is to take advantage of the information sent by the server to our game client and project that information into the game. The Fog of War system is inspired by the League of Legends system where the Fog of War works as a restrictive element on what information our client receives from the server. The goal of this feature is to know the position of your enemies only when it is relevant to you.
The Fog of War feature implemented in VALORANT tries to replicate the results obtained in the Riot’s MOBA. The first thing was to verify if the implementation of this system was possible in an FPS game.
**With a logic of operation guided by: **
- A way to decide which information is necessary for each player
- A way of preventing players from receiving unnecessary information
- A way of catching a player up when unnecessary information becomes necessary
And intensive research into the Unreal Engine documentation initiated the first attempt at the Fog of War system.
The first attempt
The system worked with lines of sight projected from the characters. It worked partially, but it had several bugs, sometimes a character appears very late, or even not at all, other times the projections of the lines were blocked and didn't allow the system to work properly.
The second attempt
The system improved significantly when a system of predicting the position of the characters based on their speed and direction was incorporated, thus avoiding the pop-up effect of a character in our field of vision.
The system worked but had some bugs and performance problems. While talking through this problem with some of VALORANT’s more graphically-inclined engineers, the problem of the visibility was very similar to a common client graphics problem called occlusion culling.
Server-side occlusion culling
As Paul "Arkem" Chamberlain explains in the article: “Occlusion culling is a technique that game engines use to remove unnecessary objects from a scene before sending it to the graphics card to render. Reducing the number of objects sent to the GPU makes rendering a scene much faster.”
The VALORANT occlusion culling system uses a technique called Potentially Visible Sets (PVS). A PVS system pre-computes which parts of the map can see which other parts. The game runs a process ahead of time which divides the scene into cells.
The game runs a process that divides the maps into cells. For each cell, it calculates the line of sight between each cell and stores the information in a grid.
This new system proved to be much faster and less resource consuming than the line of sight based system. It only consumed 2% of the information transferred from the server, while the previous system reached 50%.
Despite a good performance in general, this system had some minor problems like not showing a character in the scoreboard and some major problems like a discrepancy between what our client sees and what is happening in the server.
This happens when events that are of a prolonged duration, such as the Spike Defuse, are not sent to a player because of the Fog of War. When the player receives the information the position of the agent is correct, but his current pose is not. This kind of bugs was the most critical and the interesting thing was how they were able to solve it - instead of individual solutions for each event they worked together with the engineers responsible for Agents and game systems built a system called Effect Containers. This system is in charge of restarting and fast-forwarding effects after an actor emerges from Fog of War. In this way not only the position of the animation will be correct but also the timing of the events will be corrected.
Measuring effectiveness
To verify the effectiveness the anti-cheat team created several wallhacks and combined them with a series of bots with a predefined routine. This automates the process of verifying changes in the system and detecting outliers within each agent taking into account the times in which the system sends information to the customer.
It is evidenced how structural was the development of the anti-cheat system within VALORANT and how this made it possible to use resources that would not have been available if the construction of the anti-cheat was not integral. The work of the different integrated areas enabled the current anti-cheat system.
Wanna know more? Check out the full article from Paul "Arkem" Chamberlain on the Riot Games official website.
Latest News
Comments
vct 2023
For all information about the VCT 2023, check out our VCT Hub. There you will find our FAQ to answer all of your questions and details about the teams, different Leagues, and more.