playgameservices / play-games-plugin-for-unity

Google Play Games plugin for Unity
Other
3.46k stars 967 forks source link

Google Play Games Services plugin v10 #2687

Closed ozdemir08 closed 4 years ago

ozdemir08 commented 5 years ago

Google Play Game Services is pleased to announce that Google Play Games Services plugin v10 is now available.

The new plugin now directly uses the main PGS Java SDK. As a result, the new plugin is significantly smaller and by using Proguard you may be able to decrease it even further. Directly accessing the Java SDK also makes it easier to debug issues.

Please help us to continue to improve the Plugin by reporting bugs in this version of the plugin. In a few weeks, we will merge this version into the Master branch with reported bugs addressed.

Using the new plugin

If you are already using the Google Play Games Services Plugin in your project, you can update to the new one by deleting the GooglePlayGames directory from your project and importing the new package that can be found here.

If you are not yet using Google Play Games Services Plugin, then follow the instructions in the Readme file but use the new package which can be found here instead of the one in current-build.

cyraid commented 5 years ago

Testing it now. Thanks man.

Icaro-Lima commented 5 years ago

I will test! Thanks!

dvillaseca commented 5 years ago

I tried to migrate to 0.10.00, I had a problem with the GetAnotherServerAuthCode function. The code don't includes the scopes added in the Builder, the first auth code includes the scopes but the second one only includes the default one

Then I tried to install the 0.10.01 but that version uses AndroidX libraries which broke all the plugins in our project :(

ozdemir08 commented 5 years ago

@dvillaseca it looks like for a while it could be an issue as not all libraries have migrated to AndroidX yet. Can you share which libraries you're using, so that I can look into it? Also, you're right about GetAnotherServerAuthCode function. It's been fixed in the old plugin here, but not in this one. I'll fix it soon.

@cyraid , @Icaro-Lima if you tested the new plugin, can you share which APIs you have tested and whether you had any issues or not?

cyraid commented 5 years ago

@ozdemir08 Sure.

Issues: So far it gives some verbose "GPGSUpgrader start" and "GPGSUpgrader done" info messages on every run, would be nice to turn those off. Also still has the "OnEnable" bug (AssetDatabase.Refresh()). Also the ClearPreviewCache() bug (NRE) when you have something selected when you run and it has a preview (if you have nothing selected it doesn't pop up).

Compliments: Thank you for fixing some of the issues with this. It overall seems a lot more stable, and I love that it does the android resolution on build. I don't have to worry about a 'I made a backup' dialog on every start (THANK YOU for that).

Apis: Been using the authenticate (of course), and leadership boards. No issues so far. One thing for future people to look out for, SHA1 MATTERS! Internal app testing has a different SHA1 (update your google cloud console). Your SHA1 must match your key when signing for the apk. If you have app bundle, the SHA1 in cloud console must match the one given for the app signing. Those gotchas aside, I've been a lot less stressed working with this version.

Overall, feels a lot better so far. Thanks guys, and good job. Got a new version by chance? ^_^

cyraid commented 5 years ago

@ozdemir08 Oh was gonna mention.. If building an apk on the cloud using Unity Cloud build, it was trying to pop up a window and it failed.. Can you make it work for headless mode? (no popups).

Keep up the good work!

Edit: And sometimes a lot of 'possible mistaken empty statement' warnings when scripts are compiling after a change (and even in build log).

frolky commented 5 years ago

Bug: scoreData.PlayerScore.userID == "me"

PlayGamesPlatform.Instance.LoadScores(leaderboardId, LeaderboardStart.TopScores, 25, LeaderboardCollection.Public, leaderboardTimeSpan, scoreData => { });

frolky commented 5 years ago

PlayGamesPlatform.Instance.LoadMoreScores does not work

08-21 16:32:52.564 6447 6478 E Unity : NullReferenceException: Object reference not set to an instance of an object. 08-21 16:32:52.564 6447 6478 E Unity : at UnityEngine.GlobalJavaObjectRef.op_Implicit (UnityEngine.GlobalJavaObjectRef obj) [0x00000] in <00000000000000000000000000000000>:0 08-21 16:32:52.564 6447 6478 E Unity : at UnityEngine.AndroidJavaObject._Call[ReturnType] (System.String methodName, System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0 08-21 16:32:52.564 6447 6478 E Unity : at UnityEngine._AndroidJNIHelper.GetSignature (System.Object obj) [0x00000] in <00000000000000000000000000000000>:0 08-21 16:32:52.564 6447 6478 E Unity : at UnityEngine._AndroidJNIHelper.GetSignature[ReturnType] (System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0 08-21 16:32:52.564 6447 6478 E Unity : at UnityEngine._AndroidJNIHelper.GetMethodID[ReturnType] (System.IntPtr jclass, System.String methodName, System.Object[] args, System.Boolean isStatic) [0 x00000] in <00000000000000000000000000000000>:0 08-21 16:32:52.564 6447 6478 E Unity : at UnityEngine.AndroidJavaObject._Call[ReturnType] (System.String methodName, System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0 08-21 16:32:52.564 6447 6478 E Unity : at GooglePlayGames.Android.AndroidClient

invertibleMatrix commented 5 years ago

There seems to be an issue with version 0.10.01 Whenever i sign out from achievements UI or leaderboard UI, Social.localUser.authenticated always returns true.

ozdemir08 commented 5 years ago

So far it gives some verbose "GPGSUpgrader start" and "GPGSUpgrader done" info messages on every run, would be nice to turn those off. Also still has the "OnEnable" bug (AssetDatabase.Refresh()). Also the ClearPreviewCache() bug (NRE) when you have something selected when you run and it has a preview (if you have nothing selected it doesn't pop up).

Can you make it work for headless mode? (no popups).

@cyraid I'm taking note of them. But as we have still some bugs to address, they won't be our top priorities right now.

Bug: scoreData.PlayerScore.userID == "me"

@frolky can you give more detail about this?

PlayGamesPlatform.Instance.LoadMoreScores does not work

@frolky I've fixed it, the fixed code will be in v10.02.

Social.localUser.authenticated always returns true.

@makmatics I've fixed this one too. We'll release v10.02 next week.

Thanks all of you for the comments!

frolky commented 5 years ago

@frolky can you give more detail about this?

What exactly? I provided the code. In the previous version of the plugin, this property returned the id of the player, and now "me"

PlayGamesPlatform.Instance.LoadScores(leaderboardId, LeaderboardStart.TopScores, 25, LeaderboardCollection.Public, leaderboardTimeSpan, scoreData => { Debug.Log(scoreData.PlayerScore.userID); // output "me" Debug.Log(Social.localUser.id); // output "g123456..." });

cyraid commented 5 years ago

Another quick idea would be to make it a custom package as well, so we can just add it to package manager and receive updates whenever you change the manifest.

invertibleMatrix commented 5 years ago

Can you please share the exact date for the next release. We are on deadline and just waiting for stable version.

ozdemir08 commented 5 years ago

@makmatics this friday.

renanrider commented 5 years ago

Testing it...

invertibleMatrix commented 5 years ago

Hi, There seems to be another issue with version v10.01. When i save the game the SavedGameWritten callback is not triggered.

((PlayGamesPlatform) Social.Active).SavedGame.CommitUpdate(game, updatedMetadata, data, SavedGameWritten);

dmitry-lagun commented 5 years ago

Does this plugin use API version 3?

ozdemir08 commented 5 years ago

Hi, There seems to be another issue with version v10.01. When i save the game the SavedGameWritten callback is not triggered.

((PlayGamesPlatform) Social.Active).SavedGame.CommitUpdate(game, updatedMetadata, data, SavedGameWritten);

I have tried it a couple of times and each time I was able to trigger that callback. Can you check if you're getting any logs from this code block?

ozdemir08 commented 5 years ago

You can check out v10.02 here and the change log here

invertibleMatrix commented 5 years ago

You can check out v10.02 here and the change log here

I have updated the plugin to v10.02 and it is causing all sorts of crashes. 1) When i open Leaderboard UI or Achievements UI and press back i get the following Error.

E/Unity: NullReferenceException: Object reference not set to an instance of an object.
      at GooglePlayGames.Android.AndroidClient+<>c__DisplayClass48_0.<GetUiSignOutCallbackOnGameThread>b__0 (GooglePlayGames.BasicApi.UIStatus status) [0x00000] in <00000000000000000000000000000000>:0 
      at GooglePlayGames.OurUtils.PlayGamesHelperObject.Update () [0x00000] in <00000000000000000000000000000000>:0 

and when i press Sign Out from either UI the app crashes without any log message.

2) When i save the game i get the following and instantly the game freezes but the sound that was playing in my game was still playing.

2019-08-31 01:40:45.693 32110-32235/com.[PACKAGE] I/Unity: Saving progress to the cloud...
    PlayGamesManager:SaveToCloud(String)
    SettingPanelManager:SaveGameToGPGpressed()
    EventDelegate:Execute()
    EventDelegate:Execute(List`1)
    UIButton:OnClick()
    UICamera:Notify(GameObject, String, Object)
    UICamera:ProcessRelease(Boolean, Single)
    UICamera:ProcessTouch(Boolean, Boolean)
    UICamera:ProcessTouches()
    UICamera:ProcessEvents()

    (Filename: ./Runtime/Export/Debug.bindings.h Line: 45)
2019-08-31 01:40:48.455 32110-32235/com.[PACKAGE] I/Unity: Saving to GooglePlayGames.Android.AndroidSnapshotMetadata
    PlayGamesManager:SavedGameOpened(SavedGameRequestStatus, ISavedGameMetadata)
    GooglePlayGames.OurUtils.PlayGamesHelperObject:Update()

    (Filename: ./Runtime/Export/Debug.bindings.h Line: 45)
2019-08-31 01:40:49.697 32110-32110/com.[PACKAGE] I/Unity: commitAndClose.succeed
    GooglePlayGames.Android.<>c__DisplayClass8_0:<CommitUpdate>b__0(AndroidJavaObject)
    System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo)
    UnityEngine.AndroidJavaProxy:Invoke(String, Object[])
    UnityEngine._AndroidJNIHelper:InvokeJavaProxyMethod(AndroidJavaProxy, IntPtr, IntPtr)

    (Filename: ./Runtime/Export/Debug.bindings.h Line: 45)
 JNI ERROR (app bug): accessed deleted Global 0x3876
 java_vm_ext.cc:542] JNI DETECTED ERROR IN APPLICATION: use of deleted global reference 0x3876
 java_vm_ext.cc:542]     from boolean com.unity3d.player.UnityPlayer.nativeRender()
 java_vm_ext.cc:542] "UnityMain" prio=5 tid=17 Runnable
 java_vm_ext.cc:542]   | group="main" sCount=0 dsCount=0 flags=0 obj=0x18700e70 self=0x7409882c00
 java_vm_ext.cc:542]   | sysTid=32235 nice=0 cgrp=default sched=0/0 handle=0x73facb94f0
 java_vm_ext.cc:542]   | state=R schedstat=( 101619368242 108057484399 2155958 ) utm=7103 stm=3058 core=7 HZ=100
 java_vm_ext.cc:542]   | stack=0x73fabb6000-0x73fabb8000 stackSize=1041KB
 java_vm_ext.cc:542]   | held mutexes= "mutator lock"(shared held)

and there is tons of log from native IL2CPP that I haven't pasted here.

ozdemir08 commented 5 years ago

When i open Leaderboard UI or Achievements UI and press back i get the following Error.

I made a bug in this commit, while fixing sign out from ui. I'm fixing it today and releasing v10.03 with the fix. The app I'm using for test purposes, Smoketest did not crash, so I couldn't catch the error. Thanks for reporting this. If you'd like to try it out before releasing v10.03, check out this commit.

When i save the game i get the following and instantly the game freezes but the sound that was playing in my game was still playing.

Does this one happen only in v10.02 or does it also happen in v10.01? I am looking into it, but can not reproduce it right now. Edit: This one is about this comment, I guess. Then the question is, was it working fine in v9.64? Also, do you see any changes from v10.01 to v10.02?

Edit 2: v10.03

invertibleMatrix commented 5 years ago

totally forgot about this comment. I didn't bother testing it any further because v10.02 was on it's way so i gave up on v10.01

First let me clear a few confusions here. There are two revisions of v10.01. First one was this July 8,2019 which was replaced by this second revision on Aug 15,2019.

Second revision of v10.01 was causing issues described here but when v10.02 came out it caused all of these issues so i gave up on v10.02 as well and reverted back to first revision of v10.01 which i luckily had a backup copy in my hard drive. first revision of v10.01 works fine without any other issues except for UI sign out.

5argon commented 5 years ago

Hi, I am using 10.03 above. I think you have an issue with getting the application ID through to Google. When I call PlayGamesPlatform.Activate(); without initializing, so it used the default one, a center dialog while screen dimmed appear as usual and I was asked to choose an account. However, after that there would be no drop down confirmation appearing, and in the adb logcat I would always get this :

2019/09/03 19:30:19.482 3034 3586 Warn PlayerAgent: {"code":400,"errors":[{"reason":"invalid","domain":"global","message":"Invalid applicationId with value . Reason: No application ids specified."}]}
2019/09/03 19:30:19.486 9055 9055 Warn SignInActivity: onSignInFailed()...
2019/09/03 19:30:19.486 9055 9055 Warn SignInActivity: Sign in failed during 8
2019/09/03 19:30:19.486 9055 9055 Warn SignInActivity: ==> Returning non-OK result: 10002

Screenshot_20190903-193210 Screenshot_20190903-193215

with value . kind of hinting that it may be parsed as empty string or something. I pressed setup already and my APP ID is already here. Is it being used at all at runtime? (also you forgot to change .02 to .03)

Annotation 2019-09-03 191832

The build method is Android App Bundle, and this test is from Internal Testing, not from direct install from AAB, so the signing key should be correct, like the one real player use.

cyraid commented 5 years ago

Mine no longer seems to fully login either. Used to say "welcome", now just pops up that box with connecting, then disappears and then ceases to exist.

Note: I forgot to mention I'm using 10.1 still.. So is there something that went down server side? (I didn't make any changes, the app just doesn't log in anymore)

ozdemir08 commented 5 years ago

Mine no longer seems to fully login either. Used to say "welcome", now just pops up that box with connecting, then disappears and then ceases to exist.

@cyraid Are you getting the same logs that @5argon got? If not, can you share your logs?

cyraid commented 5 years ago

@ozdemir08 I'm not working with the project for awhile, but if I recall when looking in the logs, it appeared as if everything signed in okay. No errors, nothing.. Which was really puzzling. But like I said it was working at first, and I didn't change anything or upload any new version, so I'm guessing the problem has to be remotely? (only a guess)

invertibleMatrix commented 5 years ago

Hi We are using v10.01 in our production release and this is the crash we are getting from users.

java.lang.Error: FATAL EXCEPTION [main] Unity version : 2018.3.5f1 Device model : OnePlus ONEPLUS A3003 Device fingerprint: OnePlus/OnePlus3/OnePlus3T:9/PKQ1.181203.001/1907311932:user/release-keys Caused by at com.google.android.gms.common.api.internal.zza.addCallback (Unknown Source:26) at com.google.android.gms.tasks.zzu$zza.<init> (Unknown Source:9) at com.google.android.gms.tasks.zzu$zza.zza (Unknown Source:4) at com.google.android.gms.tasks.zzu.addOnSuccessListener (Unknown Source:36) at com.google.games.bridge.SignInRequest.signIn (SignInRequest.java:143) at com.google.games.bridge.SignInRequest.process (SignInRequest.java:78) at com.google.games.bridge.HelperFragment.processRequest (HelperFragment.java:238) at com.google.games.bridge.HelperFragment.onResume (HelperFragment.java:281) at android.app.Fragment.performResume (Fragment.java:2568) at android.app.FragmentManagerImpl.moveToState (FragmentManager.java:1341) at android.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1576) at android.app.FragmentManagerImpl.moveToState (FragmentManager.java:1637) at android.app.FragmentManagerImpl.executeOpsTogether (FragmentManager.java:2215) at android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute (FragmentManager.java:2161) at android.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:2062) at android.app.FragmentManagerImpl$1.run (FragmentManager.java:738) at android.os.Handler.handleCallback (Handler.java:873) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loop (Looper.java:193) at android.app.ActivityThread.main (ActivityThread.java:6863) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:537) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858)

Can you please share a solution to this one without upgrading the sdk because v10.01 is what we found to be the most stable.

ozdemir08 commented 5 years ago

Hi, There seems to be another issue with version v10.01. When i save the game the SavedGameWritten callback is not triggered.

I finally managed to reproduce this one. A fix is on its way. The second one on this comment looks to be the same issue.

Hi We are using v10.01 in our production release and this is the crash we are getting from users.

Do you have a logcat or more detailed logs for this one?

invertibleMatrix commented 5 years ago

Do you have a logcat or more detailed logs for this one?

Unfortunately this is what we are getting on Play Console and these are the screenshots. Annotation 2019-09-11 211635

java.lang.Error in com.google.android.gms.common.api.internal.zza.onCreate Annotation 2019-09-11 211635

java.lang.Error in com.google.games.bridge.SignInRequest.signIn Annotation 2019-09-11 211635

java.lang.Error in com.google.games.bridge.SignInRequest.setFailure

Annotation 2019-09-11 211635

java.lang.Error in com.google.games.bridge.SignInRequest.setSuccess

Annotation 2019-09-11 211635

ozdemir08 commented 5 years ago

Hi, I am using 10.03 above. I think you have an issue with getting the application ID through to Google. When I call PlayGamesPlatform.Activate(); without initializing, so it used the default one, a center dialog while screen dimmed appear as usual and I was asked to choose an account. However, after that there would be no drop down confirmation appearing, and in the adb logcat I would always get this :

2019/09/03 19:30:19.482 3034 3586 Warn PlayerAgent: {"code":400,"errors":[{"reason":"invalid","domain":"global","message":"Invalid applicationId with value . Reason: No application ids specified."}]}
2019/09/03 19:30:19.486 9055 9055 Warn SignInActivity: onSignInFailed()...
2019/09/03 19:30:19.486 9055 9055 Warn SignInActivity: Sign in failed during 8
2019/09/03 19:30:19.486 9055 9055 Warn SignInActivity: ==> Returning non-OK result: 10002

Screenshot_20190903-193210 Screenshot_20190903-193215

with value . kind of hinting that it may be parsed as empty string or something. I pressed setup already and my APP ID is already here. Is it being used at all at runtime? (also you forgot to change .02 to .03)

Annotation 2019-09-03 191832

The build method is Android App Bundle, and this test is from Internal Testing, not from direct install from AAB, so the signing key should be correct, like the one real player use.

@5argon Are you still having the same issues? I tried a couple of things in the meanwhile and when app id is misconfigured / missing, we get an error before Sign in failed during 8. As @cyraid suggested, I checked out logs on server side, but logs related to sign in look pretty stable. We don't have a big issue about it right now. Did you recently make any changes in Developer Console?

Also, if someone else is having the same issue, let us know so that we may have a better understanding of it.

cyraid commented 5 years ago

@ozdemir08 So I didn't really open Unity, but I did use Android Studio and logcat, and decided to boot up the game and check the logs..

Apparently it mentioned it couldn't sign in with auth, and gave me a nice little print out of the SHA1 and such so I can double check. Apparently Google Cloud credentials had the other SHA1 still in there (from the internal test certificate), so I copied the one listed in the error.

Sorry for the trouble.

ozdemir08 commented 5 years ago

@cyraid no worries, glad that it works fine now.

@makmatics have you managed to reproduce them? Also, I'm wondering how often these crashes are happening. Do you have any numbers or anything meaningful about it on Console?

I suspect some weird behaviors could be happening if you transition to another app when sign in dialog pops up but could not reproduce a similar issue yet.

eirikost commented 5 years ago

No one else getting this error after upgrade? The error occurs when I'm trying to start a real time multiplayer game. I guess it's a new bug in GPGS, or do I need to make my code thread safe? It worked before I upgraded from v. 0.9.54 to 0.10.03.

E/Unity   ( 4909): UnityException: set_enabled can only be called from the main thread.
E/Unity   ( 4909): Constructors and field initializers will be executed from the loading thread when loading a scene.
E/Unity   ( 4909): Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function.
E/Unity   ( 4909):
E/Unity   ( 4909): Rethrow as TargetInvocationException: GooglePlayGames.Android.AndroidRealTimeMultiplayerClient+RoomUpdateCallbackProxy.onRoomCreated(System.Int32,UnityEngine.AndroidJavaObject)
E/Unity   ( 4909):   at UnityEngine.AndroidJavaProxy.Invoke (System.String methodName, System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0
E/Unity   ( 4909):   at UnityEngine.AndroidJavaProxy.Invoke (System.String methodName, UnityEngine.AndroidJavaObject[] javaArgs) [0x00000] in <00000000000000000000000000000000>:0
E/Unity   ( 4909):   at UnityEngine._AndroidJNIHelper.InvokeJavaProxyMethod (UnityEngine.AndroidJavaProxy proxy, System.IntPtr jmethodName, System.IntPtr jargs) [0x00000] in <00000000000000000000000000000000>:0
ozdemir08 commented 5 years ago

No one else getting this error after upgrade? The error occurs when I'm trying to start a real time multiplayer game. I guess it's a new bug in GPGS, or do I need to make my code thread safe? It worked before I upgraded from v. 0.9.54 to 0.10.03.

Your code should stay as it is, it's probably a new bug. By adding a Debug.Log("log_text") just before this line, can you check if it's the reason of this error?

Edit: @eirikost also can you verify if everything about sign in is fine so far?

eirikost commented 5 years ago

@ozdemir08 Yea, it seems like that line is where the problem occurs. Should I check anything else? Sign in works like a charm 👌

ozdemir08 commented 5 years ago

@eirikost No, not now. A small change on RealTimeMultiplayerListener will probably solve the issue. I'll do it today and let you know to try it out.

EDIT: Can you try this and let me know if it works fine? You can either use the package or just replace your AndroidRealTimeMultiplayerClient.cs with the one there.

EDIT 2: Check out the announcement of Ending support for multiplayer APIs in Play Games Services

SankarGanesh82 commented 5 years ago

Having the same issue for the past one week. We have updated from Unity Google Play Games version V0.9.64 to V10.03. Can you please solve ASAP.

Screen Shot 2019-09-18 at 7 19 07 PM
ozdemir08 commented 5 years ago

Same issue reported here, too. I am looking into it but haven't found anything suspicious yet. Have you managed to reproduce it yourself?

eirikost commented 5 years ago

@ozdemir08 Yea, thanks, the fix helped and I can start the game, but still getting some errors though. Seems like there's a problem getting the participantId. I don't know if it matters now that the multiplayer api support soon will be gone but I've added the errors below.

What will you guys do with your multiplayer games without the multiplayer api support? Switch to Unity Connected Games?

E/Unity   (23459): NullReferenceException: Object reference not set to an instance of an object.
E/Unity   (23459):   at MultiplayerController.OnRoomConnected (System.Boolean success) [0x00000] in <00000000000000000000000000000000>:0
E/Unity   (23459):   at GooglePlayGames.Android.AndroidRealTimeMultiplayerClient+OnGameThreadForwardingListener+<>c__DisplayClass3_0.<OnRoomConnected>b__0 () [0x00000] in <00000000000000000000000000000000>:0
E/Unity   (23459):   at System.Action.Invoke () [0x00000] in <00000000000000000000000000000000>:0
E/Unity   (23459):   at GooglePlayGames.OurUtils.PlayGamesHelperObject.Update () [0x00000] in <00000000000000000000000000000000>:0
E/Unity   (23459):
E/Unity   (23459): (Filename: currently not available on il2cpp Line: -1)
E/Unity   (23459):
E/Unity   (23459): NullReferenceException: Object reference not set to an instance of an object.
E/Unity   (23459):   at GooglePlayGames.Android.AndroidRealTimeMultiplayerClient.GetSelf () [0x00000] in <00000000000000000000000000000000>:0
E/Unity   (23459):   at MultiplayerController.GetMyParticipantId (System.Int32 mode) [0x00000] in <00000000000000000000000000000000>:0
E/Unity   (23459):   at GameController.SetupMultiplayerGame () [0x00000] in <00000000000000000000000000000000>:0
E/Unity   (23459):   at GameController.Start () [0x00000] in <00000000000000000000000000000000>:0
E/Unity   (23459):
E/Unity   (23459): (Filename: currently not available on il2cpp Line: -1)

The same main thread problem as earlier, but now with nearby connections:

E/Unity   (23459): UnityException: set_enabled can only be called from the main thread.
E/Unity   (23459): Constructors and field initializers will be executed from the loading thread when loading a scene.
E/Unity   (23459): Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function.
E/Unity   (23459):
E/Unity   (23459): Rethrow as TargetInvocationException: GooglePlayGames.Android.AndroidNearbyConnectionClient+EndpointDiscoveryCallback.onEndpointFound(System.String,UnityEngine.AndroidJavaObject)
E/Unity   (23459):   at UnityEngine.AndroidJavaProxy.Invoke (System.String methodName, System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0
E/Unity   (23459):   at UnityEngine.AndroidJavaProxy.Invoke (System.String methodName, UnityEngine.AndroidJavaObject[] javaArgs) [0x00000] in <00000000000000000000000000000000>:0
E/Unity   (23459):   at UnityEngine._AndroidJNIHelper.InvokeJavaProxyMethod (UnityEngine.AndroidJavaProxy proxy, System.IntPtr jmethodName, System.IntPtr jargs) [0x00000] in <00000000000000000000000000000000>:0
ozdemir08 commented 5 years ago

@eirikost thanks for reporting them. I'll still fix them as we have ~6 months to the given date.

EDIT:

What will you guys do with your multiplayer games without the multiplayer api support? Switch to Unity Connected Games?

If you want to discuss it, opening a new issue about it could be better. It will probably get lost among many comments in this thread.

NMeijerSparkling commented 5 years ago

@ozdemir08 We've updated the plugin as per your suggestion in my issue.

However, the game is now experiencing the same issue as @SankarGanesh82. We're not able to reproduce it unfortunately. Here is our callstack:

at com.google.android.gms.common.internal.Preconditions.checkState (Unknown Source)
at com.google.android.gms.tasks.zzu.zzc (Unknown Source)
at com.google.android.gms.tasks.zzu.setResult (Unknown Source)
at com.google.android.gms.tasks.TaskCompletionSource.setResult (Unknown Source)
at com.google.games.bridge.SignInRequest.setSuccess (SignInRequest.java:242)
at com.google.games.bridge.SignInRequest.access$000 (SignInRequest.java:28)
at com.google.games.bridge.SignInRequest$1.onComplete (SignInRequest.java:117)
at com.google.android.gms.tasks.zzj.run (Unknown Source)
at android.os.Handler.handleCallback (Handler.java:751)
at android.os.Handler.dispatchMessage (Handler.java:95)
at android.os.Looper.loop (Looper.java:154)
at android.app.ActivityThread.main (ActivityThread.java:6776)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1496)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1386)
ozdemir08 commented 5 years ago

@NMeijerSparkling several people are having the same issue, but apparently nobody is able to reproduce it. We found something that might cause this, which you can see the fix here and I'll release a new version today. Hopefully it will solve this issue. Otherwise, we'll need to investigate it again.

Edit: You can check out v10.04 here. Please let us know how the crash numbers are changing with this version.

SankarGanesh82 commented 5 years ago

@ozdemir08, Thanks for your quick response. Will use this version and let you know the status soon.

Adelw02 commented 5 years ago

Hello community I am developing a game in real time and I get this error I don't know why:

(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35) 2019-09-21 17: 44: 28.043 534-563 /? W / Unity: Android JNI Helper: converting Byte array is obsolete, use SByte array instead UnityEngine._AndroidJNIHelper: ConvertToJNIArray (Array) UnityEngine._AndroidJNIHelper: CreateJNIArgArray (Object []) UnityEngine.AndroidJavaObject: _Call (String, Object []) GooglePlayGames.Android.AndroidRealTimeMultiplayerClient: SendMessageToAll (Boolean, Byte []) NET_Game: Update ()

Thanks you.

ozdemir08 commented 5 years ago

Hello community I am developing a game in real time and I get this error I don't know why:

(Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35) 2019-09-21 17: 44: 28.043 534-563 /? W / Unity: Android JNI Helper: converting Byte array is obsolete, use SByte array instead UnityEngine._AndroidJNIHelper: ConvertToJNIArray (Array) UnityEngine._AndroidJNIHelper: CreateJNIArgArray (Object []) UnityEngine.AndroidJavaObject: _Call (String, Object []) GooglePlayGames.Android.AndroidRealTimeMultiplayerClient: SendMessageToAll (Boolean, Byte []) NET_Game: Update ()

Thanks you.

Thanks for reporting this. @eirikost also reported some bugs about real time api which I haven't addressed yet. I'm planning to look into them and fix them this(or next) week. But please be sure that you have read the deprecation announcement.

SankarGanesh82 commented 5 years ago

After updating to v10.04 we are getting crash in few deviecs(RedMi Note 4, one plus 5T) after successful login. App crashes even without performing any action after a while. Please see below log

--------- beginning of crash 09-24 15:12:18.563 15463 15593 F libc : Fatal signal 5 (SIGTRAP), code 1 in tid 15593 (Chrome_InProcRe) 09-24 15:12:18.570 455 455 W : debuggerd: handling request: pid=15463 uid=11801 gid=11801 tid=15593 09-24 15:12:18.632 16127 16127 W debuggerd64: type=1400 audit(0.0:4146): avc: denied { search } for name="com.google.android.gms" dev="dm-1" ino=790102 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 09-24 15:12:18.632 16127 16127 W debuggerd64: type=1400 audit(0.0:4147): avc: denied { search } for name="com.google.android.gms" dev="dm-1" ino=790102 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 09-24 15:12:18.642 16127 16127 W debuggerd64: type=1400 audit(0.0:4148): avc: denied { search } for name=“com.xxxx.xxx” dev="dm-1" ino=195479 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 09-24 15:12:18.642 16127 16127 W debuggerd64: type=1400 audit(0.0:4149): avc: denied { search } for name="com.xxxx.xxx” dev="dm-1" ino=195479 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 09-24 15:12:18.642 16127 16127 W debuggerd64: type=1400 audit(0.0:4150): avc: denied { search } for name="com.xxxx.xxx” dev="dm-1" ino=195479 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 09-24 15:12:18.731 16127 16127 F DEBUG : 09-24 15:12:18.731 16127 16127 F DEBUG : Build fingerprint: 'xiaomi/mido/mido:7.0/NRD90M/V9.5.10.0.NCFMIFA:user/release-keys' 09-24 15:12:18.731 16127 16127 F DEBUG : Revision: '0' 09-24 15:12:18.731 16127 16127 F DEBUG : ABI: 'arm64' 09-24 15:12:18.732 16127 16127 F DEBUG : pid: 15463, tid: 15593, name: Chrome_InProcRe >>> com.xxxx.xxx <<< 09-24 15:12:18.732 16127 16127 F DEBUG : signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0x7f6f36a558 09-24 15:12:18.732 16127 16127 F DEBUG : x0 0000007f53075a00 x1 0000007f847dcbcc x2 0000000000000001 x3 0000000000000003 09-24 15:12:18.732 16127 16127 F DEBUG : x4 0000000000000000 x5 0080000000000000 x6 0000007f872b6000 x7 0000000000000000 09-24 15:12:18.732 16127 16127 F DEBUG : x8 000000000000005d x9 0000000000000001 x10 0000000000000001 x11 0000000000000310 09-24 15:12:18.732 16127 16127 F DEBUG : x12 0000000000000018 x13 0000000000000000 x14 0000000000000000 x15 002084ac9a410913 09-24 15:12:18.732 16127 16127 F DEBUG : x16 0000007f6ff54428 x17 0000007f847dd868 x18 0000000000015180 x19 0000007f5308fe40 09-24 15:12:18.732 16127 16127 F DEBUG : x20 0000000000000001 x21 0000007f5308fe40 x22 0000007f492d7b2c x23 0000007f492d7928 09-24 15:12:18.732 16127 16127 F DEBUG : x24 0000007f492d3280 x25 0000000000000000 x26 0000007f54d8bcc0 x27 000000002c700000 09-24 15:12:18.733 16127 16127 F DEBUG : x28 00000000000ffd90 x29 0000007f492d3240 x30 0000007f6f36a54c 09-24 15:12:18.733 16127 16127 F DEBUG : sp 0000007f492d3230 pc 0000007f6f36a558 pstate 0000000060000000 09-24 15:12:18.740 16127 16127 F DEBUG : 09-24 15:12:18.740 16127 16127 F DEBUG : backtrace: 09-24 15:12:18.742 16127 16127 F DEBUG : #00 pc 0000000002d7a558 /data/app/com.android.chrome-2/base.apk (offset 0xc1b000) 09-24 15:12:18.742 16127 16127 F DEBUG : #01 pc 0000000002d7a548 /data/app/com.android.chrome-2/base.apk (offset 0xc1b000) 09-24 15:12:19.196 7746 7767 W LocalConnector: Cannot connect the wmserver-data-reciever-86111 09-24 15:12:19.196 7746 7767 W LocalConnector: java.io.IOException: Connection refused 09-24 15:12:19.196 7746 7767 W LocalConnector: at android.net.LocalSocketImpl.connectLocal(Native Method) 09-24 15:12:19.196 7746 7767 W LocalConnector: at android.net.LocalSocketImpl.connect(LocalSocketImpl.java:292) 09-24 15:12:19.196 7746 7767 W LocalConnector: at android.net.LocalSocket.connect(LocalSocket.java:131) 09-24 15:12:19.196 7746 7767 W LocalConnector: at com.miui.wmsvc.b.b.a$a.run(Unknown Source) 09-24 15:12:19.196 7746 7767 W LocalConnector: at java.lang.Thread.run(Thread.java:760)

sam-mckay commented 5 years ago

There's a lot of code compile warnings being generated by the C# code in this package, this makes it incompatible with projects where WarningsAsErrors as been enabled (which is fairly common in large scale production games). This should be remedied asap to avoid users of this plugin needing to modify the code to suit their project and therefore making upgrading harder later on as modifications will need re applying.

v0.10.3

NMeijerSparkling commented 5 years ago

@ozdemir08 v10.04 fixed our crashes, thanks! However, since we've started using GPGS v10 we've seen a significant increase in ANRs.

Here is our stacktrace:

  at com.unity3d.player.ReflectionHelper.nativeProxyInvoke (Native method)
  at com.unity3d.player.ReflectionHelper.a (unavailable)
  at com.unity3d.player.ReflectionHelper$1.invoke (unavailable)
  at java.lang.reflect.Proxy.invoke (Proxy.java:1006)
  at com.google.android.gms.tasks.OnSuccessListener.onSuccess (unavailable)
  at com.google.android.gms.tasks.zzn.run (unavailable:4)
- locked <0x0a3b6811> (a java.lang.Object)
  at android.os.Handler.handleCallback (Handler.java:873)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:214)
  at android.app.ActivityThread.main (ActivityThread.java:7156)
  at java.lang.reflect.Method.invoke (Native method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:494)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:975)

In AndroidSavedGamedClient we call OpenWithAutomaticConflictResolution which then calls InternalOpen. This in turn calls AddOnSuccessListener on AndroidTaskUtils. We suspect this is the issue as it matches com.google.android.gms.tasks.OnSuccessListener.onSuccess in the callstack and this issue started after updating to v10. No other changes have been made in the game in that update.

exzizt commented 5 years ago

Will leaderboard score retrieval be improved? The documentation even currently lies about its abilities. For example, it says you can specify the rank to start retrieving scores at, however, it ALWAYS starts from the first rank and completely ignores the specified Range if one is provided. https://github.com/playgameservices/play-games-plugin-for-unity#accessing-leaderboard-data

The rank position to start retrieving scores.

Lies! ^

ozdemir08 commented 5 years ago

In AndroidSavedGamedClient we call OpenWithAutomaticConflictResolution which then calls InternalOpen. This in turn calls AddOnSuccessListener on AndroidTaskUtils. We suspect this is the issue as it matches com.google.android.gms.tasks.OnSuccessListener.onSuccess in the callstack and this issue started after updating to v10. No other changes have been made in the game in that update.

Glad that v10.04 fixed your crashes! Also, thanks for reporting this, I'll look into it.