Whenever I try to create a room with the Google Play Games Services Plug-in for for Unity the progress gets stuck at 20%. 20% is the first and only value that is returned in the OnRoomSetupProgress(float percent)
function that is part of my RealTimeMultiplayerListener
instance. OnRoomConnected(bool success)
never gets called.
Real Time Multiplayer is definitely activated in my Google Play Developer Console (otherwise I'd get error code 6003 - been there). I tested the code on two different devices (Nexus S and Wacom Cintiq Companion Hybrid) on 2 different WLAN networks and 3G. I downloaded the plug-in as a Unity package from the official Git Hub repository. I tested multiple versions (all 0.9.0x packages up to 0.9.07). My Unity version is Unity free 4.5.4 using the free Android extension.
The code itself is based on the Minimal sample that comes with the GPGS Plug-in for Unity. This is the "Behaviour" class that is attached to a game object and is responsible for GUI drawing:
using System.Collections;
using UnityEngine;
using UnityEngine.SocialPlatforms;
using GooglePlayGames;
public class MainGui : MonoBehaviour {
private bool mWaitingForAuth = false;
private bool mWaitingForRoom = false;
private string mStatusText = "Ready.";
private VersusListener vsListener;
void Start() {
PlayGamesPlatform.DebugLogEnabled = true;
PlayGamesPlatform.Activate();
vsListener = new VersusListener();
}
void OnGUI() {
if (mWaitingForRoom) {
mStatusText = "Loading room... " + vsListener.m_roomProgress.ToString() + "%";
}
GUILayout.Label(mStatusText);
if (mWaitingForAuth) {
return;
}
if (mWaitingForRoom) {
if (GUILayout.Button("Cancel")) {
// Cancel room loading!
mStatusText = "Loading room cancelled.";
mWaitingForRoom = false;
PlayGamesPlatform.Instance.RealTime.LeaveRoom();
}
return;
}
if (Social.localUser.authenticated) {
if (GUILayout.Button("Sign Out")) {
// Sign out!
mStatusText = "Signing out.";
((PlayGamesPlatform)Social.Active).SignOut();
}
if (GUILayout.Button("Quick Match")) {
mWaitingForRoom = true;
PlayGamesPlatform.Instance.RealTime.CreateQuickGame(1, 1, 0, vsListener);
}
}
else {
if (GUILayout.Button("Authenticate")) {
// Authenticate
mWaitingForAuth = true;
mStatusText = "Authenticating...";
Social.localUser.Authenticate((bool success) => {
mWaitingForAuth = false;
mStatusText = success ? "Successfully authenticated" : "Authentication failed.";
});
}
}
}
}
...and that's the RealTimeMultiplayerListener interface implementation I use:
using UnityEngine;
using GooglePlayGames.BasicApi.Multiplayer;
public class VersusListener : RealTimeMultiplayerListener {
public bool m_roomLoaded = false;
public bool m_peerConnected = false;
public float m_roomProgress = 0.0f;
public bool m_messageReceived = false;
public string m_message = "";
public void OnRoomSetupProgress(float percent) {
m_roomProgress = percent;
Debug.Log("Versus Listener: Callback - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " called");
Debug.Log(" Room Progress update: " + percent.ToString() + "%");
}
public void OnRoomConnected(bool success) {
m_roomLoaded = success;
Debug.Log("Versus Listener: Callback - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " called");
}
public void OnLeftRoom() {
m_roomLoaded = false;
Debug.Log("Versus Listener: Callback - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " called");
}
public void OnPeersConnected(string[] participantIds) {
m_peerConnected = true;
Debug.Log("Versus Listener: Callback - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " called");
}
public void OnPeersDisconnected(string[] participantIds) {
m_peerConnected = false;
Debug.Log("Versus Listener: Callback - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " called");
}
public void OnRealTimeMessageReceived(bool isReliable, string senderId, byte[] data) {
char[] chars = new char[data.Length / sizeof(char)];
System.Buffer.BlockCopy(data, 0, chars, 0, data.Length);
m_message = new string(chars);
Debug.Log("Versus Listener: Callback - " + System.Reflection.MethodBase.GetCurrentMethod().Name + " called");
}
}
Finally this is the (Unity filtered) log I get:
10-24 15:05:24.218: D/Unity(477): GL_EXT_debug_marker GL_OES_rgb8_rgba8 GL_OES_depth24 GL_OES_vertex_half_float GL_OES_texture_float GL_OES_texture_half_float GL_OES_element_index_uint GL_OES_mapbuffer GL_OES_fragment_precision_high GL_OES_compressed_ETC1_RGB8_texture GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_required_internalformat GL_OES_depth_texture GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_standard_derivatives GL_OES_vertex_array_object GL_OES_egl_sync GL_EXT_multi_draw_arrays GL_EXT_texture_format_BGRA8888 GL_EXT_discard_framebuffer GL_EXT_shader_texture_lod GL_IMG_shader_binary GL_IMG_texture_compression_pvrtc GL_IMG_texture_npot GL_IMG_texture_format_BGRA8888 GL_IMG_read_format GL_IMG_program_binary GL_IMG_multisampled_render_to_texture
10-24 15:05:33.367: I/Unity(477): [Play Games Plugin DLL] Activating PlayGamesPlatform.
10-24 15:05:33.367: I/Unity(477):
10-24 15:05:33.367: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:33.910: I/Unity(477): [Play Games Plugin DLL] PlayGamesPlatform activated: GooglePlayGames.PlayGamesPlatform
10-24 15:05:33.910: I/Unity(477):
10-24 15:05:33.910: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:44.160: I/Unity(477): [Play Games Plugin DLL] Creating platform-specific Play Games client.
10-24 15:05:44.160: I/Unity(477):
10-24 15:05:44.160: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:45.218: I/Unity(477): [Play Games Plugin DLL] Making sure PlayGamesHelperObject is ready.
10-24 15:05:45.218: I/Unity(477):
10-24 15:05:45.218: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:45.785: I/Unity(477): [Play Games Plugin DLL] Initializing Android Client.
10-24 15:05:45.785: I/Unity(477):
10-24 15:05:45.785: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:45.785: I/Unity(477): [Play Games Plugin DLL] Creating GameHelperManager to manage GameHelper.
10-24 15:05:45.785: I/Unity(477):
10-24 15:05:45.785: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:45.816: I/Unity(477): [Play Games Plugin DLL] Setting up GameHelperManager.
10-24 15:05:45.816: I/Unity(477):
10-24 15:05:45.816: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:45.832: I/Unity(477): [Play Games Plugin DLL] GHM creating GameHelper.
10-24 15:05:45.832: I/Unity(477):
10-24 15:05:45.832: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:46.023: I/Unity(477): [Play Games Plugin DLL] GHM calling GameHelper constructor with flags=7
10-24 15:05:46.023: I/Unity(477):
10-24 15:05:46.023: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:46.207: I/Unity(477): [Play Games Plugin DLL] PlayGamesHelperObject created.
10-24 15:05:46.207: I/Unity(477):
10-24 15:05:46.207: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:46.211: I/Unity(477): [Play Games Plugin DLL] AUTH: starting auth process, silent=False
10-24 15:05:46.211: I/Unity(477):
10-24 15:05:46.211: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:46.695: I/Unity(477): [Play Games Plugin DLL] GHM setting up GameHelper.
10-24 15:05:46.695: I/Unity(477):
10-24 15:05:46.695: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:46.754: I/Unity(477): [Play Games Plugin DLL] GHM Setting GameHelper options.
10-24 15:05:46.754: I/Unity(477):
10-24 15:05:46.754: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:46.824: I/Unity(477): [Play Games Plugin DLL] GHM calling GameHelper.setup
10-24 15:05:46.824: I/Unity(477):
10-24 15:05:46.824: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:47.062: I/Unity(477): [Play Games Plugin DLL] GHM: GameHelper setup done.
10-24 15:05:47.062: I/Unity(477):
10-24 15:05:47.062: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:47.062: I/Unity(477): [Play Games Plugin DLL] GHM Setting up lifecycle.
10-24 15:05:47.062: I/Unity(477):
10-24 15:05:47.062: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:47.066: I/Unity(477): [Play Games Plugin DLL] GHM calling GameHelper.onStart to try initial auth.
10-24 15:05:47.066: I/Unity(477):
10-24 15:05:47.066: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:47.547: I/Unity(477): [Play Games Plugin DLL] AUTH: connection in progress; auth now pending.
10-24 15:05:47.547: I/Unity(477):
10-24 15:05:47.547: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:48.433: I/Unity(477): [Play Games Plugin DLL] GHM/GameHelperListener got onSignInSucceeded, origin 1000, notifying GHM.
10-24 15:05:48.433: I/Unity(477):
10-24 15:05:48.433: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:48.437: I/Unity(477): [Play Games Plugin DLL] GHM got onSignInSucceeded, origin 1000, notifying AndroidClient.
10-24 15:05:48.437: I/Unity(477):
10-24 15:05:48.437: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:48.453: I/Unity(477): [Play Games Plugin DLL] AndroidClient got OnSignInSucceeded.
10-24 15:05:48.453: I/Unity(477):
10-24 15:05:48.453: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:48.457: I/Unity(477): [Play Games Plugin DLL] Attempting to retrieve player info.
10-24 15:05:48.457: I/Unity(477):
10-24 15:05:48.457: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:48.593: I/Unity(477): [Play Games Plugin DLL] Player ID: 123456789101112131415
10-24 15:05:48.593: I/Unity(477):
10-24 15:05:48.593: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:48.601: I/Unity(477): [Play Games Plugin DLL] Player display name: Test User
10-24 15:05:48.601: I/Unity(477):
10-24 15:05:48.601: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:48.601: I/Unity(477): [Play Games Plugin DLL] AUTH: Auth succeeded. Proceeding to achievement loading.
10-24 15:05:48.601: I/Unity(477):
10-24 15:05:48.601: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:48.609: I/Unity(477): [Play Games Plugin DLL] AUTH: Now performing initial achievement load...
10-24 15:05:48.609: I/Unity(477):
10-24 15:05:48.609: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:48.707: I/Unity(477): [Play Games Plugin DLL] AUTH: Initial achievement load call made.
10-24 15:05:48.707: I/Unity(477):
10-24 15:05:48.707: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.156: I/Unity(477): [Play Games Plugin DLL] OnAchievementsLoadedResultProxy invoked
10-24 15:05:49.156: I/Unity(477):
10-24 15:05:49.156: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.172: I/Unity(477): [Play Games Plugin DLL] result=UnityEngine.AndroidJavaObject
10-24 15:05:49.172: I/Unity(477):
10-24 15:05:49.172: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.230: I/Unity(477): [Play Games Plugin DLL] AUTH: Initial achievement load finished.
10-24 15:05:49.230: I/Unity(477):
10-24 15:05:49.230: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.230: I/Unity(477): [Play Games Plugin DLL] Processing achievement buffer.
10-24 15:05:49.230: I/Unity(477):
10-24 15:05:49.230: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.258: I/Unity(477): [Play Games Plugin DLL] AchievementBank: processing achievement buffer given as Java object.
10-24 15:05:49.258: I/Unity(477):
10-24 15:05:49.258: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.261: I/Unity(477): [Play Games Plugin DLL] AchievementBank: buffer contains 0 achievements.
10-24 15:05:49.261: I/Unity(477):
10-24 15:05:49.261: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.261: I/Unity(477): [Play Games Plugin DLL] AchievementBank: bank now contains 0 entries.
10-24 15:05:49.261: I/Unity(477):
10-24 15:05:49.261: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.261: I/Unity(477): [Play Games Plugin DLL] Closing achievement buffer.
10-24 15:05:49.261: I/Unity(477):
10-24 15:05:49.261: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.265: I/Unity(477): [Play Games Plugin DLL] AUTH: Auth process complete!
10-24 15:05:49.265: I/Unity(477):
10-24 15:05:49.265: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.265: I/Unity(477): [Play Games Plugin DLL] AUTH: Calling auth callback: success=True
10-24 15:05:49.265: I/Unity(477):
10-24 15:05:49.265: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.297: I/Unity(477): [Play Games Plugin DLL] AndroidClient: CheckInvitationFromNotification.
10-24 15:05:49.297: I/Unity(477):
10-24 15:05:49.297: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.300: I/Unity(477): [Play Games Plugin DLL] AndroidClient: looking for invitation in our GameHelper.
10-24 15:05:49.300: I/Unity(477):
10-24 15:05:49.300: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.328: I/Unity(477): [Play Games Plugin DLL] GHM clearing invitation and turn-based match on GameHelper.
10-24 15:05:49.328: I/Unity(477):
10-24 15:05:49.328: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.343: I/Unity(477): [Play Games Plugin DLL] No invitation in our GameHelper. Trying SignInHelperManager.
10-24 15:05:49.343: I/Unity(477):
10-24 15:05:49.343: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.383: I/Unity(477): [Play Games Plugin DLL] No invitation in SignInHelperManager either.
10-24 15:05:49.383: I/Unity(477):
10-24 15:05:49.383: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.383: I/Unity(477): [Play Games Plugin DLL] No match in our GameHelper. Trying SignInHelperManager.
10-24 15:05:49.383: I/Unity(477):
10-24 15:05:49.383: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.383: I/Unity(477): [Play Games Plugin DLL] No match in SignInHelperManager either.
10-24 15:05:49.383: I/Unity(477):
10-24 15:05:49.383: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.386: I/Unity(477): [Play Games Plugin DLL] AndroidTbmpClient.OnSignInSucceeded
10-24 15:05:49.386: I/Unity(477):
10-24 15:05:49.386: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.386: I/Unity(477): [Play Games Plugin DLL] Querying for max match data size...
10-24 15:05:49.386: I/Unity(477):
10-24 15:05:49.386: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:05:49.425: I/Unity(477): [Play Games Plugin DLL] Max match data size: 131072
10-24 15:05:49.425: I/Unity(477):
10-24 15:05:49.425: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:00.996: I/Unity(477): [Play Games Plugin DLL] AndroidRtmpClient.CreateQuickGame, opponents=1-1, variant=0
10-24 15:06:00.996: I/Unity(477):
10-24 15:06:00.996: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:01.000: I/Unity(477): [Play Games Plugin DLL] Requesting API call: rtmp create quick game
10-24 15:06:01.000: I/Unity(477):
10-24 15:06:01.000: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:01.050: I/Unity(477): [Play Games Plugin DLL] Connected! Calling API: rtmp create quick game
10-24 15:06:01.050: I/Unity(477):
10-24 15:06:01.050: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.457: I/Unity(477): [Play Games Plugin DLL] AndroidClient.OnRoomCreated, status 0
10-24 15:06:07.457: I/Unity(477):
10-24 15:06:07.457: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.488: I/Unity(477): [Play Games Plugin DLL] UpdateRoom: Updating our cached data about the room.
10-24 15:06:07.488: I/Unity(477):
10-24 15:06:07.488: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.488: I/Unity(477): [Play Games Plugin DLL] UpdateRoom: room id: ChoKCQjHn6aguhAQAhABGAAg____________ARDR9MqBqbryg80B
10-24 15:06:07.488: I/Unity(477):
10-24 15:06:07.488: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.496: I/Unity(477): [Play Games Plugin DLL] UpdateRoom: querying for my player ID.
10-24 15:06:07.496: I/Unity(477):
10-24 15:06:07.496: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.508: I/Unity(477): [Play Games Plugin DLL] UpdateRoom: my player ID is: 123456789101112131415
10-24 15:06:07.508: I/Unity(477):
10-24 15:06:07.508: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.508: I/Unity(477): [Play Games Plugin DLL] UpdateRoom: querying for my participant ID in the room.
10-24 15:06:07.508: I/Unity(477):
10-24 15:06:07.508: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.547: I/Unity(477): [Play Games Plugin DLL] UpdateRoom: my participant ID is: p_CNH0yoGpuvKDzQEQAQ
10-24 15:06:07.547: I/Unity(477):
10-24 15:06:07.547: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.570: I/Unity(477): [Play Games Plugin DLL] UpdateRoom: # participants: 1
10-24 15:06:07.570: I/Unity(477):
10-24 15:06:07.570: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.570: I/Unity(477): [Play Games Plugin DLL] UpdateRoom: querying participant #0
10-24 15:06:07.570: I/Unity(477):
10-24 15:06:07.570: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.593: I/Unity(477): [Play Games Plugin DLL] UpdateRoom: participant #0 has id: p_CNH0yoGpuvKDzQEQAQ
10-24 15:06:07.593: I/Unity(477):
10-24 15:06:07.593: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.648: I/Unity(477): [Play Games Plugin DLL] Participant is SELF.
10-24 15:06:07.648: I/Unity(477):
10-24 15:06:07.648: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.730: I/Unity(477): [Play Games Plugin DLL] UpdateRoom: participant list now has 0 participants.
10-24 15:06:07.730: I/Unity(477):
10-24 15:06:07.730: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.730: I/Unity(477): [Play Games Plugin DLL] UpdateRoom: cleanup.
10-24 15:06:07.730: I/Unity(477):
10-24 15:06:07.730: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.730: I/Unity(477): [Play Games Plugin DLL] UpdateRoom: newly connected participants: 0
10-24 15:06:07.730: I/Unity(477):
10-24 15:06:07.730: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.730: I/Unity(477): [Play Games Plugin DLL] UpdateRoom: newly disconnected participants: 0
10-24 15:06:07.730: I/Unity(477):
10-24 15:06:07.730: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.734: I/Unity(477): [Play Games Plugin DLL] AndroidRtmpClient: DeliverRoomSetupProgressUpdate
10-24 15:06:07.734: I/Unity(477):
10-24 15:06:07.734: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.800: I/Unity(477): [Play Games Plugin DLL] room setup progress: 20%
10-24 15:06:07.800: I/Unity(477):
10-24 15:06:07.800: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.800: I/Unity(477): [Play Games Plugin DLL] Delivering progress to callback.
10-24 15:06:07.800: I/Unity(477):
10-24 15:06:07.800: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.828: I/Unity(477): Versus Listener: Callback - OnRoomSetupProgress called
10-24 15:06:07.828: I/Unity(477):
10-24 15:06:07.828: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
10-24 15:06:07.832: I/Unity(477): Room Progress update: 20%
10-24 15:06:07.832: I/Unity(477):
10-24 15:06:07.832: I/Unity(477): (Filename: ./artifacts/AndroidManagedGenerated/UnityEngineDebug.cpp Line: 49)
Empirically found out that 20% means "everything is ready, but no one else is connected". So you got stuck at 20% on both testing devices simultaneously? If so, make sure that you're not trying to log in with same google account (been there). If not, make sure that both devices reach this state.