wp-plugin-bluehost
domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init
action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home1/spotsail/public_html/martra/wp-includes/functions.php on line 6114El mismo Google mantiene el pluguin “Google Play Games pluguin for Unity<\/a>“. Este pluguin nos da acceso a los siguientes servicios:<\/p>\n En este ejemplo vamos a crear un logro y usarlo.<\/p>\n <\/a> Tenemos que tener la aplicaci\u00f3n dada de alta en la Google Play Console<\/strong>, no hace falta que lo tengamos publicado, pero si que tiene que estar dado de alta. Pod\u00e9is seguir la gu\u00eda en la que explico como subir un juego a la Google Play Store<\/a>.<\/p>\n Una vez tenemos la aplicaci\u00f3n dada de alta, tenemos que activar el servicio.<\/p>\n En development tools (men\u00fa izquierda) encontraremos Services & APIs que nos dar\u00e1 la posibilidad de activar Google Play Services.\u00a0<\/a><\/p>\n Una vez seleccionado Services & APIs<\/em><\/strong> tenemos que pulsar el bot\u00f3n USE GOOGLE PLAY GAME SERVICES IN THIS APP<\/em>, que encontramos en la parte central.<\/p>\n Podemos pulsar Sample Game, y veremos una aplicaci\u00f3n de ejemplo.<\/a><\/p>\n Pulsamos SET UP GOOGLE PLAY GAME SERVICES<\/em> y ya empezamos a configurar nuestra aplicaci\u00f3n.<\/p>\n Escogemos la opci\u00f3n I don’t use any Google APIs in my game yet<\/em><\/strong>. Como nombre del juego y categoria, he escogido las que ya he configurado al dar de alta la aplicaci\u00f3n en Google Play Store Console.<\/p>\n Configurando los datos de la aplicaci\u00f3n.\u00a0<\/a><\/p>\n Necesitamos un icono de 512×512 y una imagen de cabecera de 1024 x 500.<\/p>\n Todos estos datos ya los tendremos si hemos dado de alta previamente la aplicaci\u00f3n.<\/p>\n <\/a><\/p>\n En linked apps nos encontramos con diferentes plataformas,\u00a0 en este caso he escogido Android. Se tiene que informar del nombre del apk de la aplicaci\u00f3n a linkar. Si la hemos dado de alta correctamente, escogeremos el package name de un combo, donde nos presentar\u00e1 todos los que est\u00e1n disponibles para ser linkados.<\/p>\n Una vez informado el apk pulsamos el bot\u00f3n Save and Continue<\/em><\/strong>.\u00a0<\/a>Despu\u00e9s de pulsar sobre AUTHORIZE YOUR APP NOW<\/em> nos presentara un par de cuadros de dialogo mas, mostrando la clave generada, no tenemos que hacer nada mas que darle al OK.<\/p>\n Lo importante es que cuando acabemos tendremos informado el Application ID y el OAuth2 Client ID. En la parte inferior de la pantalla de linked apps.<\/p><\/blockquote>\n <\/a><\/p>\n Los dos \u00faltimos campos nos indican el Application ID y el Oauths Client ID. Con esto ya podemos dar nuestra aplicaci\u00f3n por correctamente configurada en la Google Play Console para usar los Google Play Services.<\/p>\n Seleccionamos la opci\u00f3n de Achievements<\/em><\/strong> del men\u00fa lateral izquierdo.<\/p>\n <\/a><\/p>\n Una vez seleccionado ADD ACHIEVEMENT<\/em> vemos todo lo que tenemos que informar:<\/p>\n <\/a><\/p>\n Tenemos que informar:<\/p>\n Cuando lo tengamos todo informado, le damos al SAVE, en la parte superior de la pantalla, y ya tenemos un logro creado!<\/p>\n <\/a><\/p>\n Como podemos ver debajo de la lista tenemos un link a Get resources. Al pulsarlo nos abrir\u00e1 una ventana con un c\u00f3digo que necesitaremos para configurar el plugin de Unity.<\/strong> Ya volveremos a por el despu\u00e9s de configurar el plugin.<\/p>\n Nos descargamos el pluguin desde su hoja en github:\u00a0https:\/\/github.com\/playgameservices\/play-games-plugin-for-unity.<\/a><\/p>\n Una vez descargado, lo descomprimimos y en la carpeta current-build<\/em> encontraremos el package a importar desde Unity.<\/strong><\/p>\n En Unity seleccionamos Assets->Import Package->Custom Package<\/em> <\/strong>y seleccionamos el package de la carpeta current-build. Al finalizar la importaci\u00f3n Unity nos mostrar\u00e1 un mensaje indicando que el plugin ya esta instalado.<\/p>\n <\/a><\/p>\n Como podemos ver en el mensaje el plugin aun se tiene que configurar. Una vez la demos al OK la instalaci\u00f3n continuara durante un momento.<\/p>\n En el mensaje se nos dice que tenemos que buscar el menu Google Play Games<\/strong>, lo mas normal es no encontrarlo y acabar buscando en internet: No me aparece el menu del plugin Google Play Games for Unity, o si sabes ingles: Google Play Services Menu is not appearing. Nos ahorramos este paso, el men\u00fa esta en: Window->Google Play Games->Setup->Android Setup…<\/em><\/strong><\/p>\n <\/a><\/p>\n Al abrir el cuadro de dialogo tan solo tenemos que informar los android Resources, que los recuperaremos del listado de Achivements de la Google Play Console, donde hace nada hemos configurado nuestros logros. Tambi\u00e9n podemos cambiar el nombre de la clase que contendr\u00e1 los ID’s de los logros, lo encontramos en la casilla Constants class name.<\/em><\/p>\n El contenido a pegar en Resources definition lo obtenemos de la Google Play Console, en nuestro paso 1.2, donde hemos creado el logro, al finalizar nos mostraba un link para obtener el c\u00f3digo que ahora pegaremos en este cuadro de dialogo. Despu\u00e9s de hacer el copy \/ paste , pulsamos Setup<\/em><\/strong> y si todo va bien nos mostrara un mensaje indicandolo.<\/p>\n Ya hemos avanzado mucho, por ahora tenemos:<\/p>\n Ahora nos toca crear un poco de c\u00f3digo.<\/p>\n Para hacer el login tenemos varias opciones, podemos habilitar un bot\u00f3n o podemos hacer que el login se haga automaticamente al arrancar la aplicaci\u00f3n. Yo prefiero esta segunda opci\u00f3n, y para el caso, las llamadas a los Google Play Services son las mismas.<\/p>\n Vamos a crear un plugin, yo lo he llamo loadGame, por que se ejecutar\u00e1 al cargar el juego.<\/p>\n Vamos a ver su contenido:<\/p>\n [code language=”csharp”] public class loadGame : MonoBehaviour {<\/p>\n private void Awake() PlayGamesPlatform.DebugLogEnabled = true; public void SignInCallback(bool success) } } Primero tenemos que cargar los diferentes namespaces:<\/p>\n [code language=”csharp”] En la funci\u00f3n awake<\/em><\/strong> hacemos las llamadas necesarias para inicializar Google Play Services. Primero creamos el objeto config del tipo PlayGamesClientConfiguration<\/em><\/strong>. Como solo estamos utilizando los logros la llamada es muy sencilla, pero dependido de lo que queramos usar se puede complicar, veamos un ejemplo:<\/p>\n [code language=”csharp”] \/\/Inicializaci\u00f3n que permite salvar las partidas. En la llamada a Autenticate<\/em><\/strong> pasamos una funci\u00f3n de callback, que se llamar\u00e1 con el resultado del login. En la funci\u00f3n de callback, que he llamado SigInCallback<\/strong><\/em> recibimos una variable booleana indicando el \u00e9xito o fracaso de la operaci\u00f3n de login.<\/p>\n Con el plugin reci\u00e9n creado ahora tenemos pensado donde lo ponemos. No es demasiado importante, seleccionamos cualquier objeto que se cargue al iniciar el juego y le a\u00f1adimos el script \ud83d\ude42<\/p><\/blockquote>\n Una cosa es definir cuando se consigue el logro y la otra realizar la llamada. Aqu\u00ed trataremos la llamada, que es muy sencilla, desde donde ejecut\u00e9is esta llamada es cosa vuestra.<\/p>\n [code language=”csharp”] En el primer par\u00e1metro “GPGidenti.achievement_path_maker<\/em><\/strong>“, obtenemos el nombre del logro de la clase que hemos configurado en el cuadro de dialogo Windows->Google Play Games->Setup->Android Setup<\/em><\/strong>. La clase estar\u00e1 creada (posiblemente con un nombre diferente al que he usado yo, por defecto se llama GPSids). Es tan sencillo como escribir una sola linea:<\/p>\n PlayGamesPlatform<\/span>.<\/span>Instance<\/span>.<\/span>ShowAchievementsUI<\/span>(<\/span>)<\/span>;<\/span><\/span><\/p>\n Con esta linea Google ya se encarga de todo! Podemos decorarlo un poco y llamarla tan solo cuando sea necesario, o posible.<\/p>\n \u00a0\u00a0\u00a0\u00a0<\/span>public<\/span>\u00a0<\/span>void<\/span>\u00a0<\/span>ShowAchievements<\/span>(<\/span>)<\/span> Con esta funci\u00f3n nos aseguramos de que se este ejecutando en un sistema Android, y que el usuario ya este logado en Google Play Services.<\/p>\n <\/a><\/p>\n Con esto es suficiente como para obtener la pantalla que veis. Os prometo que no he tenido que escribir nada mas para mostrar esta magnifica pantalla de logros en Giskard in the Dark<\/a>.<\/p>\n Tan solo tenemos que conectar nuestro tel\u00e9fono y darle al Build & Run. Los pasos y la programaci\u00f3n para incorporar logros a nuestro juego mediante Google Play Services son sencillos. Dedicaremos\u00a0 bastante mas tiempo a pensar que logros poner, crear los iconos e incorporandos que programando los scripts necesarios.<\/p>\n Los logros del juego Giskard in the dark<\/a>\u00a0se han creado siguiendo esta gu\u00eda. El c\u00f3digo utilizado para el post ha salido directamente del juego. No dudes en bajarlo de la Google Play Store<\/a> para ver el resultado!<\/p><\/blockquote>\n <\/p>\n \n
Requisitos.<\/h2>\n
\n
\nPara actualizar el SDK y los Google Play Services lo podemos hacer desde el SDK Manager de Android Studio.<\/p>\n1-Configurando la Google Play Console.<\/h2>\n
\nNo usamos otros servicios Google Play Services.\u00a0<\/a><\/p>\n1.2-Vamos a crear los logros.<\/h3>\n
\n
2-Configurando el plugin de Google Play Services en Unity.<\/h2>\n
3-Los Scripts.<\/h2>\n
\n
3.1-Login en Google Play Services.<\/h3>\n
\nusing System.Collections;
\nusing System.Collections.Generic;
\nusing UnityEngine;
\nusing GooglePlayGames;
\nusing GooglePlayGames.BasicApi;<\/p>\n
\n {
\n#if UNITY_ANDROID
\n PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().Build();<\/p>\n
\n PlayGamesPlatform.InitializeInstance(config);
\n PlayGamesPlatform.Activate();
\n PlayGamesPlatform.Instance.Authenticate(SignInCallback, false);
\n#endif
\n }<\/p>\n
\n {
\n#if UNITY_ANDROID
\n if (success)
\n {
\n Debug.Log("(Giskard) Signed in!" + Social.localUser.userName);<\/p>\n
\n else
\n {
\n Debug.Log("(Giskard) Sign-in failed…");
\n }
\n#endif
\n }<\/p>\n
\n[\/code]<\/p>\n
\nusing UnityEngine;
\nusing GooglePlayGames;
\nusing GooglePlayGames.BasicApi;
\n[\/code]<\/p>\n
\n\/\/Inicializaci\u00f3n normal.
\nPlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().Build();<\/p>\n
\nPlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().EnableSavedGames().Build();
\n[\/code]<\/p>\n3.2-Logro conseguido.<\/h3>\n
\n \/\/achievement succed
\n PlayGamesPlatform.Instance.ReportProgress(
\n GPGidenti.achievement_path_maker,
\n 100.0f, (bool success) =>
\n {
\n Debug.Log("Path maker logro: " +
\n success);
\n });
\n[\/code]<\/p>\n
\nEn el segundo, le indicamos el grado de avance del logro<\/strong>, como hemos configurado un logro no incremental, cualquier valor que le pongamos por encima de 0 lo tomar\u00e1 como logro completado.
\nEl tercer y ultimo parametro es una funci\u00f3n de callback<\/strong>, que he puesto inside. Unity llamar\u00e1 a esta funci\u00f3n con el resultado de la operaci\u00f3n. Es decir si todo ha funcionado correctamente nos devuelve un true<\/em>, y un false<\/em> en caso contrario.<\/p>\n3.3-Consultar los logros.<\/h3>\n
\n\u00a0\u00a0\u00a0\u00a0<\/span>{<\/span>
\n#<\/span>if<\/span>\u00a0<\/span>UNITY_ANDROID<\/span>
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>if<\/span>\u00a0<\/span>(<\/span>PlayGamesPlatform<\/span>.<\/span>Instance<\/span>.<\/span>localUser<\/span>.<\/span>authenticated<\/span>)<\/span>
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>{<\/span>
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>PlayGamesPlatform<\/span>.<\/span>Instance<\/span>.<\/span>ShowAchievementsUI<\/span>(<\/span>)<\/span>;<\/span>
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>}<\/span>
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>else<\/span>
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>{<\/span>
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>Debug<\/span>.<\/span>Log<\/span>(<\/span>“Cannot\u00a0show\u00a0Achievements,\u00a0not\u00a0logged\u00a0in”<\/span>)<\/span>;<\/span>
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>}<\/span>
\n#<\/span>endif<\/span>
\n\u00a0\u00a0\u00a0\u00a0<\/span>}<\/span><\/span><\/p>\nYa lo tenemos.<\/h2>\n