Hola,
estoy haciendo pruebas en iphone y hasta ahora va todo bien, con excepcion de un detalle.
Cuando el juego "pierde el foco", por ejemplo cuando hacen una llamada, o abro el menu de tareas corriendo, o inclusive cuando se muestra un dialogo de bateria baja, el juego se congela, y no hay forma de seguir usandolo.
Para volver a entrar tengo que salir al inicio, hacer click en el icono, esto va a matar el proceso y luego voy a poder correr la aplicacion nuevamente.
A alguien mas le pasa lo mismo?
muchas gracias
alguien pudo probar esto? me tiene preocupado ::)
no tengo iphone
yo tengo el viejuno iphone 2, pero sin jealbreak.
El error ocurre inclusive con el ejemplo del uso del acelerometro hecho por Josebita.
Algo muy curioso, leyendo por internet nos dimos con que en Unity tienen el mismo problema, y lo solucionan dejando un archivo de audio corriendo. Con una prueba que hicimos, parte del problema se soluciona, pero al abrir el menu de multitarea se sigue clavando el problema.
Joseba ya esta trabajando en ello si no estoy mal informado.
A ver si se soluciona pronto.
Saludos!
Perdón por no responder. Efectivamente estoy intentando ver cómo resolverlo, pero no parece un bug sencillo.
SDL tiene un bug parecido a éste que no tengo claro si es la causa. Si le pones algún tipo de interactividad al juego (un mouse.left y que reproduzca un sonido) verás que el juego no está colgado, sólo el redibujado.
Al salir de la notificación o de la pantalla de bloqueo o del menú de multitarea parece que SDL vuelve a establecer el modo gráfico, pero quizás no lo esté haciendo bien o quizás cambie la dirección de memoria en la que está el buffer de pantalla... Me tiene un poco loco el bug.
Os aviso con lo que sea.
Basicamente lo que ocurre es que al hacer cualquiera de las acciones que "congelan" la imagen SDL hace "algo" que jode el tema de la resolución. Sin entrar en por qué creo que ocurre eso, si después de eso se hace un set_mode() a la resolución apropiada el juego vuelve a funcionar correctamente.
Voy a intentarlo esta noche pero lo que quiero probar (e imagino que funcionará) es crear un proceso que esté activo durante toda la ejecución y compruebe que la resolución sea la correcta. Sólo no lo será en los momentos en los que ahora la ejecución se "congela": pues la reseteamos y listo. Insisto en que es un apaño bastante cerdo, pero por lo menos imagino que funcionará.
Con el resultado de las pruebas que haga escribiré un post en el blog (http://"http://bennugd-mobile.blogspot.com/"). Aún así, creo que tengo un poco más claro por dónde van los tiros y seguiré intentando arreglar el bug de verdad, de forma que no hagan falta estos arerglos mierdosos.
Gracias Josebita, estas haciendo un trabajo excelente :D
Como se puede detectar el cambio de resolucion?
Ayer al final no pude subir ésto. Tengo un binario que lo hace más fácil. Intentaré subirlo esta tarde.
Tengo unas cuantas cosas pendientes a cuenta del port a iOS, pero es que me está costando bastante arreglarlo, a pesar de que le estoy dedicando un montón de tiempo.
Bueno, dejo el binario actualizado. Cuando ocurre alguno de los eventos que deberían forzar el redibujado se hace focus_status=1, el resto del tiempo es 0 (sé que no es el comportamiento normal de Bennu, de momento está ahí sólo por ir haciendo pruebas).
Seguiré trabajando para arreglar el bug.
http://code.google.com/p/bennugd-monolithic/downloads/detail?name=main
Aviso que es una versión en desarrollo que puede no enviar la señal bien, por si las moscas.
buenisimo, ya mismo lo pruebo y te aviso como va. :)
basicamente lo que tengo que hacer es:
if (focus_status)
set_mode(...)
end
correcto?
che, ahora no anda el mouse XD
Pfff... Estoy tocando las señales...
Sigo con ello y os cuento.
Quote from: josebita on May 30, 2011, 04:53:26 PM
Pfff... Estoy tocando las señales...
Sigo con ello y os cuento.
ANIMO!!! ;D
Quote from: amzg on May 30, 2011, 05:57:05 PM
Quote from: josebita on May 30, 2011, 04:53:26 PM
Pfff... Estoy tocando las señales...
Sigo con ello y os cuento.
ANIMO!!! ;D
;)
El tema de pérdida de eventos del mouse probablemente sea porque se estén registrando como eventos tipo touch en lugar de tipo mouse o quizás la pila se esté llenando. Imagino que eso será fácil de arreglar.
Eso mismo estaba pensando yo... ::)
Dejo el binario actualizado.
Éste debería actualizar el modo gráfico automáticamente y manejar los eventos correctamente.
Agradezco comentarios.
http://code.google.com/p/bennugd-monolithic/downloads/detail?name=BennuGD_iOS
[Edito] Binario actualizado a uno que respeta el scale_resolution_orientation
[Edito2] Se me olvidaba comentar que para que funcione el reseteo automático de resolución, hay que importar la mod_wm.
Ahi acabamos de probarlo, estamos muy cerca, ahora anda bien, pero no respeta scale_resolution cuando restaura
es decir, nosotros estamos haciendo pruebas con un programa a la mitad de la resolucion del iphone (por cuestiones de rendimiento) y escalamos al tamaño del iphone con scale_resolution.
Cuando restauras la resolucion se ve chico, porque no esta respetando scale_resolution :P faltaria eso nomas. el resto anda muy bien :D
Mañana te lo miro, ¿ok?
Gracias por avisar y por probarlo.
listo. :)
gracias a vos!
KARMA por laborioso :D
Hey Josebita, genial el port. Muy buen laburo estás haciendo! Estuve probando esa ultima versión y como dice Javis no respeta el scale_resolution, pero también noté que surgió un bug que la version anterior no estaba (bah, no se si es un bug o yo estoy haciendo algo mal, pero la versión anterior funcionaba bien): la cosa es que ahora me rota la pantalla cuando giro el iphone. Es decir, lo tengo en landscape (por lo que entiendo el port usa portrait girando el programa con scale_resolution_orientation) y cuando lo inclino un poco hacia la derecha cambia la vista a upside down portrait. Intenté cambiar los valores del info.plist para que acepte nomás portrait (para bloquear del todo la rotación de pantalla) pero parece que no le da bola jeje.
Bueno, eso nomás. Saludos y exitos!
Yogiri me suena que Josebita me comento que esta trabajando en solucionarlo.
Alguien lo ha probado en el IPAD?
Ahora si juego a un juego Bennu y apago el Ipad (Boton superior) y despues lo vuelvo a encender el juego no pierde el focus y funciona la mar de bien.
Por el contrario, si estoy jugando al juego Bennu y le doy al boton [] (EL UNICO BOTON FRONTAL) para el tema de multitasking, cuando vuelvo a pulsar el icono del juego para seguir la partida el juego se reinicia, no continua por donde estaba. Es eso normal? Se que hay juegos que en ipad te permiten volver del multitasking y otros que no.
Saludos!
En cuanto a lo del giro: Lo estoy mirando pero casi seguro que lo correcto es permitirlo siempre a nivel de código bennu y limitarlo en el Info.plist (el fichero que describe cómo se debe comportar el juego con respecto al sistema, qué iconos usar...).
En cuanto a lo del multitasking, lo miro. De todas formas, a mí en mi ipod a veces el juego me vuelve a donde estaba y a veces no. El iPad tiene bastante poquita RAM para lo que es y en los manuales de desarrollo de Apple sobre iOS he leído que no garantizan que el programa siga abierto una vez queda en segundo plano: si el sistema decide que no tiene suficientes recursos disponibles, cierra programas sin avisar.
[PD] Y bienvenido, que no he dicho nada. A ver si esta tarde/noche puedo sacar los binarios con ese bug corregido, debería ser muy fácil de arreglar.
Gracias por la bienvenida, perdón por hacer mi primer post un reporte de bug ;D
Te cuento lo que ya probé con el Info.plist para ahorrarte algo de trabajo (estas pruebas fueron hechas con la última version que publicaste en este thread, donde no se cuelga al quitarle el foco, aunque no restaure la resolución):
<key>UIInterfaceOrientation</key>
<string>UIDeviceOrientationPortrait</string>
Esto funciona para la orientación inicial (si cambias Portrait por LandscapeRight o Left vas a ver que inicia con el status bar en landscape), pero una vez iniciado el juego vuelve a portrait.
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
En teoría, esto solo permitiría a la aplicación correr en portrait (evitando incluso que entre en upside down portrait) pero tampoco está respetándolo (leyendo por ahí vi que mucha gente tiene problemas con esto y parece que no lo respeta nunca).
Bueno, solo eso por ahora. Éxitos!
Gracias por la info. Pensaba intentar algo así, sí. A ver qué sale porque puede que tenga que mirar si SDL está haciendo algo aquí, también.
A ver si va bien el último binario que he subido:
http://code.google.com/p/bennugd-monolithic/downloads/detail?name=BennuGD_iOS
Bueno, aca el resultado de las pruebas con el ultimo binario :)
La primera vez que lo arrancas:
* sigue con el problema de la rotacion
Si entras al menu multitarea, o sales y vuelves a entrar:
* se deforma la imagen (usa un scale resolution raro)
* el problema de la rotacion desaparece
Si repites el ultimo paso:
* se arregla la resolucion
* no hay rastros del problema de la rotacion.
y asi consecutivamente, es decir, si vuelves a repetir el ultimo paso, se arruina la resolucion y luego se vuelve a arreglar.
Cada vez mas cerca! :D falta muy poquito ^_^
Perdona, ando intentando compilar los binarios como universales para arm6 y arm7 a la vez y no lo he probado.
El próximo binario que subiré irá probado :)
Javis, si puedes mándame el código para que pueda probar el binario con tu código.
Prometo confidencialidad :)
Yo tambien prometo
Venga, dejo el binario actualizado en la misma dirección que las anteriores.
http://code.google.com/p/bennugd-monolithic/downloads/detail?name=BennuGD_iOS
Salvo que me haya colado subiéndolo arregla el tema de la resolución con el juego que me habeis enviado. Espero que esté bien.
[Edito] ¡Ah! y aunque no lo he dicho, se trata de una aplicación universal para armv6 y armv7 (antes era un binario para armv6 unicamente) de forma que funcionará mejor en dispositivos con armv7. Los dispositivos con armv6 son aquellos en los que bennu iba, pero lento.
:D Sos un maestro Josebita, funciona de maravillas!
Quote from: yogiri on June 02, 2011, 12:17:04 AM
:D Sos un maestro Josebita, funciona de maravillas!
Hala, pues a darle a la tecla, que lo que me habeis pasado tiene buena pinta ;)