BennuGD Android

Started by gecko, March 08, 2010, 01:59:34 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

josebita

#525
Quote from: KeoH on August 18, 2012, 11:31:13 AM
Moooooola jajaja como lo has hecho? con python y GTK? xD tiene una pinta estupenda xD
PyQt4.
Por cosas del trabajo me he puesto a aprender Python+Qt4 (en el trabajo uso PySide, pero es lo mismo) y la verdad es que es estupendo. Muy, muy fácil de usar y muy rápido para ir haciendo programas.

Para que os hagais una idea de lo fácil que es, ésta línea guarda el icono que se le ha dado al fichero de salida:
Quoteself.ui.icon_hdpi.icon().pixmap(72,72).save( os.path.join(workdir,'res','drawable-hdpi','icon.png') )
Pero vamos, todavía tengo que acostumbrarme a la forma de escribir código "normal" de Python, que me doy cuenta de que mi código es demasiado "lineal" :)


[Edito] La línea que he puesto arriba se encarga de escalar la imagen que se le haya dado, del formato que se le haya dado a un PNG de 72x72 y guardarlo en la ruta que le doy.

KeoH

pues el otro dia me dió por seguir un video tutorial de developer.ubuntu.com sobre la creacion de un programa con python y GTK .. hacia la GUI con Glade y la verdad esq es una gozada xD

josebita

Viene a ser un poco lo mismo con pyqt, sí.

emov2k4

Joseba... existe alguna solución que la aplicación no siga funcionando(modo sleep se podria decir) después de apretar el botón de inicio  ?? algo asi como las lineas que se colocan en el archivo plist de IOS ??


josebita

#529
Quote from: emov2k4 on August 22, 2012, 10:12:10 PM
Joseba... existe alguna solución que la aplicación no siga funcionando(modo sleep se podria decir) después de apretar el botón de inicio  ?? algo asi como las lineas que se colocan en el archivo plist de IOS ??
Perdón por contestar tan tarde.
Aquí no es como en iOS que el sistema pausa tu aplicación: hay que hacerlo a mano. Lo que te sugiero es que importes la mod_wm y cuando "focus_status == 0" guardes el estado de tu aplicación y salgas de ella. Cuando el usuario abre la aplicación de nuevo, restauras directamente al punto más cercano posible (si tu juego va por pantallas cortas, al principio de la pantalla; si tiene pantallas más largas pero tiene checkpoints, al último checkpoint...) en lugar de mostrar los típicos créditos iniciales+menú.

En otro orden de cosas: ya he arreglado el scale_resolution en Android :)
El código sería algo como esto:
Process Main()
Begin
    // Get the real screen resolution we're running at
    width = graphic_info(0, 0, G_WIDTH)/2;
    height = graphic_info(0, 0, G_HEIGHT)/2;
    // Set scale_resolution
    scale_resolution = width*20000+2*height;
    set_mode(width, height, 32);
   
    // Just dump the info to the screen in case you're curious
    write(0, 0,  0, 0, "Width: "+width+" Height:"+height);
    write(0, 0, 10, 0, "scale_resolution: 0"+scale_resolution);
    /* The real game code */
End

JaViS

Solo por curiosidad, porque divides los valores y luego los multiplicas por dos?
Working on Anarkade. A couch multiplayer 2D shooter.

SplinterGU

Quote from: JaViS on August 26, 2012, 01:58:30 AM
Solo por curiosidad, porque divides los valores y luego los multiplicas por dos?

lo mismo iba a preguntar... por que divides por 2 y luego lo multiplicas por 2, pero seteas en modo en la division por 2?

por otro lado, cual es el fix de scale_resolution en android?

otra, si la aplicacion no sale, para que los checkpoints? no vale con hacer una pausa cuando focus esta en 0?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: SplinterGU on August 26, 2012, 04:00:50 AM
Quote from: JaViS on August 26, 2012, 01:58:30 AM
Solo por curiosidad, porque divides los valores y luego los multiplicas por dos?

lo mismo iba a preguntar... por que divides por 2 y luego lo multiplicas por 2, pero seteas en modo en la division por 2?
Una tontería: la parte de mi código que no he pegado aquí utilza width y height, quizás fuera más sencillo ponerlo así:
Process Main()
Begin
    // Get the real screen resolution we're running at
    width = graphic_info(0, 0, G_WIDTH);
    height = graphic_info(0, 0, G_HEIGHT);
    // Set scale_resolution
    scale_resolution = width*10000+height;
    width = width/2;
    height = height/2;
    set_mode(width, height, 32);
   
    // Just dump the info to the screen in case you're curious
    write(0, 0,  0, 0, "Width: "+width+" Height:"+height);
    write(0, 0, 10, 0, "scale_resolution: 0"+scale_resolution);
    /* The real game code */
End

Quote from: SplinterGU on August 26, 2012, 04:00:50 AMpor otro lado, cual es el fix de scale_resolution en android?
Para permitir hacer un gr_init(0, 0, 32) que funcionara me lie un poco y me pasé modificando cosas; el código normal de Bennu debería funcionar.
Quote from: SplinterGU on August 26, 2012, 04:00:50 AMotra, si la aplicacion no sale, para que los checkpoints? no vale con hacer una pausa cuando focus esta en 0?
El tema es que los sistemas operativos móviles no funcionan como los sistemas operativos de escritorio: cuando la aplicación está en segundo plano el sistema te puede matar en cualquier momento sin previo aviso si cree que necesita más recursos.
Por eso recomiendo lo que comentaba de tener guardado el estado y directamente salir.

SplinterGU

sigo sin entender por que divides por 2 el set_mode... (quizas me perdi algun post anterior)

con respecto a que te matan en los moviles sin previo aviso, lo tenia claro, pero como habias dicho que en android no te mataban (cosa que me parecia rara) sino que quedaban corriendo en en fondo, me confundi...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

#534
Quote from: SplinterGU on August 26, 2012, 04:38:04 PM
sigo sin entender por que divides por 2 el set_mode... (quizas me perdi algun post anterior)
Sólo quería comprobar que el scale_resolution funciona. La resolución virtual que quiero poner con ese código es un cuarto de la resolución nativa de la pantalla. De ahí que el ancho sea la mitad de la resolución nativa del teléfono y el alto la mitad del alto nativo del teléfono.
La cosa es que luego las variables se utilizan en el código como:
if(x < width)
if(y > height)
En algún momento tengo que dividir el ancho o el alto por dos para que funcione la resolución virtual o de lo contrario todas las comprobaciones serían del estilo:
if(x < width/2)
if(y > height/2)
Igual hay una formar mucho más obvia de hacer lo mismo, pero ahora mismo no caigo...
Quote from: SplinterGU on August 26, 2012, 04:38:04 PMcon respecto a que te matan en los moviles sin previo aviso, lo tenia claro, pero como habias dicho que en android no te mataban (cosa que me parecia rara) sino que quedaban corriendo en en fondo, me confundi...
La aplicación se queda en segundo plano funcionando si el teléfono tiene suficiente memoria pero si el usuario se pone a navegar, igual cinco minutos después de haber mandado la aplicación a segundo plano el sistema decide matar la aplicación.. no sé si me explico.

SplinterGU

ah, era un ejemplo del uso del scale... perfecto.

se entendio.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Sólo por manteneros informados de cómo va el desarrollo de SDL2 (por si a alguien le interesa):
  * Un tipo se ha liado la manta a la cabeza y se ha puesto a crear un sistema de compilación basado en CMake para SDL2.
  * Hay gente que ya empieza a ponerse nerviosa con el tema de ir sacando betas de SDL2.

emov2k4

#537
para los que no entendemos mucho del tema , que quieres decir ?



josebita

Quote from: emov2k4 on August 27, 2012, 06:01:21 PM
para los que no entendemos mucho del tema , que quieres decir ?
Que quizás dentro de no demasiado salga una beta de SDL2 y que están añadiendo un nuevo sistema de compilación que, se supone, es muy flexbile y útil.

emov2k4


me imagino que tengo que actualizar algo para que funcione el scale_resolution ??

PD: gracias  el focus_status funciona de maravilla