This is so funny because rust has one of the worst cheating situations and majority of their players are windows users, and theres lots of games that have anticheat that allows linux and have notably less significant cheating problems like marvel rivals. in reality rust doesn’t take cheating very seriously because if they did they would have more server side software that detects illegitimate behaviour like tons of other games do successfully… even most popular Minecraft servers have better functioning anti cheat that is completely server side than rust has while getting kernel access to your pc. its pathetic and lazy development tbh and this entire post from them reads like such extreme cope…

  • Nibodhika@lemmy.world
    link
    fedilink
    English
    arrow-up
    13
    ·
    14 hours ago

    Your head is in the right place, but your example is very wrong. First, unless it’s a very slow projectile that’s not how bullets work in games, second movement takes place in the server, to do so in the client is nuts. Client sends inputs, sever moves, gives back player location, client adapts. While waiting for a reply the client simulates the movement expected, but sometimes the server doesn’t receive the package and so tells you you haven’t actually moved and you teleport back.

    What’s usually not done is calculate vision cone, instead the server gives you everyone’s position and you calculate whether you can see them on your GPU. Which is why if you can get access to the GPU pipeline you can tweak it so it shows you objects through walls. If you move the LoS calculation to the server you completely eliminate wallhacks, however that is very expensive to do (although ray tracing GPUs might provide a good approach in the future)

    • WolfLink@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      2
      ·
      7 hours ago

      second movement takes place in the server, to do so in the client is nuts.

      For the vast majority of games, it’s in between, because the latency if you waited for the server every frame you moved would be way too much.

      It’s something like you have a local model of where everything is, and send updates to the server of where your local model says your character (and whatever else your inputs affect) are. The server receives that data, potentially validates it (server side anti cheat checking that your movement makes sense, similar to the OP post, for example), and then forwards that info to all players. The client side positions of everything are updated based on that info. Usually some interpolation is added to make things move more smoothly.

    • muusemuuse@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      2
      ·
      8 hours ago

      Yes I meant movement happens server side, which is why this example cheat couldnt work. it would be telling the server what to do, and the server could always say “no, fuck off, thats not something you were coded to be able to do”. Sorry if I didnt convey that clearly.

      I also understand the client has to draw things faster than the server can respond “okay, I moved you 12 inches to the left” so it guesses the outcome and if the server later responds with “denied, no teleportation in rust” it will just snap you back to the last position the server approved of.

      My point is anticheat client side suggests bad code server side.

      • AAA@feddit.org
        link
        fedilink
        English
        arrow-up
        1
        arrow-down
        1
        ·
        4 hours ago

        Yeah but this approach makes the game stutter and/or sluggish for everyone. Client side computation isn’t just cheaper, it also ensures that you have a smooth gaming experience.

        As someone else said, most games do a middle way here. Compute on client side. Verify on server side.

          • AAA@feddit.org
            link
            fedilink
            English
            arrow-up
            2
            arrow-down
            1
            ·
            4 hours ago

            Well, first off: Money. The more you verify, the more it costs you to run your game’s servers.

            But also because you cannot detect every kind of cheat via server side anti-cheat. How does a server detect if my flick-headshot (which won this crucial round) in counter strike was luck, or if I had help from a program running on my machine? Maybe it didn’t even make me react faster, just nudged the cfosshair another few pixels to ensure the hit.

            Of course you can run statistics, and can flag outliers. But it’s no proof. If someone always cheats you won’t catch them, while you will flag someone have a good day (or a friend playing on their machine).

            • Credibly_Human@lemmy.world
              link
              fedilink
              English
              arrow-up
              1
              ·
              33 minutes ago

              Well, first off: Money. The more you verify, the more it costs you to run your game’s servers.

              This sounds like a super clever argument, until you think about the scale.

              If the cost to host a game went up by 50% it probably wouldn’t make it into an investor call. Its a small price. It could be 10x as much and still be completely affordable to many games companies.

              How does a server detect if my flick-headshot (which won this crucial round) in counter strike was luck, or if I had help from a program running on my machine?

              How does the client detect that when running said cheat on another machine? It doesn’t. The current solution isn’t perfect either.