Is it possible to prevent players from altering the client side graphics in a game?

Started by
32 comments, last by Bacterius 11 years, 12 months ago
First of all I'm not sure which is the best forum to post this question in so it's ok to move it if you think there's a better place for it.

So yeah it's a pretty simple question..
I don't want players to alter graphics like trees or remove darkness from caves/night etc.
It completely ruins so many wonderful game features in many games.. They remove trees so it's only a stub or the root whtever you want to call it remaining. 100% daylight everywhere always. Remove pretty much anything that might cover their view or make the game harder.

Arma2 is a good example where they've removed everything pretty much client side and the whole aspect of crawling in the grass to stay hidden is ruined.. Very hard to stealth though forests when there's barely anything to cover you.. etc.
Advertisement
There's no current technological solution to this. The most effective mechanism is to punish people caught doing it and foster a playerbase that frowns upon such cheating.
There was a post on altdevblogaday just a few days ago about this. And no, there is no way to prevent it.
Not sure how they do it, but one simple way to cheat is tweaking shader code or adjusting images being used in the game. For example, making all the leaves/grass transparent.

Maybe a wild idea, but maybe this helps detecting cheaters (as far that as is possible):
- For each map, before starting, render a special part of the scene in the background. This scene is a compilation of typical content of that map. Grass, a soldier, coverage, and whatsoever.
- Render the scene and take a snapshot
- Compare the snapshot with a prebuild (hardcoded) bitmap that contains the same image how it *should* look
- If not (almost) equal, it means the player tweaked something
- Shout Al Qaeda and blow up his computer

Basically it's sort of an iris-scan.

Of course, there are some practical issues as images never look 100% the same, especially not if there are many options. So there must be some tolerance in the comparison, otherwise noone will be able to play. But other than that, the comperator should detect invisible grass, blue colored handgrenades, or whatever that has been visually changed by adjusting the textures/shaders...

I bet there are still workarounds, as said, it's just a wild idea that popped up suddenly.

Not sure how they do it, but one simple way to cheat is tweaking shader code or adjusting images being used in the game. For example, making all the leaves/grass transparent.

Maybe a wild idea, but maybe this helps detecting cheaters (as far that as is possible):
- For each map, before starting, render a special part of the scene in the background. This scene is a compilation of typical content of that map. Grass, a soldier, coverage, and whatsoever.
- Render the scene and take a snapshot
- Compare the snapshot with a prebuild (hardcoded) bitmap that contains the same image how it *should* look
- If not (almost) equal, it means the player tweaked something
- Shout Al Qaeda and blow up his computer

Basically it's sort of an iris-scan.

Of course, there are some practical issues as images never look 100% the same, especially not if there are many options. So there must be some tolerance in the comparison, otherwise noone will be able to play. But other than that, the comperator should detect invisible grass, blue colored handgrenades, or whatever that has been visually changed by adjusting the textures/shaders...

I bet there are still workarounds, as said, it's just a wild idea that popped up suddenly.


While this would prevent a user from simply changing the assets it would be far easier then to just grab a checksum for the assets and shaders and send to the server.

The real problem is that any user could also modify the client and have it render the background scene(or generate checksums) using the original assets while using the modified ones for the part the player sees, (This isn't that difficult to do and if you get a decent number of players you can be almost certain that someone will do it and upload a patch or loader on the internet for less tech-savvy cheaters to use), Any kind of clientside anticheat prevention will basically go down the same path as copyprotection schemes, at best it will delay the cheaters/pirates by a few days or weeks.

The only solution then is to update so frequently that client modifications become too much of a hassle, something which you most likely cannot afford to keep doing for a very long time.
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!
I know in big games like WoW, rift etc I've never heard about any clients where they've altered client side graphics like removing trees etc.
But I guess it's less meaningful to do that in those games.

But in Darkfall Online, Which I haven't played much but I don't think there was those type of clients available there either.
And in this game it would be a big time advantage removing all trees etc to easier spot players.

So is it just fluke no one have done it for these games or have they some kind of prevention?
Or were there altered client side graphics clients available that I didn't know about?
The problem is that they can change anything on their client side..
So solution is to make game art to NOT be on the client side... or at least on on the players computer.

Is it possible to stop them if the game is browser based or if they have to play from some kind of VPS or something?
Then we could limit them from doing anything else but playing the game?

I know in big games like WoW, rift etc I've never heard about any clients where they've altered client side graphics like removing trees etc.
But I guess it's less meaningful to do that in those games.


On the contrary. I remember map editing being a problem in WoW. It would allow for various "wall hack" and related exploits.

In the end there was really no technical prevention that Blizzard could possibly concoct to stop it. Instead they relied on good old game master monitoring and harsh punishments.
You can but it would require you to run the full rendering on the server side like Onlive does. Tweak the shaders to your hearts delight on the client side, nothing is rendered there.. However that doesn't mean u can't hack, just means those hacks are not possible.. Maybe u can do round robin, where your rendering is rendered by your neighbor etc.. so the client would have no incentive to hack their side? That's kinda crazy though..

-ddn
In general it's impossible.

If it annoys you that much, then either:

* Develop for a platform which has DRM and is protected against being rooted (e.g. XBox, iPad). They can still be rooted, but the hardware provider typically discourages it and makes it difficult, you can have your game refuse to run on jailbroken / rooted hardware, and indeed, deactivate the player's account if he tries to play on using a (known) rooted client. The providers typically already have such mechanisms in place.
OR
* Don't write games which are susceptible to this kind of cheat

In general, the types of games which are most hard to cheat on are

* Games where all information is known to all players anyway. Imagine a resource-management game where all info is available to all players - there is no benefit from a player modifying the client-side graphics (i mean, they COULD if they wanted, but it would not confer a specific advantage).
* Hey why not open up your network protocol AND open-source your client, then people can write their own client (including bots) legitimately if they want

This topic is closed to new replies.

Advertisement