Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

in 2017 you should be able to view the entire map imo ;) The cheating part however is true, the limited view creates extra challenges. The best solution is allowing servers to set the desired allowance.


Not sure how this is designed in this game, but if you want to make the game only show a certain portion of the map to clients at a given time, you need to make sure that things that the player should not see are never sent to the client. Otherwise, you are always opening the system up for this sort of "cheating". With the game being open-source, it is easier to do but also with closed-source games, this is what things like "wallhacks" etc are based off: making information that is available to the client visible to the user.


I don't know how you're supposed to do that and maintain acceptable performance for scrolling the screen around the battlefield. It's one thing for a game like DotA 2 to only send position updates for units that aren't obscured by fog of war, it's quite another to constantly keep track of the scrolling screen of the player and only send them the objects in that rectangle.


This is unlikely to be based on a camera rectangle. Fog of war, sure, but in most rts games the camera can jump immediately from a minimap click. Players would complain about popping and its doubtful a developer would value cheat prevention over standard experience.


warzone has a fog of war, i think people are confusing zooming out with that?

If you zoom out you will still only be able to see map area you revealed and in that map area you would only see enemy units if your units could observer an area.


No. I'm talking about the unit position data which is sent from server to client. If the designers of the game intend for you to have a restricted view of the battlefield that you must scroll around actively and a mini map showing unit positions within the visible range of your army, they are consciously making a choice to restrict the way in which your game client views the data sent to it. By modifying the client to allow you to zoom out, you're bypassing this restriction and gaining a wider view of the same data.


OK i see what you mean, i wouldn't have considered zooming out like that cheating.


SC2 does it not problem


Not true. Map hacks have existed for SC2 since beta. They would not be possible if this technology was used.


What do the map hacks accomplish? Can you see full unit information across the map? I doubt this is the case, except for the game host. For clients, I'd be surprised/disappointed if this were true as it is not costly to filter the information from clients if FoW visibility has already been calculated.


My guess is that the main technical problem preventing this in SC2 is related to the game's replay-saving system. If you have only partial data, your client can't include the data from the opponent's perspective, which makes the replays suck. Theoretically you could generate the replay server-side but it would be resource-intensive without a costly technical overhaul.


Yeah, I'm surprised they didn't design for this. Typically replays (in any game) are a log of initial state and then player input commands, rather than complicated state streams. Input commands are simply replayed in the simulation. It seems possible to keep the master log of input commands and then simply replay the simulation on a client during replay. With this design you could filter inappropriate information from each client during gameplay but have full replay information.

I'm sure there are good reasons why the design in SC2 is as it is, but this was surprising! Thanks for the info.


> Can you see full unit information across the map?

Yes. The engine works by syncing the entire game state between all players (and observers, which in tournaments can become an annoying issue) and all clients have the same information.


Interesting. I'm surprised they took this approach.



Wow, that is crazy! Thanks for the info.


While modems may be dead and buried, Carmack's response regarding wallhacks to reading ESR's essay "The Case of the Quake Cheats" in '99 still applies:

>With a sub-100 msec ping and extremely steady latency, it would be possible to force a synchronous update with no extra information at all, but in the world of 200-400 msec latency [and] low bandwidth modems, it just plain wouldn't work.


Most RTS games are simulations, so the client has to have the enemy unit positions in order to conduct its local simulation. In this case the best defense against map hacks (assuming it's closed source) is frequently updating the game, and messing around with the underlying unit data structures or systems each time there's an update. A map hack isn't very effective if it breaks every week or two on a regular basis, requiring more reverse engineering effort each time.

One notable exception to the local simulation model is Planetary Annihilation, which uses a traditional client/sever model as far as I'm aware.


Changing the games doesn't really help unless you also change the network protocol as a lot of hacks just inspect the network data steams. This makes it harder to check for at runtime and it is harder to change the network protocols since changes break everybody on the old version.

I think quake cheats got to the point a cheat server would MITM the game and shoot automatically and or auto-aim shots for the user.


Not playing with cheaters is a better solution imo. The code defines the rules of the game. Change it in any way and you're playing a different game.


> The code defines the rules of the game.

You can just as easily say, "the packets sent to the client determine the knowledge the player may have."

And if these two are in conflict, it makes much more sense to defer to the latter, which is a firm, organic, physical concept, then the former, which is plastic and can be changed trivially in a text editor.


A game is played with consent from all parties. Cheating at a game with a small community is like cheating at a board game. Everyone is going to know.


I'm making a different point: this conduct isn't cheating.

The player has the ability to know all that it sent to the client. Choosing to know it is not cheating. If the player decides to take notes, say, on graph paper, about the map so that she is able to have a clearer picture of it, is that cheating?

If not, then how is doing it in software any different?

If "the rules" dictate that the player not know something, then the app needs to not send that player that thing.


By your logic, wall-hacks (changing the wall texture to be transparent in FPSes) isn't cheating?

Macros that allow you to perform actions that are physically impossible for a human to perform isn't cheating?

Exploiting a glitch that causes your opponent to disconnect from the game isn't cheating?

Consulting a chess engine (unbeatable AI) on your phone when playing chess with someone isn't cheating?

Also, moving pieces in a boardgame when your opponent isn't looking probably isn't cheating either?

> If "the rules" dictate that the player not know something, then the app needs to not send that player that thing.

I agree in theory, but it's not always possible - latency is a major limitation in keeping everything on the server-side.


> By your logic, wall-hacks (changing the wall texture to be transparent in FPSes) isn't cheating?

It seems that the philosophy here is constrained by the (real or perceived) connectivity issues surrounding the withholding of knowledge other than that which the player is allowed to know.

Obviously these need to be overcome.

I can imagine knowledge coming in encrypted "chunks," with keys issued only for those chunks within a player's proper domain. I can also imagine other solutions.

But transposing an unrelated theory of mind ("the code of the version I'm playing constitute the rules for you") seems untenable, inorganic, and in arguably insufficient defined in the first place.

So yes, I don't think that, in this strict sense of how knowledge translates to cheating, that wall hacks are cheating.

> Exploiting a glitch that causes your opponent to disconnect from the game isn't cheating?

It seems to me that the moral responsibility here is on the author(s) - they have slighted the player by instructing, via their code, their disconnection from the game at an improper time.

> Macros that allow you to perform actions that are physically impossible for a human to perform isn't cheating?

> Consulting a chess engine (unbeatable AI) on your phone when playing chess with someone isn't cheating?

At some level, there needs to be a dose of reality in this conversation.

If I'm playing chess against you, across the table, at a coffee shop somewhere, and you are surreptitiously glancing at your contact lens HUD, playing essentially on behalf of an AI, then I guess you are not being very nice or honest to me. This is an interpersonal affront, but it's hard for me to gauge what it means in terms of sport.

On the other hand, if I'm playing chess against an cloaked and anonymous adversary, it might as well be the smartest computer on the planet. And I will lose.

Computers beat humans at some games. That's the reality.

It makes more sense for those of us who wish to continue to evolve here at this moment at the end of time to play games that humans are good at. And there are plenty of games at which humans will continue to trounce computers for the foreseeable future.

> Also, moving pieces in a boardgame when your opponent isn't looking probably isn't cheating either?

This analogy is way off vis a vis the current topic.

It's more like a card game in which I show you my cards and then ask you to forget that you saw them - this is what you are saying my client must do in order to provide a fair experience for you.

> I agree in theory, but it's not always possible - latency is a major limitation in keeping everything on the server-side.

Right, and so some concessions must be made. Here I agree. But once you acknowledge this, I think you also have to give up some of the moral high-horsery that comes with casting judgment about cheating on other players.


When I was younger I was more receptive to this sort of argument. I agree what you are railing about is poor design, but many times that poor security design is done because syncing games is a Hard(tm) problem - especially latency sensitive games. Thus the clients are considered part of the whole "gaming system" - not to be altered - and I'm okay with that. Those are the rules of the game. Expecting game devs to be able to come up with a "fully secure" networking protocol simply means far less games are made. I'm alright with the low security tradeoff.

It comes down to the simple fact that just because you can do something, doesn't necessarily mean you should. You can justify all the hacks you want with "well you shouldn't let me do that!" but to everyone else it's the same thing as playing Monopoly and you punching everyone else to take their money. Yeah, you can do that - and I suppose you'll nominally "win" - but it's really not playing the game we all agreed on so wtf is your point?

You could also build a robot that uses a webcam and USB input for keyboard/mouse to play FPS better than most humans - an interesting project to be sure. But how is that even remotely interesting from a competition sense? Even though no modifications were made to anything, it's still cheating.

Your chess example is someone else playing your opponents moves. That's obviously cheating - I can't have a grandmaster sitting next to me telling me my moves can I? How is this even a question in your mind?


> If I'm playing chess against you, across the table, at a coffee shop somewhere, and you are surreptitiously glancing at your contact lens HUD, playing essentially on behalf of an AI, then I guess you are not being very nice or honest to me. This is an interpersonal affront, but it's hard for me to gauge what it means in terms of sport.

I would imagine the sport would dub that cheating. At the very least, the sport would fall apart if it were permitted (because the individuals playing would no longer matter).

I'll grab the first Google definition for "cheating" > act dishonestly or unfairly in order to gain an advantage, especially in a game or examination.

I'm arguing that each of my examples are a circumvention of what's widely understood to be the spirit/rules of the game. Just because you can see game-state hidden away by modifying the client doesn't mean it's not "cheating". Every game depends on the players not acting unfairly when they are capable, to some extent.

> It's more like a card game in which I show you my cards and then ask you to forget that you saw them - this is what you are saying my client must do in order to provide a fair experience for you.

I think it's more like putting a camera behind your opponents so you can see their cards - you've deliberately added a measure to the existing client/room in order to give you a capability that your opponents don't have.


To be fair, these types of necessarily clientside restrictions as "rules" exist in many popular games: Starcraft 1 and Warcraft 3 for example had a limit on the number of units you could select / command at once: there is absolutely no technological way for the server to enforce such a restriction if clients can be modified, but its a deliberate game rules restriction.

It sounds like your understanding is "the game is the server sends and receives packets: the goal is for the server to say that you win" which would be a view mischaracterizes almost all player's expectations: if you just wrote a client that has AI playing that only uses the info a player has that would also be very clearly cheating even if it only acts on information that players could act on.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: