Didn't most first person games have this automatically because of using the Quake engine due to their PVS system? It was used to reduce drawing overhead but also beneficial in not sending more data than needed and preserve bandwidth serversided.
AFAIK no they didn't, Valves engines are from the Quake lineage and still use PVS but they only added serverside fog-of-war to Counter Strike relatively recently in ~2015. As the Valorant article goes into, it's a harder problem than it appears because you need to allow the client some wiggle room to know an enemy in coming around a corner before the player sees them so that lag compensation and shadows work correctly (Valorant sidesteps the shadow issue by simply not having players cast shadows). Plus PVS is quite coarse so if you want precise culling you need a more computationally expensive solution.
This video compares Valves own fog-of-war implementation to the implementation used by FACEIT, a third party competitive matchmaking service, which shows there's a pretty wide range of trade-offs to be made. Valve went for conservative and fast, while FACEIT went for aggressive and (presumably) slow:
Valves implementation is better than nothing, it at least stops cheaters from knowing which direction the other team is going at the start of a round, but beyond that it doesn't stop them from knowing exactly where most enemies are standing around corners because the serverside visibility checks are so coarse.
Oh great video. Thanks for sharing. Surely the tick rate has to be lower on FACEIT as a consequence? Maybe this is why everyone in matchmaking would talk about it.
It's a matter of how aggressive is the fog of war and removal of irrelevant entities. Sometimes it's high, sometimes it's low. Too high, and people glitch into existence on high-latency connections. Too low, and you know exactly where people are far behind where you need to.
Many custom servers in games like CS enable a more aggressive version, in cases where you geographically will be close, so you can rule out high latency connections and have more aggressive fog of war.
I believe in the Quake case they made all the walls transparent so you could see everyone coming. Which means they weren’t doing much fog of war at the time.
Regarding the Quake engine and its evolutions (Q3, Call of duty, RTC Wolfenstein), the most common trick was to modify the rendering mode of all player entities so that they are drawn above everything else.
The engine has a flag that is mainly used to draw the player's weapon (which is rendered above the rest). Using this flag for players was the "engine compliant" way of making a wall hack.
I'm not sure if the fog of war anti-hack applies to League of Legends: Wild Rift (mobile version of LoL) since there are map hacks where you can see enemy positions going around:
That's weird, top-down games usually have a clearly defined fog-of-war so it's relatively simple for the server to withhold information that clients don't need to know. Maybe they cheaped out by using peer-to-peer netcode in that version, so there isn't an authoritative dedicated server?
I don't think it did officially, there were definitely server plugins that did it back in the day but AFAICT it wasn't official until this 2015 update:
If you're remembering playing with the r_drawothermodels console command to get a faux-wallhack effect, that was still subject to the engines clientside occlusion culling so it didn't show everything the client (and real cheats) were actually aware of.
The thing I remember was that my friend's graphics card had a global transparency setting built in (AKA a wall-hack mode lol). You could see other players come into view as soon as the came into an area that was rendered. Then a CS patch came out and the players weren't visible until very shortly before they would become visible had we not had the uhh... transparency mode on haha.
Yeah that's the same deal as r_drawothermodels, crudely forcing the GPU to render objects that are behind other objects would give you a partial wallhack, but that wouldn't disable the engines occlusion culling so once it determined that an object was definitely no longer visible it would skip drawing it altogether, and you would stop seeing it through walls. "True" wallhacks were able to override the clients occlusion culling and reveal everything, so to defend against that the occlusion culling needs to happen on the server, which came much later.
I can't help but envy the engineers in this article as I sit here, procrastinating my fulltime career as a glorified CRUD engineer with complementary soft skills.
Maybe the grass is always greener, but it just sounds like an incredible opportunity for anyone working on the Valorant team. You get to solve challenging, interesting problems that hundreds of millions of users will benefit from, that's just so cool to me.
I generally agree that "the grass is greener" is common for IT people I think. It's a huge field, and you hear about people doing cool things all the time.
But on the flip side, that one cool thing might be the ONLY thing they do, all day, every day, which might not be as cool after 6-10 years.
But I do think your point about benefitting large numbers of people is a strong motivator..that's partly what academia relies on to keep employees as below-market rates -- the mission oriented drive to make the future better. I don't mean to poke at that issue specifically, but it's a great example of how teachers, etc. will continue to work for pennies as long as they can afford it (it's almost abusive).. but that drive is a critical part of their personal happiness
> But on the flip side, that one cool thing might be the ONLY thing they do, all day, every day, which might not be as cool after 6-10 years
Yeah, sometimes I think I'd like to be a systems engineer and work on databases or similar but then I think about that being 100% of my work and realize I don't desire that kind of job.
This stuff seems fun until you realize it means you're choosing to specialize in something pretty niche. I prefer being a product engineer working on web stuff for now until I find something worthwhile specializing in.
Riot has a notoriously toxic work environment, and recently has had massive rounds of layoffs[0]. And it’s extra bad for women, like at most game studios.
One of the things about a blog like this is that this isn't one persons job; it's the equivalent of something like this [0]. It's a design tenet of the application, and an engineering culture of the team.
You're ever chasing the mouse. If it's not some hacker, it's some bug. If it's not a bug than its a feature and then all three.
Directors want results, 24 hour of stressful debugging to discover why some new person can now shoot through walls, creating a patch, replicating and ensuring it doesn't exploit or nuke any other feature and pushing the patch out without effecting gameplay is stressful. Partly why Overwatch had real-time patching abilities on each game.
You don't get downtime, no sitting on tickets. Hacking costs revenue and you got to ensure your work is correct.
While playing FPS', I wondered why corners were a point of contention for me, both in dying or killing, and now I have additional insight.
I can sit at a corner and die from an oncoming enemy, or I can take the corner and take the enemy. I assumed it was all due to my own biological perceptual system, and now I see the synchronization would be giving each player an advantage depending upon who's overtaking the corner.
Gunplay in FPS games like CSGO and Valorant are all about angles. Almost all of the action happens in the split moments of contact, as players transition from not seeing each other to seeing each other.
So in that sense, corners are pretty much a point of contention for everyone at every level since most of the game is based around taking and holding corners/angles.
The peeker vs holder relationship is pretty interesting to analyze as there is more to it then just server sync. But how both players try minimize/isolate the amount of angles they attack/are exposed at any given point in time.
As well as use their general game knowledge to make predictions about where the enemy is most likely to be in a certain situation. Prioritizing their attention/crosshair on those angles while ignoring the others.
I think this what makes it fun. Theirs a lot of thinking + buildup/anticipation for the moment of contact between players which is then usually resolved in <1s. And since the dead player has to then sit out the round it feels meaningful.
Staircases too. There's one of the more respected instructors up near here in northern Oregon who does civilian tactical training stuff. Which is not my cup of tea, but it is interesting listening to the guy rant. He has what appears to be a deep seated fear/loathing for staircases.
They suck all around. Going down, your legs are exposed, then your chest, then you finally have the ability to see the next floor, so your gun and your eyes don't get down fast enough to be able to process the bad guys in time before you get filled with holes.
Going up, your head is exposed, so that becomes the primary target, when people typically aim for center mass. But center mass isn't visible immediately, so head takes all of it. On top of that, the whole 360 degrees of the next floor becomes visible at once, so there's no way to take slices of the room at a time, like you would a doorway.
Staircases are very brutal. But really, room clearing as a whole is the last thing you want to be doing. You can do it completely correct, and still die. Room clearing is a matter of minimizing chances, not eliminating them.
Maybe you implied it, but adding to the 'going up' case, there is bullet ricochet -- also reffered to as skipping or bouncing bullets -- that makes it so that bullets will ricochet out at a shallow angle and ride out the wall or floor, making your head hittable without even aiming at it.
Here is a instructional FBI video talking about it.[0] And a more modern take.[1]
Imagine a handgrenade- with shotgunshells and 6 cameras glued to it. It can trigger the shotgun shells, giving it the ability to "hop" on a vector. It has a primitive friend/foe system (friends are behind the plane it was launched from) all else is foe.
You throw it at the start of the stair-case it hops up, blows the door open, enters the room, finds a target, explodes near it. All in a series of bangs.
I've heard that the stairs in castles all spiral the same direction so the disadvantage from being higher up on the steps is counterbalanced by having more space to swing your sword arm without blunting it on walls or the steps. Or at least if you're right-handed.
They taught us this in fencing as a side discussion (like during a break). Apparently it isn't true, as other commenters pointed out.
The button side of jackets thing is true though, except usually also told wrong. We're often taught in fencing that men's jackets button left over right so that a sword drawn by a right handed person doesn't fuck up your own clothing. That's also wrong, but close: men's jackets button left over right because you traditionally put your shielded side forward, your left side, and you wanted any armor pieces to overlap so that there's no holes to get caught in if you're poked from the left. Which is a stance backwards from later style one handed fencing. The not messing up clothes on the draw of a sword is just extra bonus from the original reason.
If I recall correctly, that theory is challenged by: (A) there isn't a predominant direction to such staircases and (B) if enemy soldiers are in your staircases, it's all too late anyway.
Being further from the corner than your opponent also gives a big advantage since for any given angle as you peek you will see more of your opponent than they see of you.
The downside to being farther from the corner is that you're much more exposed. Player B only has to take 1 or 2 steps to take cover from Player A. Player A needs to run much farther to take cover.
Keep in mind that you're wider than the single spot you see from, it's possible for your opponent to see part of you before you can see your opponent at all. Who can see the other first depends on who is farther from the corner, as they see past it at a shallower angle.
I like to think of it as making sight-lines versus breaking sight lines.
And in fact, both people can be making one at the same time, but the trick is that they are a slightly different lines because each client has a slightly different idea of where both players are.
It's sort of neat that the same FPS networking fundamentals have stood the test of 25 years of game time, and it's a good historical lesson for those entering the industry or hobbyists to just study what architecture came out of Quakeworld.
Basically the only anti cheat that is somewhat successful. Secure multiplayer matchmaking has its price unfortunately.
But any process your user runs can read memory of other processes of the same user, Windows provides an API for it. So its not just kernel stuff that is scary.
Can also stick to games that use good old dedicated servers with active admins that ban cheaters. Its the new matchmaking type of games that makes anti cheat software a requirement.
Its not bulletproof, but nothing really can be on the PC platform as it is today. Which is why I said somewhat successful, as no other anti cheat comes close.
it's not really a PC problem, its an attestability problem.
Even with kernel level nonsense a cheat can be made technically undetectable by essentially making a 'player robot' that uses a camera and CV to watch a screen and traditional mouse/keyboard interfaces. It'll only be detectable via player-action/movement heuristics and 'best guesses', and it needs no hooks into software or OS.
This type of 'bot' is going to explode across consoles and the like soon given the focus on AI with general purpose reasoning; you can already easily implement this style of bot against slow paced games like mahjong or poker inferring against big clunky slow image-inferring LLMs; given how easy most coding LLMs can spit out the code for specialty CNNs when knowing the criteria we're going to see this kind of cheating get a lot more accessible.
And I mean this practically. Go talk to Claude or ChatGPT about making a bot in this fashion for just about any slower paced deliberate-action game -- it's shockingly good at doing so with very little user input. Provide it with a few screenshots of the interface and it can even automate finding the bounding boxes or whatever other thing-of-interest you need to coordinate purely by description -- the barrier to entry for game cheating is lower than i've ever seen it , and that's one of the things I did for a living for a portion of my youth.
Its a PC problem because process memory is not protected from other processes or the kernel. Kernel anti cheat completely stops userspace cheats from working at all. It has problems with cheats abusing drivers or DMA based cheats, and of course hardware that only acts on your monitor output and adds input to your mouse.
Your argument seems to be that it is not bulletproof therefor we shouldn't use it and allow simple userspace cheats like cheatengine to work again.
>barrier to entry for game cheating is lower than i've ever seen it
Matchmaking rather than finding opponents/matches on IRC and private servers is also a big factor modern cheating.
People are locked in to the game with you in Valorant or CS, they are penalised for leaving and thus can be held hostage by someone who is blatantly cheating.
In older times, you would just quit and find another match, or if it was a community public server they will get banned.
Some of Valorant's game servers are hosted in a data center very close to my house. When I played, my ping was in the single digit milliseconds. Some people accused me of being a Riot employee.
Of course, that low ping didn't prevent me from being utter trash. My K/D ratio was usually around 0.3.
Come to think of it, seeing the network buffering they perform, I wonder if having such low ping actually gave me a disadvantage when peeking towards someone with a 30 ms ping?
Back in the early days of the internet when it was mostly connecting to universities, there was a popular PK mud hosted at the university I went to. So I had a massive advantage in that game. Game hackers weren't really a thing so people just assumed I was amazing at the game.
Most likely not, because modern game engines take a timestamp of your command packets and do relativistic calculations on when you clicked versus another player, and how that affects hitscan and projectile-based weapons.
Those timestamps are compared to a window against the server's and other players'.
Very strange that no one mentioned Valve’s papers on this which covers as far as I can tell most points here, nor “I Shot You First” which if I remember right was Halo’s version.
There is a HvH (Hack vs Hack) community in csgo. Private servers (mostly) without Anti-Cheat and while there is some skill to it, it's mostly a competition between different cheat programs. I really recommend you to watch some YouTube Videos about it, there are some crazy cheats and even counter measures built into cheat clients to protect against other cheats.
I find it kind of weird that this is framed like a novel solution and discovery process when this has existed since the early 2000’s in other tactical FPS games.
Did the author do no research into the competition/precursors before going down this path?
Riot has a habit of doing this. See their "technical blog" about their reworked League Client where they basically reinvented Electron but worse. The client is still heavily complained for its poor performance and stability by the playerbase years since.
I don't disagree with you, but Valorant is the first and only FPS played by millions of people, so I can see why its presented this way. The vast majority of the audience has no prior art context, so Riot can get away with it :)
I have to assume that what you mean by this is "for millions of people, Valorant will have been their first and only FPS."
That may well be true! The knee-jerk response you're getting from others is because your statement sounds like you're saying "no other FPS game has ever had a million+ players."
Pretty sure overwatch got millions in its hey day. Not to mention call of duty, counter strike and the many clones of COD/CS. Though I'm not sure if the likes of Free Fire concern itself too much with the purity of competition.
I wonder if pay to win elements reduce the number of cheaters? Some of these CS clones have equipments you can buy in the lobby that offer smaller hitboxes, higher health, better gun etc. Would that offer enough convenience/highs for these people to not stoop to hacking?
Commenting to agree, even tough you are downvoted.
Games are really magic, especially on bespoke engines, not slapping Unreal on some assets but making something like God of War 2 or FFXII run on PS2. Or yes online games.
https://technology.riotgames.com/news/demolishing-wallhacks-...
Not many first person games have that "fog of war", it turns out to be quite hard to implement well.