un crash de la madre

Started by fulgorelizz, July 15, 2016, 01:34:13 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Drumpi

Pregunta tonta: ¿Has compilado algún "Hello world" con Android antes de ponerte a saco con tu juego? A ver si lo que falla es tu compilador...
Si no, ve añadiéndole módulos al "hola mundo" hasta que falle.

¡¡¡¿¿70000MB??!!! ¿70 GB de juego tienes hecho? ¿Pero qué has programado? ¿el GTA20?
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

fulgorelizz

Quote from: Drumpi on July 16, 2016, 02:56:12 AM
Pregunta tonta: ¿Has compilado algún "Hello world" con Android antes de ponerte a saco con tu juego? A ver si lo que falla es tu compilador...
Si no, ve añadiéndole módulos al "hola mundo" hasta que falle.

¡¡¡¿¿70000MB??!!! ¿70 GB de juego tienes hecho? ¿Pero qué has programado? ¿el GTA20?

jajajajajaja dije 70.000Mb?? madre mia!!! pues si eso que dijiste es lo que hice precisamente, me he creado un esqueleto que ha estado corriendo bien en android y fue donde consegui el problema con el mod_curl! mañana continuo, aqui en venezuela ya empieza a hacerse tarde y debo hacer otras cosillas!!! llo que sugiere el maestro pues, desde que programo en bennu nunca he usado el debbuger, jaja xD sorry!!!
y como venia diciendo, ire pasando paulatinamente los procesos hasta que logre disipar el crash o que se yo, el juego inicialmente corria en android pero luego me dispare en el desarrollo y deje de testearlo en android y bueno, he aqui el problema!!! pero de seguro tiene solucion
Compiling code -- generating exe...

SplinterGU

no es el debugger lo que sugiero es el trace de ejecucion, no podes debuguear nada, simplemente capturas a un archivo (o a salida de consola si aplica) por donde va pasando el puntero de ejecucion del motor.

si no pasa por ningun lado es porque te faltan permisos, quizas estas usando binarios android intel en lugar de arm o a la inversa, o vaya a saber que otro problema.

pero en ningun momento hablo de mod_debug
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

fulgorelizz

Quote from: SplinterGU on July 16, 2016, 05:30:38 PM
no es el debugger lo que sugiero es el trace de ejecucion, no podes debuguear nada, simplemente capturas a un archivo (o a salida de consola si aplica) por donde va pasando el puntero de ejecucion del motor.

si no pasa por ningun lado es porque te faltan permisos, quizas estas usando binarios android intel en lugar de arm o a la inversa, o vaya a saber que otro problema.

pero en ningun momento hablo de mod_debug

maestro me estoy reescribiendo el codigo de cero!!! hasta ahora va bien, uno de los problemas viene al cargar el fichero del nivel 1, muy pesado, en el emulador va bien pero en mi cell dura tres milenios en abrir!!! asi que estoy en otra movida para ponerle vida a mi juego, ya los controles y todo va bien!! mañana o el lunes me cuelgo unas funciones genericas que sirven para tres de las entradas: keyboard, joy y touch! esta bien chula!! luego la subo pero primero salir de esto!!! jeje saludos
Compiling code -- generating exe...

Drumpi

Es que viendo tu juego te sale más a cuenta crearte un motor de scroll tileado o usar alguno de los que hay. 70MB sigue siendo una pasada (te lo dice uno que ha usado 3 mapas de 10MB para un circuito en modo7 con tres plantas :D).
Y si no quieres usar tiles, usa trozos de mapa más pequeños y los vas cargando a medida que vaya avanzando el jugador. Con 9 trozos que tengas en memoria del tamaño de la pantalla ya te vale.

Y lo del crash ya, si es en el arranque, y no es con la carga de recursos, sigue los consejos de SplinterGU y de Pixel, que son los que mejor se conocen el tema.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

fulgorelizz

Quote from: Drumpi on July 17, 2016, 02:21:55 AM
Es que viendo tu juego te sale más a cuenta crearte un motor de scroll tileado o usar alguno de los que hay. 70MB sigue siendo una pasada (te lo dice uno que ha usado 3 mapas de 10MB para un circuito en modo7 con tres plantas :D ).
Y si no quieres usar tiles, usa trozos de mapa más pequeños y los vas cargando a medida que vaya avanzando el jugador. Con 9 trozos que tengas en memoria del tamaño de la pantalla ya te vale.

Y lo del crash ya, si es en el arranque, y no es con la carga de recursos, sigue los consejos de SplinterGU y de Pixel, que son los que mejor se conocen el tema.

ya me puse en eso, ya cree una utilidad para tilear, cree en php un slicer de alta precision en el corte, y pues ya me anda corriendo, el unico problemita que no es gran cosas es que tengo que hacer practicamente todos los mapas con la utilidad ajajajaja lol pero bueh!!! menos mal iba apenas por el 2do nivel, saludos

viento en popa!!! va para android y windows!
Compiling code -- generating exe...

fulgorelizz

ya he hecho bastantes ajustes al juego pero ahora que esta corriendo algo muy basico tengo una duda!! el que pixstudio compile para androids 4.4 hace que mi juego corra mas lento en mi android 4.2???
Compiling code -- generating exe...

SplinterGU

Quote from: fulgorelizz on July 16, 2016, 11:13:07 PM
Quote from: SplinterGU on July 16, 2016, 05:30:38 PM
no es el debugger lo que sugiero es el trace de ejecucion, no podes debuguear nada, simplemente capturas a un archivo (o a salida de consola si aplica) por donde va pasando el puntero de ejecucion del motor.

si no pasa por ningun lado es porque te faltan permisos, quizas estas usando binarios android intel en lugar de arm o a la inversa, o vaya a saber que otro problema.

pero en ningun momento hablo de mod_debug

maestro me estoy reescribiendo el codigo de cero!!! hasta ahora va bien, uno de los problemas viene al cargar el fichero del nivel 1, muy pesado, en el emulador va bien pero en mi cell dura tres milenios en abrir!!! asi que estoy en otra movida para ponerle vida a mi juego, ya los controles y todo va bien!! mañana o el lunes me cuelgo unas funciones genericas que sirven para tres de las entradas: keyboard, joy y touch! esta bien chula!! luego la subo pero primero salir de esto!!! jeje saludos

genial entonces... :)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Quote from: fulgorelizz on July 18, 2016, 02:04:36 AM
ya he hecho bastantes ajustes al juego pero ahora que esta corriendo algo muy basico tengo una duda!! el que pixstudio compile para androids 4.4 hace que mi juego corra mas lento en mi android 4.2???

Hasta donde yo he entendido, que lo compiles para 4.4 lo hace INCOMPATIBLE con todos los Android anteriores. A menos que tengas la suerte de que el compilador no haga uso de ninguna característica exclusiva de 4.4. Tienes que compilarlo en el Android más antiguo que lo vaya a ejecutar, que suele ser 2.3 o 4.0, y cualquier equipo con ese Android o superior podrá ejecutar tu juego... salvo que haya cualquiera de las 2728 incompatibilidades existentes para los 4625 diferentes modelos de móviles, tablets, consolas Android, Android TVs, etc, etc... ^^U

Sí, la compatibilidad de Android es muy similar a lo que había hace años con Symbian y Java.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

fulgorelizz

definitivamente vais a salir en los creditos tios!! estan aqui en la batalla!!

el juego ya anda chulo en pc, la diferencia de velocidad es notoria, creo que todo era asunto de memoria, el juego hacia colapsar la memoria de 512 de mi celular y por eso se caia, evidentemente si habia lios con mod_curl, asi que de momento hare una version sin rankeo mientra veo como solvento ese asunto!!

lo unico que ha surgido y a quien debo echarle la culpa porque no hay de otra es a mod_multi, deben haber unas cosas que no estan del todo bien en esa libreria, deberia aparecer josebita por aca! la mod mola de maravilla en el emulador de mi pc pero al llevarla al celular sucede lo siguiente:

los toques estan perfectos y los estatus de cada punto del tactil, el asunto inicia aqui, tras jugar un poco note que el juego se ponia lento, y a medida que andaba andaba cada vez mas lento
me pregunte; podria ser que estoy usando demasiados procesos?? veamos, optimice el codigo de tiles y pinte el mapa usando como referencias el array donde guardaba los graficos, asi que me he pintado mapas de manera automatica, creo que se supones que eso hacen los tiles maps! jaja y en fin ya mi juego pesa mucho menos!! venga, ya con eso el juego habia acelerado bastante!! pero persistia el asunto
dije vamos a sacar todos los procesos y dejo solo al protagonista con sus controladores

y seguia lo mismo, a lo que deduje, quizas los procesos en bennu al llegar a su ultimo end no estan siendo liberados de memoria, asi que me hice un #define para colocarlo antes del ultimo end y liberar la lista de los procesos activos en memoria (solo por precaucion)

al final solo quedaban las funciones del tactil y el protagonista, si dejas el juego correr solo, sin mover al personaje todo mola bien!!! empieza a ponerse lento a medida que haces touch y touch al juego!!! los fps en el celular caen a 21! imaginense, 50 fps por debajo xD simplemente desesperante!! jajajaja pero de resto ya se que el juego anda!!

me he reescrito el codigo de los mandos como de 4 formas distintas pensando que el proceso que lleva los controles del juego estaba sobre cargando la memoria pero no es asi!!! santos cielos!!

Compiling code -- generating exe...

josebita

Para poder ver por qué falla, ¿podrías mandar un logcat de lo que ocurre cuando ejecutas en Android?
Puede que no ayude mucho, o sí. A saber.

Si quieres, puedes mandarme el APK de alguna forma y le echo un ojo yo también.

Y sobre la versión del SDK de Android: hace falta porque si se está ejecutando en una versión más reciente de Android hace más cosas, pero se puede ejecutar en versiones anteriores.

Drumpi

Quote from: josebita on July 20, 2016, 01:22:39 PMY sobre la versión del SDK de Android: hace falta porque si se está ejecutando en una versión más reciente de Android hace más cosas, pero se puede ejecutar en versiones anteriores.

¿Y eso? Cuando me descargué el SDK para el 4.1, el tutorial decía lo contrario, que la versión indicaba la mínima que se iba a usar. ¿Lo habrán cambiado o es que tengo un manual muy malo?
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

Quote from: Drumpi on July 20, 2016, 04:50:33 PM
Quote from: josebita on July 20, 2016, 01:22:39 PMY sobre la versión del SDK de Android: hace falta porque si se está ejecutando en una versión más reciente de Android hace más cosas, pero se puede ejecutar en versiones anteriores.

¿Y eso? Cuando me descargué el SDK para el 4.1, el tutorial decía lo contrario, que la versión indicaba la mínima que se iba a usar. ¿Lo habrán cambiado o es que tengo un manual muy malo?

si mal no recuerdo, el SDK te permite especificar la lista de compatibilidad de operativos android en el proyecto que genera el binario... pero quizas me confunda.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

fulgorelizz

Quote from: josebita on July 20, 2016, 01:22:39 PM
Para poder ver por qué falla, ¿podrías mandar un logcat de lo que ocurre cuando ejecutas en Android?
Puede que no ayude mucho, o sí. A saber.

Si quieres, puedes mandarme el APK de alguna forma y le echo un ojo yo también.

Y sobre la versión del SDK de Android: hace falta porque si se está ejecutando en una versión más reciente de Android hace más cosas, pero se puede ejecutar en versiones anteriores.

te hare llegar la apk!
Compiling code -- generating exe...

josebita

Quote from: Drumpi on July 20, 2016, 04:50:33 PM
Quote from: josebita on July 20, 2016, 01:22:39 PMY sobre la versión del SDK de Android: hace falta porque si se está ejecutando en una versión más reciente de Android hace más cosas, pero se puede ejecutar en versiones anteriores.

¿Y eso? Cuando me descargué el SDK para el 4.1, el tutorial decía lo contrario, que la versión indicaba la mínima que se iba a usar. ¿Lo habrán cambiado o es que tengo un manual muy malo?
De las sessiones que uno define en el "manifiesto" del paquete apk (AndroidManifest.xml) hay una que especifica la compatibilidad de tu paquete con las distintas versiones de Android y que se llama <uses-sdk>. Tiene tres parámetros:

       
  • android:minSdkVersion: La versión mínima de Android (por su número de SDK) en la que la aplicación puede funcionar.
  • android:targetSdkVersion: La versión para la que la aplicación está diseñada. Normalmente coincidirá con la versión del SDK usado para compilar.
  • android:maxSdkVersion: No se me ocurre un caso de uso válido para ésto, la verdad...
La idea es que uno puede crear una aplicación que, si está en una versión de Android se comporte de una forma y que si está en otra se comporte de otra.
Poniendo como ejemplo de uso el código de PixTudio (heredado de SDL). Resulta que para versiones de Android < 12, el soporte para joysticks era bastante pobre y luego mejoró. Pues en código se puede poner una comprobación adecuada para tener una u otra funcionalidad en función de la versión del cliente, como se muestra aquí:

        // Set up the surface
        mSurface = new SDLSurface(getApplication());

        if(Build.VERSION.SDK_INT >= 12) {
            mJoystickHandler = new SDLJoystickHandler_API12();
        }
        else {
            mJoystickHandler = new SDLJoystickHandler();
        }

        // If we're on Android >= 19, display the game in immersive view
        if(Build.VERSION.SDK_INT >= 19) {
            mSurface.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
            | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
        }

¡Ojo! la constante Build.VERSION.SDK_INT es la versión de Android en la que se está ejecutando el código, ¡no con la que se está compilando!

PERO a la hora de compilar se usan constantes y métodos que no están definidas para Android < 19 (como ese View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) de forma que para compilar se debe compilar con el SDK "máximo" cuyas características se vayan a usar.

Una vez que se va a ejecutar el código, siempre y cuando no se llame a métodos no disponibles en la versión de Android donde se esté ejecutando, todo irá bien. De ahí que el código tenga unas buenas cuantas salvaguardas como esta:
        if (event.getSource() == InputDevice.SOURCE_MOUSE && SDLActivity.mSeparateMouseAndTouch) {
            if (Build.VERSION.SDK_INT < 14) {
                mouseButton = 1;    // For Android==12 all mouse buttons are the left button
            } else {
                try {
                    mouseButton = (Integer) event.getClass().getMethod("getButtonState").invoke(event);
                } catch(Exception e) {
                    mouseButton = 1;    // oh well.
                }
            }
            SDLActivity.onNativeMouse(mouseButton, action, event.getX(0), event.getY(0));

Ésta es la causa de la diferencia de comportamiento de PixTudio/BennuGD en Android en función de la versión que describí aquí.