The best way to prevent cheating is by streaming games. Game streaming services are the future of multiplayer games. Edit: I mean cloud gaming like OnLive, not Twitch.
Aren't there massive video latency issues with this? People spend tons of money to get the absolute best frame rates and monitor response times, I can't imagine hardcore gamers wanting to have tens of ms additional latency in their gaming.
You can have real-time games whose mechanics are designed around latency. My game is one example. In fact, I would assert that for now, you have to design around latency in real-time multiplayer games. Until round-trip latency for your entire userbase is below 40ms, it will be an issue.
I'd say 30ms, not not 40. Because a single frame is 16.6ms, so 30ms round-trip would bring one-way down to below one frame of latency (potentially with a small amount of jitter).
It sounds surprisingly high, but a lot of the population won't notice 40ms round trip. Some of it will know. It also depends on the game's mechanics. Not all games are FPS. Not all games have action significant down to one frame. Some of my favorite real time games involve making decisions about once every 5 seconds which will result in a turning point in another 15 to 30 seconds which will get you killed or leave you victorious.
> I would assert that for now, you have to design around latency in real-time multiplayer games.
Yeah but I believe they mostly do that with client-side rendering using the graphics card, and then reconciling that with what the server side "thinks" things should look like.
That sort of thing wouldn't be possible if you're just working with a video stream.
Doubtful. It just so happens that a well known intro to neural nets focuses on controlling GTA using only on screen data and simulated keyboard inputs. That basic principle is valid for any game and can be improved to an unlimited extent.
Furthermore, approaching the endpoint as a dumb video terminal is very limiting, almost any real time 3d game will have visible latency on almost any internet link. At the very least, mouse movement needs to be local, menu navigation, ideally also panning in response to user input. That means some game state will be available for a cheat.
Essentially, my game system is the low tech version of this. The game is just a dumb terminal for displaying moving objects, which are syncing to info streaming from the server. It's so simplistic and dumb, we can even enforce Fog of War. When an entity disappears, its tag and move information are simply not sent. The client then diffs it out of the set of visible things.
Any reasonable multiplayer game works like this. They mention it in the linked article: "We don’t share the state of other players if it doesn’t need to be shared, so we can avoid common cheats like “map hacks”. Essentially the client only has the information it needs to show the current state of the game.
The problem is then that the state available to the client (like position of entities) is easily accessible in memory unless you implement some of the countermeasures they describe.
Streaming (as video) makes this harder as you'd then have to rely on visual information only. While this of course is also solvable using CV, it's a lot harder than looking at memory directly.
The problem is then that the state available to the client (like position of entities) is easily accessible in memory unless you implement some of the countermeasures they describe.
Not a problem for my project. If you can't see it, the server isn't sending you anything.
Here would be my solution: Either you don't have headshots, or you make aimbots a part of the game. Publish an API to let users have aimbots. Measure aimbot-ness by speed of aim, and have that status effect another stat, like "shield." ("Cranial shield feedback?") Manipulate that curve, such that the penalty only really kicks in for the truly superhuman.
Now 1) You've motivated the cheat-writing community to try and imitate very good human players, but no better. 2) Your game's mechanics de-emphasize the style of play that would've made aimbots op, making it just a player choice.
Latency to the server will always be higher, but player to player will be lower if server to server on the backend is better. Which has less latency? P2P from California to Europe or latency between streaming servers in California to Europe.
I totally see how streaming - and letting everybody be able to see your stream - would help the cause, but the sheer amount of players make this method quite ineffective. Yes, if it's one individual making good money off it; No, if it's pesky script kiddies ruining the game expierence.... I would think.