Q:

How can I implement multiplayer cloaking with visuals that resists client-side hacking?

I've been thinking about implementing stealth in a multiplayer game. It's a MOBA style game, so think League of Legends (LoL) and Heroes of the Storm (HotS). Multiple clients connect to a single server, which broadcasts the game state to all clients. Clients send their input data to the server, which might reject it when encountering invalid commands, thus rendering cheating impossible (well, in theory).
Now, I mention these games on purpose because both implemented stealth differently. LoL has stealth with two possible states: you're either completely visible or completely invisible. HotS on the other hand, implements stealth in such a way that you can tell by a shimmer in the air:

I think this is a neat mechanic, as it promotes / rewards paying attention to your surroundings. However, this being a multiplayer game made me realize that this might prove easily exploitable.
When you implement stealth in 'the LoL' way, you can simply stop sending player coordinates to the other clients. When the player's character breaks stealth, the server can broadcast the location again.
However, with the HotS model, a shimmer can be seen in the air where the character is moving about. This means that the server must be sending the player's location to the other clients. Which means that players that change the texture or model or even the game code itself could render the cloak mechanic useless. Here is a thread on the HotS boards about it.
My question is whether there is some way to implement cloaking (with a 'shimmer', à la HotS), without having the issue that crafty players can modify the game (data) and 'beat the system'. Is this possible, and if not, how do other multiplayer games with this mechanic deal with this? Is only the LoL style of invisibility uncheatable?
I thought about having the server send bogus 'cloak' locations every now and then, but this also harms fair players that are just paying attention, so that won't do.

A:

When you look at the countless other questions about preventing cheating in multiplayer games which are on this site you will easily see that there really is no technical measure to prevent client-sided cheating.
All you could do is provide less information about the cloaked entity. All the client needs to know to render the distortion effect is that there is something cloaked at that position. But it doesn't need to know anything specific about it, like what exactly it is, how much health it has left and what it is doing right now. Depending on your game, that alone can be a game-changing information deficit for the player.

A:

You can't implement a shimmer effect without making it easy to exploit... but what if you used an indirect means of showing that someone is around, a means that also applies to visible players?
For example, what if players leave footprints, and "footprint created" messages are sent from the server independent of player location?  Every player leaves footprints so you can't make the footprint model more visible without covering the arena in them and making every individual print less noticeable, but if a player sees a footprint appear without a visible character they know someone is there.
You can also do stuff like having small pebbles that are knocked around, rustling grass when someone is walking through it, or ripples that appear when someone moves through water.  If 'signs' only apply to certain locations or materials, this could add extra strategy that forces invisible characters to move carefully and avoid things that will give away their positions.

