How to prevent cheaters?

After evaluating my game I had to implement several strategies to prevent cheaters. But, this time I’ve realized that if the player turns off their cellular data or activates the airplane mode the ads will not be shown and I they would be playing a totally free game. For the moment I am using appodeal only.

Any suggestions to avoid this practice?

Any help is welcome!

Thanks in advance

DoDi

I’m not sure it’s worth trying to avoid it. You’ll likely get a massive backlash and 1-star reviews from those who go out of their way to avoid ads and support developers. You’re not going to make any money out of these people anyway so not worth letting them harm your ranking.

Unless your game specifically requires a network connection, people will have the expectation that they can play it in airplane mode when low on battery, or actually on an aeroplane.

What you could do, however, is this:

  • when airplane mode is off, you show regular ads

  • when airplane mode is on, you show ads for your own other games

This way people have no incentive to turn on airplane mode, because they will be seeing ads either way. Of course this methods is not optimal either:

  • players can’t really click through to your games on the app store in airplane mode

  • it is nagware, after all, and might put off users

Frustrating  :mellow: 

But you’re right … the main problem would be for the interstitial ads. For reward videos, if they want the reward, they need to have the data turned on.

But it is very frustrating because If I expect to have 1,000,000 downloads to see if I can make $100 in a year, and think that if I could think of turning off the data to have a free game without ads, at least 25% of the players could think likewise, it is extremely frustrating.

The numbers are going to be much lower than 25%. Mostly people are going to keep it on to receive a messages from facebook, twitter, grinder, tinder, whatsapp or whatever app they are using to communicate with each other.

Some people will stop playing your game if the os reports your app as using a lot of bandwidth. I try to avoid this by not showing video ads to users using mobile networks.

I do think your problem is highly dependent on region. I live in Belgium, and to be honest mobile data is so cheap here now, that I don’t think people even turn of their data anymore, ever. It’s too much of a hassle and most people never even hit their monthly data cap anymore here. Plus, as Agramonte said, they need their constant fix of WhatsApp etc…

Prices in the rest of Europe are even lower then ours, so that should not pose much of a problem. Don’t know about the rest of the world.

If you have 1M downloads you will make a LOT more than $100. That is VERY difficult to achieve nowadays though, so I think your focus should be on that rather than trying to get money from people who don’t want to give it to you.

Ok guys I’ve decided to let each player play his way, thank you for your advices. So as not to cause confusion in my game I thought about making a brief internet signal verification. If you have an active signal, you can use the reward video button if not you can’t. In this way I let the player know that the button requires internet connection to watch the video and get the reward. But I have doubts because I have never handled a network request.

This is the code:

local networkConnection = true local function networkListener( event )     if ( event.isError ) then         print( "Network error: ", event.response )         networkConnection = false     else         print ( "RESPONSE: " .. event.response )         networkConnection = true     end end local function checkInternetConnection( event )   network.request( "https://encrypted.google.com", "GET", networkListener, {timeout = 3} ) end

I plan to do this in each scene: show. This way I can enable and disable the object:addEventListener() in each level according to the connection that the user has.

I’m worried that I do not know if I should cancel the network request at some point because I do not want the user use too much data. Already the ads use a lot of data. And I would not like to miss the opportunity to show ads because any connection fails, Ex. the player temporarily passes through an area with little coverage.

I’m not sure it’s worth trying to avoid it. You’ll likely get a massive backlash and 1-star reviews from those who go out of their way to avoid ads and support developers. You’re not going to make any money out of these people anyway so not worth letting them harm your ranking.

Unless your game specifically requires a network connection, people will have the expectation that they can play it in airplane mode when low on battery, or actually on an aeroplane.

What you could do, however, is this:

  • when airplane mode is off, you show regular ads

  • when airplane mode is on, you show ads for your own other games

This way people have no incentive to turn on airplane mode, because they will be seeing ads either way. Of course this methods is not optimal either:

  • players can’t really click through to your games on the app store in airplane mode

  • it is nagware, after all, and might put off users

Frustrating  :mellow: 

But you’re right … the main problem would be for the interstitial ads. For reward videos, if they want the reward, they need to have the data turned on.

But it is very frustrating because If I expect to have 1,000,000 downloads to see if I can make $100 in a year, and think that if I could think of turning off the data to have a free game without ads, at least 25% of the players could think likewise, it is extremely frustrating.

The numbers are going to be much lower than 25%. Mostly people are going to keep it on to receive a messages from facebook, twitter, grinder, tinder, whatsapp or whatever app they are using to communicate with each other.

Some people will stop playing your game if the os reports your app as using a lot of bandwidth. I try to avoid this by not showing video ads to users using mobile networks.

I do think your problem is highly dependent on region. I live in Belgium, and to be honest mobile data is so cheap here now, that I don’t think people even turn of their data anymore, ever. It’s too much of a hassle and most people never even hit their monthly data cap anymore here. Plus, as Agramonte said, they need their constant fix of WhatsApp etc…

Prices in the rest of Europe are even lower then ours, so that should not pose much of a problem. Don’t know about the rest of the world.

If you have 1M downloads you will make a LOT more than $100. That is VERY difficult to achieve nowadays though, so I think your focus should be on that rather than trying to get money from people who don’t want to give it to you.

Ok guys I’ve decided to let each player play his way, thank you for your advices. So as not to cause confusion in my game I thought about making a brief internet signal verification. If you have an active signal, you can use the reward video button if not you can’t. In this way I let the player know that the button requires internet connection to watch the video and get the reward. But I have doubts because I have never handled a network request.

This is the code:

local networkConnection = true local function networkListener( event )     if ( event.isError ) then         print( "Network error: ", event.response )         networkConnection = false     else         print ( "RESPONSE: " .. event.response )         networkConnection = true     end end local function checkInternetConnection( event )   network.request( "https://encrypted.google.com", "GET", networkListener, {timeout = 3} ) end

I plan to do this in each scene: show. This way I can enable and disable the object:addEventListener() in each level according to the connection that the user has.

I’m worried that I do not know if I should cancel the network request at some point because I do not want the user use too much data. Already the ads use a lot of data. And I would not like to miss the opportunity to show ads because any connection fails, Ex. the player temporarily passes through an area with little coverage.