Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Desquiciado con el problema de la APK :(

Iniciado por LeBronidas, Septiembre 25, 2015, 04:34:30 PM

Tema anterior - Siguiente tema
Hago un resumen lo más breve posible de mi problema con el APK en algunos móviles Android.Estoy trabajando con unity 4.6 para empezar, y mi juego esta siendo exportado  Android y posteriormente a iOS. El problema viene cuando una vez toda el SDK de android y Java bien instalados le doy a compilar a mi juego, exporta el APK sin problemas y en un peso de unos 41 mb, hasta ahi todo correcto, ahora viene el problema, instalé el APK en el Motorola Moto G dejándola en la carpeta de downloads y luego instalando, cargan los menús y las escenas que hay antes del primer nivel, pero una vez tiene que cargar la escena de juego, este se peta y vuelve al menú de Android.Probé luego instalando el APK en un nexus 5 y aquí lo movía todo sin problema alguno. Luego lo instale para un Samsung Galaxy Trend Plus, arrancaba la pantalla de juego pero iba muy lento de vez en cuando llegando a cerrarse. En otros dispositivos de amigos ha funcionado perfectamente excepto en un par de casos,en un LG G3 también se cierra.Varias razones que he pensado: Quizás el juego utilice mucha RAM y pete con la que ya consume el sistema, por eso dependiendo de que fabricante sea la capa de android en unos irá mejor o peor. Cuando me refiero a RAM en los Stats del juego me dice que a lo max que llega a consumir son 200 mb, quizás es demasiado para un juego móvil. Si es por esto me gustaría saber algún remedio.Este es mi problema, no se muy bien como solucionarlo, si cambiando alguna configuración en la exportación de Android o como. La consola de Unity me muestra unos errores pero es con un fallo de enlace de unos sprites del juego pero este funciona sin ningún tipo de problema utilizando dichos sprites.Muchas gracias de antemano y un saludo!  

pues este es un tema en el que dificilmente se te podra ayudar, te lo encuentras incluso en los videojuegos de grandes empresas ... eso de que funcione perfectamente en cierto modelo de movil, en otro vaya a trompicones y en otro directamente no vaya.si tu juego fuera para ordenador, dificilmente te encontrarias que a alguien no le funcionara, pero siendo para movil (con la gran variedad de moviles existentes) es muy corriente encontrarte con esta situacion; no te queda otra que optimizarlo todo al maximo posible, y como recomendacion utilizar un movil de gama media-baja para hacer tus pruebas. Tal vez puedes encontrarte con excepciones puntuales, pero la logica dice que si un juego funciona en un movil de gama baja, tambien lo hara en un movil de gama media - alta.otra alternativa es, como dices que importaras tu juego a IOS, pues pasar de android ... no se hasta que punto estarias dispuesto a ese sacrificio (hay que tener en cuenta que perderias mucha cuota de usuarios) pero no te encontrarias con ese problema puesto que todos los iphone son iguales y no existe esa variedad que vuelve loco en el caso de android.por ultimo, aunque es posible que si te funciona correctamente no tenga nada que ver con tu problema ... yo te recomendaria que si la consola de Unity te muestra una serie de errores (sea de scripts, sprites o cualquier cosa) siempre los soluciones y lo dejes todo limpio antes de compilar tu juego.

Publica una captura de las pantallas con el stats activo, para ver los detalles.Errores (en rojo, no warnings) pueden provocar efectos paralelos si no se solventan. Conviene hacerlo, aunque sea por pulcritud.Vigila la carpeta Resources. Esta carpeta se exporta siempre con el proyecto, hayan referencias en el código al contenido o no.Y por último, no hay ningún botón en la exportación que diga, "compilar para que funcione suave y bien Si/no". La optimización es un proceso paulatino y constante, no cuando el código ya está hecho sin haber comprobado ni una caída de frames previamente.

[quote author=Arthure" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="26497" data-ipsquote-contentcommentid="113760">pues este es un tema en el que dificilmente se te podra ayudar, te lo encuentras incluso en los videojuegos de grandes empresas ... eso de que funcione perfectamente en cierto modelo de movil, en otro vaya a trompicones y en otro directamente no vaya.si tu juego fuera para ordenador, dificilmente te encontrarias que a alguien no le funcionara, pero siendo para movil (con la gran variedad de moviles existentes) es muy corriente encontrarte con esta situacion; no te queda otra que optimizarlo todo al maximo posible, y como recomendacion utilizar un movil de gama media-baja para hacer tus pruebas. Tal vez puedes encontrarte con excepciones puntuales, pero la logica dice que si un juego funciona en un movil de gama baja, tambien lo hara en un movil de gama media - alta.otra alternativa es, como dices que importaras tu juego a IOS, pues pasar de android ... no se hasta que punto estarias dispuesto a ese sacrificio (hay que tener en cuenta que perderias mucha cuota de usuarios) pero no te encontrarias con ese problema puesto que todos los iphone son iguales y no existe esa variedad que vuelve loco en el caso de android.por ultimo, aunque es posible que si te funciona correctamente no tenga nada que ver con tu problema ... yo te recomendaria que si la consola de Unity te muestra una serie de errores (sea de scripts, sprites o cualquier cosa) siempre los soluciones y lo dejes todo limpio antes de compilar tu juego.[/quote]En los stats que reviso cuando estoy jugando la ram utilizada no pasa de los 100 mb, algunos picos tiene cuando aparecen prefabs que hay que cargar pero vuelven a la normalidad cuando son destruidos, al ver esto pensé en que como mi juego es un estilo "runner", tengo unos objetos a los lados que son prefabs los cuales no son eliminados cuando no aparecen en pantalla. Podría suponer una cargar mayor de ram, probare a eliminarlos cuando no estén en pantalla.Con los moviles que he tenido problemas han sido con los LG's sobretodo, también dicen por ahí que su capa de Android es basura pero bueno. Te doy la razón con lo que dices tambien, muchos juegos de grandes compañias acaban haciendo lo mismo y si en mi situación soy yo el único encargado de todo pues menos podre optimizar que ellos.Muchas Gracias por la ayuda! Publica una captura de las pantallas con el stats activo, para ver los detalles.Errores (en rojo, no warnings) pueden provocar efectos paralelos si no se solventan. Conviene hacerlo, aunque sea por pulcritud.Vigila la carpeta Resources. Esta carpeta se exporta siempre con el proyecto, hayan referencias en el código al contenido o no.Y por último, no hay ningún botón en la exportación que diga, "compilar para que funcione suave y bien Si/no". La optimización es un proceso paulatino y constante, no cuando el código ya está hecho sin haber comprobado ni una caída de frames previamente.[/quote]Cuando vuelva a casa este domingo te mostraré las capturas de pantalla de los recursos utilizados durante el juego y de los errores que me da la consola.Añado que los problemas que me da la consola, y creo que es por esto, vienen de cuando el proyecto me lo lleve a mi casa para trabajar en el portátil y luego al volver a importarlo al otro ordenador, dio como unos fallos de carga de assets los cuales siguen en sus carpetas, o algo no entendido muy bien de ese fallo en especial, estaría muy bien solucionarlos pero como dices tu por acostumbrarse a trabajar sin fallos y por orden y limpieza del proyecto.Y los errores de optimización es como ha dicho el compañero, Android es un mundo cada teléfono y les pasa a muchos juegos pero querría ver como puedo yo optimizar todo lo posible el juego para llegar a más usuarios. Probare como he dicho arriba eliminando prefabs que no aparecen en la cámara cuando el juego avanza para ir liberando espacio y alguna cosa más.Muchas gracias! :D

me ha descolocado un poco porque dices que los picos vuelven a la normalidad cuando los objetos son destruidos, y en otro punto he leido que eliminaras los prefabs que ya no aparecen en la camara para liberar ... tambien veo que tu juego es tipo runner ?mmmm pues sin mas datos, yo apostaria que eso tiene muchas papeletas para ser parte del problema. siempre es necesario optimizar al maximo, pero si es posible con este tipo de juego aun mas porque esta creando continuamente objetos (ya sean plataformas, monedas, etc) y, si una vez que ya no los utilizaras no te encargas de eliminarlos, es una carga brutal para el dispositivo.arregla eso y seguro que el problema te mejora radicalmente (incluso te diria que un runner es perfecto para implementar algun pool y eso aumentaria el rendimiento)

[quote author=Arthure" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="26497" data-ipsquote-contentcommentid="113981">me ha descolocado un poco porque dices que los picos vuelven a la normalidad cuando los objetos son destruidos, y en otro punto he leido que eliminaras los prefabs que ya no aparecen en la camara para liberar ... tambien veo que tu juego es tipo runner ?mmmm pues sin mas datos, yo apostaria que eso tiene muchas papeletas para ser parte del problema. siempre es necesario optimizar al maximo, pero si es posible con este tipo de juego aun mas porque esta creando continuamente objetos (ya sean plataformas, monedas, etc) y, si una vez que ya no los utilizaras no te encargas de eliminarlos, es una carga brutal para el dispositivo.arregla eso y seguro que el problema te mejora radicalmente (incluso te diria que un runner es perfecto para implementar algun pool y eso aumentaria el rendimiento) [/quote]Si, te pongo un ejemplo de situación de juego, en el primer nivel tu manejas tu personaje, el cual puedes mover de izquierda a derecha mientras vas subiendo por una calle, al final de la calle es donde aparecen los objetos ( los prefabs ) y van bajando para que tu puedas cogerlos o esquivarlos, y detrás de ti hay una barrera que en este caso son 7 prefabs que detectan la colisión de los objetos y la eliminan ( lo tengo hecho así porque digamos que encaja en la temática del juego pero pensándolo mejor podría ahorrarme esos 7 y dejarlos en 1 solo creando un empty object con box collider y el nombre correcto para que detecte la colisión y los elimine ). Por otra parte en los laterales del juego esta el público que si te soy sincero son como 50 o 60 prefabs que están colocados quietos mientras tu avanzas, estos son los únicos que no elimino en ningún momento, y pensaba que quizás sería una mejora de rendimiento reducir el publico a la mitad y eliminarlos cuando salgan de pantalla.Y sobre lo que comentas de utilizar el pool, sinceramente, es la primera vez que oigo hablar del "pool" me he informado a raiz de lo que me has dicho y puede ser una buena implementación para el futuro, muchas gracias por el consejo! :D

Etiquetas: