News for hackers. Stuff that matters.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by cdata on Sunday July 18, 2021 @02:23AM (#27871100)
Which games do you play that require anti-cheat schemes?

The last time I checked, many such games explicitly do not support running in VMs and you risk being banned by obfuscating that you are running the game in a guest OS.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by zaptheimpaler on Sunday July 18, 2021 @02:30AM (#27871116)
Ive played PUBG, COD Warzone, Apex Legends, Quake Champions, maybe a few others. Of course it depends on the game but i think the perception of how many games don't work under VMs is a bit skewed.

TBH every thread like this has the “but what about anti-cheat?” post which makes it seem like a big problem but i think only a tiny minority of games don’t work under VMs.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by nottorp on Sunday July 18, 2021 @09:09AM (#27872624)
Only online multiplayer shooters (or whatever they call them these days) come with anti cheat, I think.

So... 5% of the available titles?

Most are financed by IAPs so I just stay away from them anyway.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by cdata on Sunday July 18, 2021 @03:19AM (#27871276)
Thanks! That is more than I expected.

FWIW I tried to install Valorant in a VM recently (because I'm tired of installing the root-kit anti-cheat on my main PC in order to play it). It simply fails to launch the anti-cheat, and so doesn't launch the game.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by gnif on Sunday July 18, 2021 @03:21AM (#27871294)
Yes, unfortunately Valorant is one that blocks VM usage... not that it has helped them any.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by egeozcan on Sunday July 18, 2021 @04:02AM (#27871458)
Anti-cheat measures end up blocking mostly the well-meaning players.

I know it's sometimes too costly, but game studios should invest more on server-side security measures and mostly distrust the clients.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by chrisseaton on Sunday July 18, 2021 @08:42AM (#27872441)
But distrusting the client doesn’t solve the problem. If a user can see through a wall locally how can ‘distrusting’ anything fix that? What is there to distrust? All inputs are genuine.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by Sebb767 on Sunday July 18, 2021 @09:25AM (#27872717)
> If a user can see through a wall locally how can ‘distrusting’ anything fix that?

The fact that the client can remove the wall and see something behind it is due to the fact that the client is trusted to do the hiding. An untrusted client would not receive the enemy position until the enemy is visible. This, however, comes with the drawback that the server needs to do the culling - That's why pretty much nobody does it right now.

Aimhacks would still be possible, of course, but client-side anti-cheat can't prevent those either.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by wildbook on Sunday July 18, 2021 @01:05PM (#27874544)
Valorant specifically actually does this to a degree, and there was a quick article written by one of their anti-cheat developers that roughly explains their approach.

https://technology.riotgames.com/news/demolishing-wallhacks-...

Re:Looking Glass: Run a Windows VM on Linux in a window with... by chrisseaton on Sunday July 18, 2021 @11:21AM (#27873662)
Right it’s not a realistic suggestion as not even the client does it in software!
Re:Looking Glass: Run a Windows VM on Linux in a window with... by CyberDildonics on Sunday July 18, 2021 @01:47PM (#27874848)
Why do you think that? The server needs to at the very least trace a line for a shot. There is nothing difficult or slow about that. Before you say that it is done with a z-buffer or something similar, think about third person camera angles or how older games did the same thing. You might want to pull back on being so certain if you don't have experience with game engines or graphics.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by chrisseaton on Sunday July 18, 2021 @04:18PM (#27876307)
> Why do you think that? The server needs to at the very least trace a line for a shot. There is nothing difficult or slow about that. Before you say that it is done with a z-buffer or something similar, think about third person camera angles or how older games did the same thing. You might want to pull back on being so certain if you don't have experience with game engines or graphics.

But... it is done with a z-buffer.

If an opponent is obscured behind a nearby pillar or something, that's not going to be culled in software - that's done by the hardware z-buffer as part of the render process.

You can see this for yourself if you look at a game being run with wireframe rendering. You'll see it's in the same render node so it's still rendered - it's just obscured by closer geometry. And it's how some cheats actually work - they basically turn the wireframe back on!

'Tracing a shot' is casting one single ray.

For example read this article someone else linked https://technology.riotgames.com/news/demolishing-wallhacks-... and look at the last animation.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by CyberDildonics on Sunday July 18, 2021 @05:48PM (#27876995)
You are conflating needing information about player position with visibility of individual polygons.

Also you are forgetting that you just said that line of sight was done in hardware and you didn't explain how that would work for a server testing if shots actually hit.

> You can see this for yourself if you look at a game being run with wireframe rendering. You'll see it's in the same render node so it's still rendered

What does this even mean? What is "it" here and what is a "render node" ? There are hierarchies of transforms and players are going to be separate from the environment. This doesn't actually mean anything.

> it's just obscured by closer geometry. And it's how some cheats actually work - they basically turn the wireframe back on!

Yes, you are restating the context of what people are talking about, not what is actually being talked about, which is the timing of when the server should send visibility information, which is what your link is actually about.

Your link is actually directly contradicts what you are saying since it uses both an expanded bounding box based motion extrapolation and precomputed visibility, neither of which has anything to do with a z-buffer.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by chrisseaton on Monday July 19, 2021 @02:51AM (#27879920)
Look at the last illustration in that article.

Can you see how the red outline of the opponent appears while they're obscured behind the pillar?

When that red outline appears it's showing that the opponent is now being rendered, and that the z-buffer is being used to obscure them from behind the pillar.

This discussion is about how to make the red outline not appear until the opponent is actually visible.

The article goes into lots of ways to make the red outline appear later, but it still appears before the opponent is actually visible on screen.

That's the issue that people want to solve.

Consider an example of an opponent with just one pixel of their gun visible around a corner. How do you send that information to the client without telling them there's an opponent there, so that the user has to actually see the pixel? You'd have to just send that one pixel, right? Now we're talking about rendering server-side!

Re:Looking Glass: Run a Windows VM on Linux in a window with... by CyberDildonics on Monday July 19, 2021 @03:28PM (#27886393)
" When that red outline appears it's showing that the opponent is now being rendered, and that the z-buffer is being used to obscure them from behind the pillar."

Yeah, that's game rendering in the engine. That's visualizing something, not illustrating how the server is doing it. Did you actually read and understand your own link?

"That's the issue that people want to solve."

No it isn't, you misunderstood your own link to the point that you have it backwards.

The server not rendering the entire game from each person's perspective every for every player every frame.

The problem is being able to see every player walking around all the time.

Think for a moment what would happen if the server actually had perfect visibility - by the time you can see them it is already too late. You should be able to see them and then the server starts sending you a position. By the time you know you should see them, you should have already seen them and the other player pops into frame.

That isn't even buried in your own link, it's at the very top.

"Consider an example of an opponent with just one pixel of their gun visible around a corner. How do you send that information to the client without telling them there's an opponent there, so that the user has to actually see the pixel? You'd have to just send that one pixel, right? Now we're talking about rendering server-side!"

This is gibberish and is a lot like Frank Abignail trying to BS pilots. Once again your own link explains why this is nonsense from a lot of different angles, did you even read what you linked or did you just look at the pictures? It explains everything clearly.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by chrisseaton on Monday July 19, 2021 @03:47PM (#27886574)
> This is gibberish and is a lot like Frank Abignail trying to BS pilots

Why are you so abusive in your replies? What causes you to talk to people like this?

> You should be able to see them and then the server starts sending you a position.

Yes that's what I'm saying you'd need for an untrustworthy client. But even that's not quite good enough - if you can 'see' them but it's just one pixel that the user might miss - should the client really get the full location information? It could highlight the enemy from that when a player would likely miss it otherwise.

> The problem is being able to see every player walking around all the time.

No that's a weaker version of the overall problem. If you give the player's location to the client when the player may not actually be able to see them then you're relying on a trustworthy client.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by CyberDildonics on Monday July 19, 2021 @05:04PM (#27887235)
I can see we are at the "you're being mean to me" stage in the discussion instead of the "I should not spread misinformation then doubled down on it" stage. No one is abusing you and you aren't a victim when someone wonders why you're misinforming people. If what you are saying doesn't add up (temporal chicken and egg, partial location information etc), focus on that instead of attacking people that are giving you the feedback that what you are saying doesn't add up.

You originally said that a server would have to render the game and use the z-buffer to do any occlusion culling, but this is not only not correct, it is contradicted by something you yourself linked. Why not just admit that this was a guess and not from experience or research into how game engines work?

"But even that's not quite good enough "

You are the only one saying that. Going from seeing every player on the map all the time to only seeing players a few frames before you would have seen them anyway is a huge leap, which is again, what people are talking about and exactly what you linked.

"should the client really get the full location information? "

What partial location information are you envisioning here?

Again, focus on backing up what you originally said first instead of trying to shift the goalposts from how servers would "have to" do occlusion culling.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by chrisseaton on Monday July 19, 2021 @05:41PM (#27887574)
I don't agree - but I think you're really just trying to get a reaction by being as aggressive and contrary as possible rather than actually going on what I've written, so I'm going to leave you to it from here.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by CyberDildonics on Monday July 19, 2021 @08:44PM (#27888957)
Parent: "An untrusted client would not receive the enemy position until the enemy is visible. This, however, comes with the drawback that the server needs to do the culling - That's why pretty much nobody does it right now."

You: "But... it is done with a z-buffer. If an opponent is obscured behind a nearby pillar or something, that's not going to be culled in software - that's done by the hardware z-buffer as part of the render process."

Then I explained why this doesn't make sense on the server as a generalization and isn't necessary from a technical angle.

Then you ignored that you were both snarky and wrong, provided your own source which directly contradicts what you originally said and ultimatly called yourself a victim of aggression when I pointed this out.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by weberer on Sunday July 18, 2021 @10:24AM (#27873156)
Then the server should never send them information on what's behind the wall.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by lbotos on Sunday July 18, 2021 @11:22AM (#27873669)
In Counter-strike there are footstep sounds with spatial audio. How can the server not send that info to me in a way that won't reveal the player's direction? hearing players coming before you see them is a huge part of the game.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by chrisseaton on Sunday July 18, 2021 @11:19AM (#27873644)
You want to render all graphics on the server? I’m not sure that’s really a tractable suggestion.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by CyberDildonics on Sunday July 18, 2021 @01:39PM (#27874788)
Why would that be necessary? You realize the server already has to do a line of sight calculation to determine if a shot hits right?
Re:Looking Glass: Run a Windows VM on Linux in a window with... by chrisseaton on Sunday July 18, 2021 @04:20PM (#27876322)
Think about many times a second you have to trace a shot.

Now think about how many times a second you'd need to trace from every pixel on the screen to every part of the geometry on every opponent in order to check if it was visible or not to see if a player was legitimately able to view any part of their opponent.

For example read this article someone else linked https://technology.riotgames.com/news/demolishing-wallhacks-... and look at the last animation.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by CyberDildonics on Sunday July 18, 2021 @05:54PM (#27877031)
If you actually understood your own link you would see that there is no reason to trace every pixel on the screen when you can make a bounding box that covers motion and trace the vertices.

Anyone familiar with game engine programming would never consider what you are saying. That link is a more in depth version of what I just said, ray casts are being done on the server for visibility and have nothing to do with rendering the game to do it. It is literally demonstrating that they are already doing what people were wondering about.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by chrisseaton on Monday July 19, 2021 @02:52AM (#27879922)
A bounding-box is something we'd call an over approximation.

Using an over-approximation causes the opponent's location to be revealed to the client even when the opponent isn't quite on screen yet, requiring the client to be trusted to not show this information early, which is what people in this thread want to avoid.

That's the whole point of the discussion.

This is what the article is showing - can you see how the red outline of opponents appears early, and how the client is being relied upon to hide them until they're actually visible? That's what people don't want.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by CyberDildonics on Monday July 19, 2021 @03:19PM (#27886308)
lol, who is "we" in this sentence?

You for some reason are ignoring what you originally said to focus on something else you are seem to misunderstand the context of.

What you originally were saying was that you would have to render polygons in hardware for the server to have any idea about occlusion, which the link that you gave not only disproves, but assumes that no one would think in the first place.

The whole point is that wall hacks let you see people running around the whole level and it is just a matter of work for the server to only send positions a few frames before you are going to see a player.

Everyone else is on the same page, but you think the player position being sent right before they appear is a problem? That's the solution in your own link.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by chrisseaton on Monday July 19, 2021 @03:44PM (#27886555)
> The whole point is that wall hacks let you see people running around the whole level and it is just a matter of work for the server to only send positions a few frames before you are going to see a player.

...and when an untrustworthy client gets that info it can highlight the opponent just before they come into frame, or highlight them fully even when they're mostly concealed, giving you an advantage.

That's the point of the thread. That's what people want to avoid. That's what the link wants to avoid, and says it doesn't manage to quite do and explains why it's hard.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by pbhjpbhj on Sunday July 18, 2021 @09:27AM (#27872732)
Question, why can users see through walls locally, seems like there should be some sort of occlusion? I guess it's too slow to calculate and causes too much server-side processing?
Re:Looking Glass: Run a Windows VM on Linux in a window with... by wolrah on Sunday July 18, 2021 @10:49AM (#27873408)
> I guess it's too slow to calculate and causes too much server-side processing?

Bingo, game servers need to be as lightweight as possible because whatever calculations they have to run need to run per player per tick. Detailed occlusion calculations would be impractical, so at best it's very rough. And of course you don't want a situation where an opposing player isn't even seen until they've already shot you, so it needs to err on the side of visibility.

Every latency-sensitive online game has to make a bunch of tradeoffs between performance and security, and performance is generally more important.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by Cloudef on Sunday July 18, 2021 @05:39AM (#27871726)
The anti-cheat systems end up really just being more menance than use. Tons of money burned on something that cheaters will get around anyways.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by pbhjpbhj on Sunday July 18, 2021 @09:30AM (#27872750)
It's one of those 'keeping honest people honest' things, of it were even easier I think even more people would do it?
Re:Looking Glass: Run a Windows VM on Linux in a window with... by Cloudef on Sunday July 18, 2021 @11:15PM (#27878909)
They keep honest people from playing the game, unless you have clean install of windows with no blacklisted drivers or software installed. Not to mention how these things basically hook themselves to critical system APIs, acting more like a malware. Valorant is probably worst example of this. Community run servers are the best form of "anti-cheat".

The problem is that developers treat PC like a locked console. This is just a completely fruitless uphill battle. PC gives power to its users, while consoles give power to the developers. PCs are designed to not sandbox or lock you, you can do anything with them without having to break its sandbox first. The mindset with the developers that deploy intrusive anti-cheat is to have the users locked in so they can ship their centralized server model and hope they can deal with the hopefully lesser amount of cheaters themselves, instead of giving the moderation power to the users themselves.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by ShinyRice on Sunday July 18, 2021 @04:53AM (#27871616)
If you enable nested virtualization in your host and shove Valorant in a VM with Hyper-V (through what I believe is a feature in Windows, but forgot the name) Valorant should actually run. Or at least it did a few months ago, not sure if it does work now. Worth a try.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by gnif on Sunday July 18, 2021 @02:28AM (#27871111)
Most games work just fine, just a few odd ones that decided to block VMs don't such as Tarkov.

Known to work without issue are titles such as

  * PUBG
  * Battlefield 1/3/4/5
  * Titanfall 1&2
  * Arma 3
  * 7 Days to Die
  * Ark
  * Fortnite
  * Apex
  * Halo: The Master Chief Collection
  * Star Wars Squadrons
And many many more.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by gigatexal on Sunday July 18, 2021 @02:35AM (#27871132)
The only games I play are Doom Eternal and Starcraft 2 — by chance do you know if those work or if there’s a list somewhere?
Re:Looking Glass: Run a Windows VM on Linux in a window with... by gnif on Sunday July 18, 2021 @02:46AM (#27871166)
No idea about doom, but Starcraft 2 works for me fine.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by himinlomax on Sunday July 18, 2021 @03:36AM (#27871340)
SC2 works almost perfectly under Wine/Proton.

Only issue is that a few custom maps crash, and there's a weird, minor performance issue at some point in the LOTV campaign menus (but not the game itself). Haven't had an issue in a ladder game in years. And I play SC2 a lot (too much).

Re:Looking Glass: Run a Windows VM on Linux in a window with... by gnif on Sunday July 18, 2021 @03:49AM (#27871409)
"Almost" is the key word here, under a VFIO VM, it's 100% flawless.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by zaptheimpaler on Sunday July 18, 2021 @04:06AM (#27871474)
I recently finished the single player campaign on Doom Eternal - that worked perfect, though i havent tried multiplayer.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by unholythree on Sunday July 18, 2021 @03:49AM (#27871407)
Really, is that why Tarkov drops me when I try to start a match? At least CS:GO told me their anti-cheat hated my setup (Windows 10 in a Xenserver VM) and I was able to get a refund.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by gnif on Sunday July 18, 2021 @04:02AM (#27871456)
CS:GO works fine in a libvirt/KVM VM last I checked. As for Tarkov, see: https://mobile.twitter.com/TheBattlEye/status/12890276721867...

Note that the game vendor selects what features they want to apply to their titles that are available. BattlEye allows you to stop people using VMs, if the game vendor opts in to this stupid feature.

Re:Looking Glass: Run a Windows VM on Linux in a window with... by formerly_proven on Sunday July 18, 2021 @06:01AM (#27871806)
Does running CS:GO in a VM impact trust factor? Trust and prime are pretty much the only thing to reduce cheaters encountered in your matches since CS:GO does not have a working anti-cheat.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by isatty on Sunday July 18, 2021 @06:09AM (#27871839)
Doesn’t CS:GO run on Linux? I exclusively play dota 2 on Linux and it performs better than in Windows imo.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by lbotos on Sunday July 18, 2021 @11:24AM (#27873681)
it does, but you can only play matchmaking AFAIK, ESEA and FaceIT don't support linux for their anti-cheats.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by isatty on Sunday July 18, 2021 @01:31PM (#27874728)
Interesting, I didn't even know you had external parties providing league based (I'm guessing) match making. All matches in Dota 2 run through the official valve coordinator or are pre-made lobbies. There is a LAN only build iirc, but not widely available to the public.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by PUSH_AX on Sunday July 18, 2021 @06:03AM (#27871813)
Likely. There were some hacks in the last year or so that required looking glass.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by carlhjerpe on Sunday July 18, 2021 @06:50AM (#27871979)
Add Overwatch and Trackmania 2020 to this list too, they both work flawlessly.
Re:Looking Glass: Run a Windows VM on Linux in a window with... by Google234 on Sunday July 18, 2021 @02:25AM (#27871108)
For EAC, they require a variety of signals to ban someone (unless it’s a obvious thing like detecting a known cheat.) An honest VM setup that doesn’t obfuscate probably counts as one potential signal that you are cheating, an obfuscated one that they are able detect might be a stronger signal.