Jump to content

  • Log In with Google      Sign In   
  • Create Account

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


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
33 replies to this topic

#1 glhf   Banned   -  Reputation: -585

Like
0Likes
Like

Posted 06 April 2012 - 11:58 AM

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.

Sponsor:

#2 Telastyn   Crossbones+   -  Reputation: 3726

Like
1Likes
Like

Posted 06 April 2012 - 12:28 PM

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.

#3 turch   Members   -  Reputation: 590

Like
1Likes
Like

Posted 06 April 2012 - 12:45 PM

There was a post on altdevblogaday just a few days ago about this. And no, there is no way to prevent it.

#4 spek   Prime Members   -  Reputation: 996

Like
1Likes
Like

Posted 06 April 2012 - 01:12 PM

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.

#5 SimonForsman   Crossbones+   -  Reputation: 6122

Like
3Likes
Like

Posted 06 April 2012 - 01:50 PM

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.
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!

#6 glhf   Banned   -  Reputation: -585

Like
0Likes
Like

Posted 06 April 2012 - 05:21 PM

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?

#7 glhf   Banned   -  Reputation: -585

Like
0Likes
Like

Posted 06 April 2012 - 05:31 PM

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?

#8 Chris_F   Members   -  Reputation: 2392

Like
0Likes
Like

Posted 06 April 2012 - 06:10 PM

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.

#9 ddn3   Members   -  Reputation: 1289

Like
1Likes
Like

Posted 06 April 2012 - 06:45 PM

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

#10 markr   Crossbones+   -  Reputation: 1653

Like
0Likes
Like

Posted 07 April 2012 - 01:44 AM

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

#11 glhf   Banned   -  Reputation: -585

Like
0Likes
Like

Posted 07 April 2012 - 04:33 AM

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


But hacking is a serious crime all over the world though?
So I think that's not going to be a big issue since most people would be scared from getting arrested for hacking just to accomplish altering the graphics.

Can you tell me more about this?
I am not sure what OnLive is.

#12 Antheus   Members   -  Reputation: 2397

Like
1Likes
Like

Posted 07 April 2012 - 06:17 AM

But hacking is a serious crime all over the world though?

It's not. Either a crime, felony, misdemeanor or anything similar.

At most it will be a violation of EULA, causing your account to be banned.


And once more - there is no way to prevent it.

Each GPU model renders graphics differently - if you compare pixels, they are not identical, even geometry will be different. So each client is already free to render any way it wants.

WoW, rift etc

All important logic runs on server. You may hack the client any way you want, nothing will change, since all actions work with server's state.

WoW and later MMOs take compromised client into account. They assume that client will be completely "hacked". So each client is given only minimal information and no authority.

I remember map editing being a problem in WoW.

That was performance trade-off.

WoW doesn't enforce topology checks, it merely periodically verifies them. So instead of validating every single move, it merely tests for valid coordinates every few seconds or so.

Wallhacks were exploited for teleporting between zones. While there exist robust algorithms for preventing them, the naive client-side collision detection works just as well and a handful of offenders can be trivially detected later, so using much more complex code and asset design isn't necessary.

#13 glhf   Banned   -  Reputation: -585

Like
0Likes
Like

Posted 07 April 2012 - 07:02 AM

WoW, rift etc

All important logic runs on server. You may hack the client any way you want, nothing will change, since all actions work with server's state.

WoW and later MMOs take compromised client into account. They assume that client will be completely "hacked". So each client is given only minimal information and no authority.


Can you please go a bit more indepth on this?
Sorry if I'm slow to understand this but I'm not a programmer but I think it's important to understand the theory at least so we know what kind of games we can make.

Specifically what do you mean by "All important logic runs on server".. You say that nothing will change no matter how much they hack the client..
It sounds like it's a working prevention?
The most important thing for me to prevent is to not let them alter the assets like trees, walls, bushes, tall grass etc on the client side.
Because if they can remove all that while other players can't then it's very unfair.
And secondly to not allow them to create light hacks.

It's just so sad if there's no way to stop it..
It's so hard to make an immersive game with all the cheaters that will ruin it.
So they can remove any object on their client side in a game?
Sounds like only way to make it fair for all players is to make a completely flat map with only transparent objects.

#14 Hodgman   Moderators   -  Reputation: 30432

Like
2Likes
Like

Posted 07 April 2012 - 07:18 AM

All important logic runs on server. You may hack the client any way you want, nothing will change, since all actions work with server's state.
....
WoW doesn't enforce topology checks, it merely periodically verifies them. So instead of validating every single move, it merely tests for valid coordinates every few seconds or so.

These two paragraphs contradict each other -- the first one implies no cheats are possible, while the 2nd implies that restricted teleport-hacks are possible (which they are, along with reveal-hidden-knowledge hacks, etc...).

WoW's (and most game's) best anti-cheat weapon is money -- you pay for an account, and when a GM (or a service like PunkBuster) bans you for cheating, you lose that money.

#15 Bacterius   Crossbones+   -  Reputation: 8945

Like
0Likes
Like

Posted 07 April 2012 - 08:01 AM

WoW's (and most game's) best anti-cheat weapon is money -- you pay for an account, and when a GM (or a service like PunkBuster) bans you for cheating, you lose that money.

Well, at the same time, bots and the like also have an account, which is ultimately income to Blizzard (or any MMO company), so I guess for maximum profit they would balance the amount of bots "playing" against the number of players quitting because of the presence of said bots. Because let's face it... they are doing just that.

The slowsort algorithm is a perfect illustration of the multiply and surrender paradigm, which is perhaps the single most important paradigm in the development of reluctant algorithms. The basic multiply and surrender strategy consists in replacing the problem at hand by two or more subproblems, each slightly simpler than the original, and continue multiplying subproblems and subsubproblems recursively in this fashion as long as possible. At some point the subproblems will all become so simple that their solution can no longer be postponed, and we will have to surrender. Experience shows that, in most cases, by the time this point is reached the total work will be substantially higher than what could have been wasted by a more direct approach.

 

- Pessimal Algorithms and Simplexity Analysis


#16 Antheus   Members   -  Reputation: 2397

Like
1Likes
Like

Posted 07 April 2012 - 08:58 AM

Well, at the same time, bots and the like also have an account, which is ultimately income to Blizzard (or any MMO company), so I guess for maximum profit they would balance the amount of bots "playing" against the number of players quitting because of the presence of said bots. Because let's face it... they are doing just that.


Not really.

Sure, it's money in the bank, but as far as economics go, allowing bots is definition of short-sighted pump-and-dump approach do business. It's a losing proposition that doesn't even cover the cost of upkeep.

Bots are disposable and nor them (being code) nor their owners have any vested interest. Each bot needs to produce more than it's worth or it's dumped. They don't create any network effects, don't socialize, have no wide impact on ecosystem as such. Bots exist painfully inside the game only, whereas the most valuable part lies in humans (recommend game, fill out polls, generate buzz).

Impact of bots can is somewhat similar to increasing number of NPCs. They may change perceived content

it depends on game though. There is a certain cost to acquisition of a new customer weighted vs. their return. Bots have a flat curve. The profit however, increasingly so in social/free games lies in golden geese. While 50% of users won't pay anything ever (pure loss) and while 40% may come close to breaking their acquisition cost, the remaining 10% will be generating all the revenue. So first 90% are leveraged against the paying 10% as content. Bots in this case don't provide much if any value.

While the $15 subscription fee (which is a rarity these days) may seem like pure profit, the number is actually weighted against general demographics. That price does not scale from 1 to 1 million users. If you have 1 user and 10,000 bots, it may be enough to cover the operating costs, but there will be no growth - and you will have no budget left for marketing to attract new real users. Once the 1 real user leaves, the bots will figure out there's no profit to be made anymore and leave - bam, you're broke.

And once you have 15 million users, the minority of $15 bots is a drop in the bucket.


Obviously, all of the above are just possible scenarios, running such things as a business requires understanding of actual server-side numbers, not the PR releases and those always paint a completely different picture. It's also possible to find good value in bots.

#17 slicer4ever   Crossbones+   -  Reputation: 3906

Like
1Likes
Like

Posted 07 April 2012 - 10:45 AM


WoW, rift etc

All important logic runs on server. You may hack the client any way you want, nothing will change, since all actions work with server's state.

WoW and later MMOs take compromised client into account. They assume that client will be completely "hacked". So each client is given only minimal information and no authority.


Can you please go a bit more indepth on this?
Sorry if I'm slow to understand this but I'm not a programmer but I think it's important to understand the theory at least so we know what kind of games we can make.

Specifically what do you mean by "All important logic runs on server".. You say that nothing will change no matter how much they hack the client..
It sounds like it's a working prevention?
The most important thing for me to prevent is to not let them alter the assets like trees, walls, bushes, tall grass etc on the client side.
Because if they can remove all that while other players can't then it's very unfair.
And secondly to not allow them to create light hacks.

It's just so sad if there's no way to stop it..
It's so hard to make an immersive game with all the cheaters that will ruin it.
So they can remove any object on their client side in a game?
Sounds like only way to make it fair for all players is to make a completely flat map with only transparent objects.


You could do something like, shoot a ray from the player, to all enemy's players, and see if it's possible to see them on the server, if so, the server sends a draw command for the enemy player. so the client can never actually "see" a player, until the server says so.

but that would be alot of backend work for the server, per match. it's pretty unrealistic imo. As well, for people with slower connections, they are pretty much screwed.

In the end, your just going to have to live with it, the only true way to prevent such things is with something like onLive(essentially, onLive receives input from the player, renders a scene, and sends the final image back to the player. it's essentially streaming video/input, and the client does no work on their end.)

another suggestion was to use a checksum method on your graphics, but that well most likly be overcome. hackers are notoriously well able in defeating almost any security on client side games. the most fundamental problem is you are developing for open hardware, where anyone could just straight up modify the ram at run-time if they wanted.

So, either you have to just accept it, or have some serious funding to pull off all server side rendering.
Check out https://www.facebook.com/LiquidGames for some great games made by me on the Playstation Mobile market.

#18 Antheus   Members   -  Reputation: 2397

Like
2Likes
Like

Posted 07 April 2012 - 10:57 AM

Can you please go a bit more indepth on this?
Sorry if I'm slow to understand this but I'm not a programmer but I think it's important to understand the theory at least so we know what kind of games we can make.


The most important thing for me to prevent is to not let them alter the assets like trees, walls, bushes, tall grass etc on the client side.


WoW assumes that client was hacked. That user has a maphack, showing all the nearby foes and that same hack can auto target them. It assumes client changed textures so instead of camo everyone wears a big blinking red HIT ME sign. That they are running a macro spamming buttons at 1000Hz.

So they design gameplay with that in mind. Each client is only sent data about nearby units. Targeting is sticky. Aiming and hitzones are not used. Visibility is not a major factor. All actions are on a cooldown and most exploits involved those without cooldown (I seem to remember the druid shapeshift macro which got around "intended" behavior). And so on...


Same principles were explored for detailed simulations. For example, if player is hiding behind a bush, visibility is computed on server and instead of sending entire character data, only the shoulder that is visible is sent to player. But none of this solves anything, I can still replace every part of player geometry with bright red while I change world textures to gray. Most of work was done to minimize bandwidth.


Conclusion is, if your gameplay requires trusted clients, you've already lost.

Alternative solution is to develop for consoles, where malicious behavior is controlled to a degree.

#19 glhf   Banned   -  Reputation: -585

Like
0Likes
Like

Posted 07 April 2012 - 11:09 AM

You could do something like, shoot a ray from the player, to all enemy's players, and see if it's possible to see them on the server, if so, the server sends a draw command for the enemy player. so the client can never actually "see" a player, until the server says so.

but that would be alot of backend work for the server, per match. it's pretty unrealistic imo. As well, for people with slower connections, they are pretty much screwed.


I like the rays idea.. But would still be slightly unfair.
For example.. Some leaves are covering top half of body on a character a bit in the distance while he's running between trees.
But the cheater who has no trees or leaves or any obstacles blocking view.. he will have it really easy to see the half body running in the distance when there's nothing for it to blend into or distract the view. Plus it sounds difficult to only render parts of the body depending on what the rays hit. And then as you say it's probably too much server work.


So instead of asking how to prevent the cheaters..
I'll ask now what are some easy + efficient ways to detect if a player has altered the game?

another suggestion was to use a checksum method on your graphics, but that well most likly be overcome. hackers are notoriously well able in defeating almost any security on client side games. the most fundamental problem is you are developing for open hardware, where anyone could just straight up modify the ram at run-time if they wanted.


This is great, Even though it can be beat.. If you use the technique of waiting a week or two before banning the account (which was bought).
It adds to the scare factor because they don't know if they have been detected or not.

Are there any more ways to detect if someone has altered the client side graphics?

#20 glhf   Banned   -  Reputation: -585

Like
0Likes
Like

Posted 07 April 2012 - 11:17 AM

Conclusion is, if your gameplay requires trusted clients, you've already lost.


I def wouldn't design a game for trusted clients.. That's why I started this thread to find out what kind of game I can make.

But I just can't think of any fun and meaningful games if you have to design the game so everyone has the power of a cheater.
A cheater can as you said, remove all colors in the game except for the players, and remove trees, walls, ANYTHING... everythign transparent.. They could make the game just a flat map with nothing blocking the view except the players.

Does that sound like a fun game?




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS