Goal:
I want to know if there is some way to know if someone is using a vpn.
Issue:
I have a game where you can collect countryballs and launch your own. You can only launch countryballs of your own country. People in my game are changing their vpn to other countries to unlock all the country balls.
Extra Detail:
I currently use LocalizationService to get the country.
Yeah, this is something you can do as well. Issue is a player can notice this and spam rejoin until country2 > country1. I don’t think your issue is completely avoidable. This comes down to making sure the feature itself isn’t unfair/abusable.
Some countries are supposed to be rare to get like tuvalu (a small pacific island). People with vpn can with a few clicks get this countryball by simply changing their vpn location.
What if I used the dates to also calculate the time between joins and maybe invalidate it if it’s for example over 2 joins in an hour? Maybe with the correct balance this could work out.
What if someone disconnects and wants to play again?
This also wouldn’t really fix ur issue, they’d just have to wait an hour to try again.
As far as I know, there is no way to detect if a user is using a VPN, even if we had their IP (which im pretty sure isn’t something roblox would give to developers anyway).
What I mean is that if someone joins 3 times with a different country then I would not detect any new country for the joins in the coming for example, hour. This would still allow the player to join, just not to change country.
I will experiment with the things I mentioned in the future and see if I can find some kind of workaround for this problem. I will also post the code that I end up with in this post.
There are many ways you could make this more annoying and tedious for someone trying to use a VPN. At the end of the day though, people will figure out how to bypass this and decrease the value of countryballs.
Like, your original comment insinuates that the player is unlocking content from joining in another country. You can just make it so it only allows you to play as the country ball as the country you’re in currently, and not store that data anywhere. edit - save that you’ve played as that country ball before
It won’t bypass your VPN issue, but its best to just make it like that instead
Yeah just check their country only the first time they join the game and save that. I would reccomend adding stateballs to your game and let people self identify states if they are in US since there will be so many american players so most of the players will only ever have a USA countryball.
I think if you don’t want to go with this solution, I would personally make countryballs available to anyone. You can find other means of adding value and demand to your game such as abilities or effects unlocked by playing the game during events, etc.
If people are joining with alts it will increase your analytics of how many unique acounts are joining your game therefore improving your status on the roblox algorithm. I don’t think its an issue.
I don’t fully agree with what you’re offering as a solution, however I think you are right about there not being much possible than saving on the first join. I will still experiment and see what I can do though.