Mostrando entradas con la etiqueta Android. Mostrar todas las entradas
Mostrando entradas con la etiqueta Android. Mostrar todas las entradas

domingo, 23 de septiembre de 2018

Nuevo proyecto: Juego para Android


Hola. Esta entrada la escribí en mi antiguo blog de WordPress, en marzo de 2013. Tristemente a la fecha no he siquiera iniciado el proyecto, e incluso ha sido reemplazado por otros... pero quién sabe, tal vez algún día retome la idea. Por completitud, les dejo la entrada original a continuación (con algunas notas nuevas en rojo 😅):

Después de algunos sucesos, me he sentido motivado y animado a iniciar un proyecto a mediano-largo plazo, que consiste en un juego para Android. El único detalle está en que jamás en mi vida he hecho un juego, y mucho menos un programa para Android, jejeje... Lo más que hice fue una guardar una tabla de resultados para un proyecto en la materia de Gráficos por Computadora de la universidad. Pero me gusta correr antes que caminar (en este caso en particular), así que quiero hacer un juego 3D. A continuación describo mis ideas.

El juego

De momento, mi idea es que el juego sea más o menos estilo Star Fox 64, pero solamente en el espacio. ¿Por qué? Primero, porque me gustan los aviones. Segundo, porque creo que es más fácil que la nave siga una ruta predefinida, en vez de un mundo abierto. Tercero, porque creo que es difícil hacer un terreno y que el avión interactúe con él, así que mejor contar con la libertad del espacio.

Star Fox 64
Star Fox 64

Por otra parte, quiero tomar las partes más adictivas que se me ocurran de juegos como Space Invaders (variedad de enemigos con dificultad variable), Asteroids (asteroides, jejeje) y Fury 3 (múltiples armas agotables), para hacerlo entretenido. Finalmente, quiero que parte o todo el juego sea de código abierto (open source), pero hasta el momento en que lo termine, o que ya esté considerablemente maduro.

Asteroids
Asteroids

Fury 3
Fury 3

Algo importante que quiero es que las misiones no estén quemadas en el juego, sino que sea posible programarlas mediante algún metalenguaje, como YAML o XML o JSON, o bien un lenguaje de programación, pero de forma completamente externa al juego. Es decir, el kernel sería el juego, y las misiones serían como plugins. E incluso, me gustaría que los usuarios pudieran programar las misiones a su creatividad, dejando abierto todo un mundo de posibilidades. (Se me ocurrió un año antes que anunciaran Super Mario Maker 😮😮😮)

¿Por qué para Android?

Bueno, porque creo que para esta plataforma los gráficos no son lo principal, y considerando que soy un principiante (o menos que eso, jajaja...), creo que es adecuado. En segundo lugar, me llama la atención los juegos en dispositivos móviles, y creo que hay muchas posibilidades. Tercero, espero algún día poder publicar el juego en Google Play, y creo que los usuarios de Android están más abiertos a juegos pequeños.

¿Cómo hacer el juego?

Bueno, usualmente me gusta reinventar la rueda, y hacer todo desde cero, pero para este caso creo que sería muy difícil, así que mejor probaré primero con algún motor de juegos ya existente. Las características que espero del motor son las siguientes:
  • Idealmente que sea de código abierto, y gratuito. Si no es gratuito, que al menos pueda usarlo gratis para la etapa de desarrollo, pruebas y uso personal, y que adquiera la licencia (relativamente barata) en caso de que lo quiera publicar.
  • Que permita importar modelos 3D desde programas como Blender, o bien algún programa CAD gratuito.
  • Que no sea muy pesado o sobrecargue la memoria RAM de los dispositivos móviles.
  • Muy ideal sería que fuera multiplataforma, es decir, que no se limitara a Android, sino que también permitiera desarrollar juegos para computadoras, e incluso para consolas.

¿El plan? ¡Cuál plan!

Son bromas. Ahorita, el plan es simple: conseguir un motor de juegos para Andorid que cumpla los requisitos previos. Una vez lo encuentre, veremos que estrategia seguir...

Saludos.

Publicado originalmente el 2013-03-24, en https://itsouvenirs.wordpress.com/2013/03/24/nuevo-proyecto-juego-para-android/.

viernes, 25 de agosto de 2017

Mi primera aplicación móvil


Hola a todos. Quería compartirles un vídeo que re-encontré hace poco, de mi primera aplicación móvil, que hice alrdedor del año 2013 (ya me sentí viejo). En esos tiempos tenía casi nulo conocimiento de Android, y del funcionamiento de aplicaciones móviles en general, por lo que decidí hacerla con Phonegap, ya que me permitía utilizar tecnologías que ya tenía algo de tiempo de conocer y siempre me han gustado.

La aplicación fue hecha para unos amigos que querían iniciar un negocio proporcionando un sistema en el que pequeños negocios se pudieran anunciar, publicar sus eventos, menús, etc., y que el público pudiera verlos a través de una aplicación móvil. El diseño y los íconos fueron proporcionados por ellos.

La aplicación en sí fue construida utilizando AppFramework de Intel (posiblemente la versión 1, no recuerdo), que era un framework para Javascript que utilizaba el patrón MVC, proveía una versión liviana de JQuery (jqLite), y Dot.js para la renderización de las vistas. Adicionalmente incluía componentes que emulaban los controles nativos de iOS.

La aplicación mostrada en el vídeo fue una de las versiones iniciales de la aplicación, en la que aún no había incluido el diseño elegido para la página de los negocios, y en la que el menú lateral era delgado. Este fue sustituido posteriormente por un menú más amplio, que incluía los títulos de las páginas en lugar de solo los íconos.

Fue una experiencia interesante que me permitió conocer y experimentar la creación de APIs web, y la forma en que estas interactuaban con las aplicaciones móviles. De hecho, mi primer servicio web y aplicación fue realizado para este proyecto.

Otros datos interesantes son:
  • La aplicación fue desarrollada principalmente en entorno Linux, con el fin de utilizar herramientas gratuitas pero poderosas, como el lenguaje de programación PHP, el IDE Netbeans, y el gestor de bases de datos MySQL; pero también debido a que la computadora no tenía los recursos suficientes para correr el emulador de Android en Windows, y este corría de forma más eficiente en Linux. Adicionalmente, la versión de Linux que utilizaba era Manjaro (mi primera experiencia con una distro basada en Arch Linux), con el entorno OpenBox, lo que la hacía significativamente más rápida y liviana que Windows y muchas versiones de Linux.
  • El vídeo fue grabado con una herramienta cuyo nombre no recuerdo, pero que irónicamente no poseía interfaz gráfica.
  • La ventana del emulador fue posicionada sobre la vista previa de una imagen de un teléfono celular, ajustada al tamaño del emulador, para que pareciera que el emulador tenía un skin de teléfono celular.
A continuación el vídeo:


lunes, 3 de noviembre de 2014

Extraer archivo de base de datos desde dispositivo Android

Para extraer los archivos de base de datos (y en realidad cualquier otro archivo), podemos hacerlo utilizando las herramientas del SDK de Android, ya sea desde la línea de comandos, o haciendo uso del File Manager proporcionado por el Android Device Monitor.

Extraer base de datos desde línea de comandos

Para extraer archivos desde un dispositivo conectado a la computadora o emulador activo, se hace uso del comando adb pull. Si hay un solo dispositivo conectado, se hace de la siguiente manera:

adb pull /data/data/[mi.paquete.app]/databases/[mibasedatos.db] C:\ruta\destino

En donde el primer parámetro es la ruta complete del archive a extraer del dispositivo, que en este caso es la base de datos; y el segundo parámetro es la ruta destino dentro de la computadora. El segundo parámetro es opcional, y si no se especifica, el archivo extraído se guarda en el directorio actual.

Si hay varios dispositivos Android conectados a la computadora, debe especificarse adicionalmente el serial del dispositivo, de la siguiente manera:

adb -s [serial] pull /data/data/[mi.paquete.app]/databases/[mibasedatos.db] C:\ruta\destino

En donde [serial] corresponde al serial específico del dispositivo. Cabe mencionar que para consultar los seriales de los dispositivos conectados, se puede hacer ejecutando el comando:

adb devices

El serial del dispositivo aparece en la primera columna a la izquierda, al ejecutar el comando.

Extraer base de datos usando el Android Device Monitor

Para extraer el archivo de base de datos usando el File Explorer del Android Device Monitor, basta con seleccionar el dispositivo en la barra de dispositivos del monitor, ubicar y seleccionar el archivo en la ficha del File Explorer, y presionar el botón  (Pull a file from the device), ubicado en la parte superior derecha de la ficha.



Luego de esto se nos muestra una ventana de diálogo en la que solamente hay que indicar el nombre del archivo y el directorio destino.

Aunque esta forma parezca la más fácil, puede resultar no serlo, debido a que en algunos casos la carpeta data no puede ser vista desde el File Explorer, debido a que no posee los permisos necesarios.

miércoles, 15 de octubre de 2014

Encontrar base de datos SQLite en dispositivo android

Cuando se está trabajando en una aplicación de Android que hace uso de una base de datos SQLite, puede resultar necesario buscar el archivo de esta dentro del sistema de archivos del dispositivo en el que se están realizando pruebas, ya sea para verificar si esta se creó correctamente, si los datos se están almacenando, entre otras cosas.

La base de datos de cada aplicación se ubica en la siguiente ruta dentro del dispositivo:

/data/data/[mi.paquete.app]/databases/

En donde [mi.paquete.app] es el nombre del paquete principal de nuestra aplicación Android. En dicho directorio se almacena el archivo de la base de datos en sí, que posee el nombre especificado en el constructor de la clase SQLiteOpenHelper. También puede contener el “rollback journal” de la base de datos, que posee el mismo nombre, pero añadiendo el prefijo “-journal”. Por ejemplo, si la base de datos se llama “BDPrueba.db”, entonces los archivos que encontraremos serían “BDPrueba.db”, y posiblemente “BDPrueba.db-Journal”.



¡La carpeta data está vacía!

Si estamos usando el File Explorer del Android Device Monitor/DDMS para consultar los archivos del dispositivo Android, en algunos casos puede resultar que el directorio /data en apariencia no posee ningún contenido. Sin embargo, esto sucede debido a que esta carpeta no posee los permisos necesarios para ver su contenido.



Si esto sucede, lo que hay que hacer es otorgar los permisos necesarios para acceder a los archivos. Esto se puede hacer en dispositivos rooted y emuladores a través del ADB Shell, para entrar en modo terminal a nuestro dispositivo.

Para iniciar el ABD Shell, se ejecuta el siguiente comando en la terminal:

adb shell

Si hay varios dispositivos conectados, es necesario indicar el serial del dispositivo, de la siguiente forma:

adb -s [serial] shell

En donde [serial] es el serial del dispositivo deseado.

El serial del dispositivo se puede obtener ejecutando el comando adb devices
El serial del dispositivo aparece en la primera columna a la izquierda, al ejecutar el comando.
El serial del dispositivo aparece en la primera columna a la izquierda, al ejecutar el comando.

Una vez estando en la terminal del dispositivo, se deben iniciar modo super-usuario (usuario root):

$ su

Luego, hay que ejecutar el siguiente comando, para otorgar permiso completo de acceso a la rama de carpetas y archivos para todos los usuarios:

# chmod 777 /data /data/data /data/data/[mi.paquete.app] /data/data/[mi.paquete.app]/databases /data/data/[mi.paquete.app]/databases/*

Finalmente, para salir de la terminal:

#exit
$exit

Puede que no sea necesario otorgar control total sobre las carpetas, habría que probar cuáles serían los permisos mínimos dependiendo de lo que se necesite hacer con los archivos.
Con la tecnología de Blogger.