Preguntas basicas desarrollo Android

Started by Comandante, April 13, 2014, 04:54:43 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Comandante

Hola,
Ante todo disculparme por abrir un hilo que seguro este repleto de preguntas mil veces contestadas,pero o yo no se buscar bien o no se que pasa.
Os cuento,yo soy un antiquisimo usuario de div2 desde su salida,luego le di lo suyo a Fenix,y ultimamente me ha entrado el gusanillo de hacer
cosillas y he dado con bennugd.
Me gustaria intentar crear alguna frikada para android pero por mas que busco no doy con un tutorial de controles tactiles "for dummies".
He probado muchos ejemplos y no me funcionan,he logrado sacar en la pantalla de mi movil un sprite y texto,pero no tengo ni la mas remota idea
de hacer que la pantalla tactil funcione como "un raton",es decir,que detecte las coordenadas donde tocas.
Despues,me gustaria saber como hacer para que la resolucion funcione en la mayoria de dispositivos,si existe algun tipo de escalado etc.

Eso es todo de momento,un saludo!

Erkosone

Hola Comandante, anoche leí el post pero andaba por el curro con el mobil y no tenía códigos de ejemplo a mano para comentarte.


Sobre el tema del reescalado, está chupado, lo primero que tienes que hacer es averiguar la resolución real a la que está trabajando el dispositivo android, esto se hace así:



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 to width/2xheight/2
    scale_resolution = width*10000+height;
    scale_resolution_aspectratio=SRA_PRESERVE;
    set_mode(320, 480, 16);




Presta atención al detalle de que no debes ejecutar ningún SET_MODE() antes de averiguar la resolución real.


PASO 1:
Con la función graphic_info() recojes el ancho y alto reales y los guardas en las variables GLOBALES width y height.


PASO 2:
Preparas el sistema de escalado a esa resolución real, esto se hace teniendo en cuenta que el valor que tienes que indicar para el escalado debe corresponderse a un formato de número un poco particular, se indica tanto el ancho como el alto en una sola cifra, sin entrar en demasiados detalles te sirve con saber que mediante la formula: width*1000+height obtienes el valor que necesitas indicar, así que no hace falta nada mas que indicarle a scale_resolution esa pequeña operación.


También debes indicar el aspectRatio, hay varias opciones, pasate por la wiki para ver cuales son, pero para teléfonos o tablets en general te servirá perfectamente con sra_preserve que indica que se mantenga el aspect ratio de la resolución original del dispositivo, aunque si tu juego usa resoluciones no panorámicas puede verse deformado, debes acostumbrarte a programar para android en panorámico, ya que el 99% de los disp. trabajan con resoluciones y pantallas alargadas y no cuadradas.


Y finalmente PASO 3:
Ejecutar tu SET_MODE() a la resolucion nativa a la que va a trabajar tu juego.




Un buen sistema de trabajo es crear una variable GLOBAL llamada ANDROID_RELEASE = FALSE;
Entonces mientras estás desarrollando el juego en windows la tienes en false, y metes las lineas de código del escalado dentro de algo así:


if(android_release == true)
..
..
..
end


De esta manera cuando desees exportar a android simplemente cambias el valor a true, compilas y listo, envías el juego al disp.

emov2k4

El escalado en Android es automatico, no es necesario hacerlo.

Para saber en que sistema operativo o plataforma estas utiliza el OS Code
http://wiki.bennugd.org/index.php?title=OS_codes

Si quiero que un codigo se ejecute solo en windows por ejemplo el puntero del mouse para saber donde esta y no se muestre en android ya que seria el dedo, hago lo siguiente

if(os_id==0) mouse.graph=22; end

Por lo que no es necesario el android_release de Erkosone

Erkosone

Vaya, eso no lo sabía, gracias por la aclaración ;)

Erkosone

Hola Comandante, a mi tampoco me escala automáticamente, por eso lo comenté, pero quizá haya que hacer algo para que escale, aunque con ese código te funcionará bien.


Sobre los controles, es bastante fácil, has de incluir en tu programa las librerías mod_multi y mod_mouse, la mas simple de todas es la del mouse, te dejo un código de ejemplo muy util que me pasó josebita y la lib fakeada para windows "mod_sensor" para que puedas compilar sin problemas.


Todo esto irá en vídeo tutoriales que estoy montando pero estos días ando a tope de trabajo y me está costando ponerme unas horas a terminarlos..




emov2k4

Para compilar a android  yo utilizo la plantilla de pixel !! y no el packager de Joseba.

En la ultima version de Bennu si escala automaticamente, necesitan actualizar ya que corrige muchas cosas.

Erkosone

Yo uso esa misma versión de bennu pero con el packager.

josebita

Quote from: Erkosone on April 16, 2014, 12:21:05 PM
Yo uso esa misma versión de bennu pero con el packager.
Si el código Java no es el mismo, es normal que el juego se cuelgue cuando pasan según qué eventos.
Por eso recomiendo usar la plantilla de Pixel.

No tengo el tiempo necesario para mantener el packager actualizado.

Erkosone

Que problema te da el packager? recuerda que para que el entorno funcione la carpeta que contiene el zip llamada devBennu debe estar en la raiz de la unidad c:


Yo uso el packager en vez de la pixPlantilla por que no me obliga a meter los archivos con una estructura de directorios concreta, programo las aplicaciones a mi estilo propio sin preocuparme de donde va esto o donde va lo otro y con un click me lo instala en el mobil sin errores.

Erkosone

El link a la descarga del entorno que uso en los vídeo tutoriales es este, solo dejalo en la c:\ y ejecuta el notepad que trae para programar.
https://dl.dropboxusercontent.com/u/65979707/bennuGD/ANDROID/devBennu.7z