Follow these steps to "deauthorize" an app with G+ sign-in:
Open the Google Settings app on your device.
Next select the Connected apps option.
Find your app in the list and select it.
Finally click the Disconnect button.
A confirmation/warning will be displayed. Note that it says it can take up to an hour for the process to be completed.
After doing this ...
The client side asks the service "Am I allowed to keep playing with you?" every five seconds and the server responds with true or false.
You store the date value that represents the last time the player "pinged" the service. Also store a single session key that is randomized and sent to the client upon logging in or at the beginning a game (if no login is ...
Will they be deactivated?
The 70 leaderboard limit is part of the store specification, so more than seventy are allowed for testing on a local environment, which I have found myself, and from testimony of a few friends. The documentation refers to Game Services, so the limit will be enforced upon publishing
From this article, I would say 100MByte/hour is a reasonable estimate for the popular multiplayer games out there:
100MByte/hour converts to 28.4KByte/sec, which is 228KBit/sec. Therefore your current usage of 16KBit/sec is definitely acceptable, even if you were to triple it.
so I fixed the problem. I had to go into C:\Program Files\Epic Games\UE_4.21\Engine\Build\Android\Java and edit the aar-imports file. After adding all missing dependencies and updating the others (as many were super outdated) the problem was fixed.
(also make sure the dependencies are the same as those in your plugins build.gradle files.
After sign up the Google Play Game Developer program and playing around for a while. I believe it is not entirely free per say.
In Google API console, there is a section that you can check your APIs that link to your game/app that created in Google Play Game Console(This is the different console from the former). There you can check the APIs' quota and ...
Apart from some small errors in the accepted answer I prefer the callback approach to get the results so we don't have to perform all of this in the background.
To simplify comparison I used the same GameHelper. This GameHelper object is a singleton containing a reference to the GoogleApiClient object.
Updated example code:
The Google Play Games service actually provides an API for doing just that. I have provided an example for querying the state of all achievements in this answer on SO - but I will provide that information here as well.
The following method will retrieve and iterate all achievements, and should be run asynchronously (using AsyncTask or in a separate thread):
For my game LowDown: A Social Experiment, I did this:
The first time a user submits a number to a contest, there's a CAPTCHA to filter out bots. The server assigns the user a UserID, which is just the next index in the database table. It also assigns an invisible password (I call this a key; it's a randomly generated string). The client saves both the ID ...
I think not, some times ago it was possible using it on iOS apps (and hence it was possible using also elsewhere), but now they deprecated the API.
I think they have no particular incentive on getting it work on other platforms but Google Play.
So basically you have the following choice:
implement your server infrastructure for your simple game
use the ...
This is a classical "local cache invalidation" problem, the very common case in which you really need to invalidate the cache when the user changes (so that, for example, when I access my home banking I don't see a chart about how much money the previous user has).
The usual solution is to include the player name in some form (a hash, a user_id...) in the ...
I received the exact same error yesterday when I tried to publish a new update of the app. Apparently Google has made some changes internally. I had done about 30 builds before for this particular app, so I couldn't fathom what the difference was.
What solved it for me was unchecking the x86 checkbox in the project settings.
This allowed my build to pass. ...
In the same way you upload the new gamestate to google play's server, you can upload the previous one too.
Unit A is on Square 1, Unit B is on Square 3
[P1's turn] Player 1 moves Unit A to Square 2
[P1's turn] Player 1 kills Unit B with Unit A
[P1](Now you do) Upload the new game state -> (Change for)[P1] Upload the initial state and the new state.
Well, in Unity you can check GPGS and Game Center login status via Social.localUser.authenticated. This will return a bool value that indicates either the user is logged in or not. true for logged in and false for logged out.
print("Player is logged in");
I solved the problem. i removed all playstore plugin from my project, then i select Edit -> Reimport all. then I import admob plugin. them in AndroidMainfest.xml i changed "android:value="true" to android:value="false" ".
I fixed this error by going to SDK Manager and downloading latest API (it is Android 6.0 - API 23 while i'm writing this).
Note: You don't have to download documentation or samples if you don't need, because they two take a while to download.
Also make sure that you have latest versions of "Extras/Android Support Repository" and "Extras/Google ...
Turns out I'm an idiot, I was running logcat -s Unity under the mistaken belief all related traces to the crash should be found there - makes sense it wasn't as the Google Play Services loads up its own little window, doesn't make sense why when Google Play fails it takes the host app down with it.
Just a plain logcat revealed the issue was caused by an ...
According to this Google Saved Games documentation :
All Saved Games are stored in your players' Google Drive Application Data Folder. This folder can only be read and written by your game - it cannot be viewed or modified by other developers’ games, so there is additional protection against data corruption. In addition, Saved ...
I just found this as an explanation of one of the members of ConflictResolutionStrategy enum in GooglePlayGames.BasicApi.SavedGame namespace in SDK:
/// Choose the version of the saved game that existed before any conflicting write occurred.
/// Consider the following case:
/// - An initial version of a save game ("X") is ...