miércoles, 27 de febrero de 2008

Yo me ofusco, tú te ofuscas, él...

La primera version de la mascota no tenia el código ofuscado. ¿Y esto que es? Viene a ser complicar el código para hacerlo practicamente ilegible.
Hay varios ofuscadores de código, pero el más famoso es proguard.
La mayoría de los entornos de desarrollo para J2ME permiten su uso en nuestras aplicaciones y especificamente NetBeans Mobile lo trae embebido y no necesita configuración alguna.
¿Para qué ofuscar? Puede que parezca que no sirva para nada 'complicar' (para el ojo humano) el código, pues siempre queremos que sea lo más legible posible. Bueno, pues es que ofuscar sería una tarea a realizar al empaquetar una versión de nuestro software.
Cuando el código no está ofuscado, para saber qué contiene un JAR basta con descomprimirlo con cualquier programa y buscar las clases que contiene.
Por ejemplo el codigo:
int contador = 0;
while (contador == 0) {
BaseDeDatos.insertar(alumno);
}

Cuando ofuscamos, el código toma la pinta:
int a = 0;
while (a == 0) {
b.c(d);
}

Facilmente nos damos cuenta que el codigo se complica sobremanera. Una ventaja importantisima es que vamos a poder reducir el tamaño de nuestras aplicaciones sobre un 20 y un 30%.
Centrandonos en móviles, viene a ser una gran ventaja.
Por ejemplo: WirePET ocupo 87 Kb sin ofuscarse. Esto impedía que pudiésemos instalar el juego en cualquier móvil que no permitiene aplicaciones de más de 64 Kb.
Pues bien, al ofuscar conseguimos que la aplicacion bajase hasta los 62 Kb permitiendo acceder a este conjunto de móviles.
Interesante ¿no?

Pues ya sabes, ofuscate todo lo que puedas, menos con las personas cercanas :)

Subversionate


Tal y como hacemos en el trabajo y como viene diciendome (y explica aqui) Javi desde que le conozco: Usa Subversion hasta para tu curriculo.
Por fin me he decidido a instalarlo para el desarrollo del proyecto y, la verdad, que lo echaba de menos hasta para hacer la más pequeña práctica.

Subversion es una herramienta muy útil para el control de versiones. Sirve fundamentalmente para tener bajo control cada pequeña version a lo largo de la vida del proyecto. Sirve para saber en que se esta trabajando, como se esta haciendo, sirve de salvavidas ante cualquier imprevisto y facilita muchisimo el desarrollo al tener siempre versiones controladas, marcadas y salvadas en 'algun lugar' accesible.

VisualSVN: Subversion en un paso.
La verdad que con la falta de tiempo lo que he hecho a sido seguir un vinculo que me facilito Alberto para instalar Subversion en un par de clicks. Es una version para windows (lo siento por los linuxeros) cuya interfaz es realmente sencilla y usable y no requiere mas que indicar que usuarios, grupos y proyectos vamos a manejar.

Parafraseando a Javi yo diria: "No uses subversion porque es adictivo".

sábado, 26 de enero de 2008

Habla con Jou




Hola a todos, a traves de una aplicacion web de MyCyberTwin podemos ahora establecer una conversacion con Jou, el protagonista de la primera aventura de WirePET.
Podeis preguntarle cosas sobre el juego, el desarrollo, metodologias agiles... eso si, en lengua inglesa. Cuanto mas hablemos con el mas listo se volvera y mas facil sera que nos conteste adecuadamente las siguientes veces; ademas se le puede añadir conocimiento.
Por ahora le explicado un poco que es scrum, IWPAAMS y WirePET. Poco a poco y segun las conversaciones que tenga le ire enseñando mas cosas.
Me parece una forma estupenda de tener el tipico FAQ o wiki, si es que funciona bien. Saludos!

viernes, 25 de enero de 2008

La importancia de UN planeta de UNA estrella

Mi compañero Felix nos mando un enlace a un post de la huella digital.
Es un video de la saga de Carl Sagan sobre el universo, para ver si nos damos cuenta de lo importante que resulta nuestro planeta en el inmenso infinito de la galaxia.



Solo una nota, la foto mas lejana se hizo a 6000 millones de km de la Tierra, que se encuentra en la via lactea que tiene un diámetro medio de unos 100.000 años luz (1 año luz = diez billones de km) se calcula que contiene entre 200.000 y 400.000 millones de estrellas.
Por la cuenta de la vieja esto quiere decir que la foto se hizo desde muy muy muy cerca. Para que veamos lo insignificantes que somos y lo importantes que nos creemos. Ademas de la infinidad de galaxias que hay en el universo... no quiero ni pensar en la idea de los universos paralelos que tanto se maneja desde la ciencia ficcion hace decadas o en la mecanica cuantica hace años.

domingo, 20 de enero de 2008

La temperatura del fin del mundo

En varias ocasiones, y sobretodo al terminar o empezar una era o ciclo se habla del fin del mundo. En cualquier cuantía temporal, el fin del mundo se acerca imperdonable disfrazado de distintos personajes. Unas veces se le señala con el dedo y se le llama Arbusto, otras veces se le da el nombre de alguna ciudad con central nuclear y otras simplemente se alude al clima y la metereología.
Algún día escribiré un artículo comentando las 10 mejores formas de acabar con el planeta.
Por ahora solo comentaré dos formas en las que todo lo que existe puede dejar de existir.
Ya hace tiempo se hablaba del destino ultimo del universo en dos sentidos opuestos (pero hay más):

El fin del fuego
Consiste en que la constante universal cuyo valor se desconoce sea menor de lo esperado, entonces el universo llegará un momento en el que dejará de expandirse para volver a contraerse (a modo de masa elástica) acabando todo en una gran explosión opuesta al big bang y llamada big crunch.

El fin del hielo
Aquella constante valdría más de lo querido, permitiendo a la elasticidad del universo alcanzar valores no contraibles, es decir, que se seguirá expandiendo y expandiendo y expandiendo hasta alcanzar el cero absoluto (aproximadamente, −273,15 ºC ó −459,67 ºF)

Puede que parezca muy extrambótico, pero estos mismos conceptos nos los plasman con el clima y en escalas de tiempo mucho más cercanas. ¿Qué cómo? Unos nos dicen que el cambio climático esta haciendo que los gases de efecto invernadero y < ponga aqui su razon sobre el cambio climático> produzcan un aumento de la temperatura media del planeta. Cosa probada, comprobada, testeada y verificada.
Otros nos dicen que nuestra estrella esta perezosa y por ello comenzara a dar menos calorcito a nuestro hogar producido porque los anillos solares se estan moviendo más lentamente o que estamos entrando en un periodo glaciar y por ello la temperatura sufrirá un descenso.

Ahora yo me pregunto, ¿en un videojuego sobre el clima y la metereologia que debemos plasmar como fin del juego? ¿mucho calor o mucho frio?
El caso es que el fin llegará, pues no hay nada perpetuo.

miércoles, 12 de diciembre de 2007

WirePET: Resultado

El proyecto desarrollado se finalizó en el plazo esperado (restringiendo algunas funcionalidades iniciales para poder cumplirlos)
Al formar parte de los proyectos de Movente - Concurso de Ideas se presentó en la UPSA el 27 de Junio de 2006 en el aula de grados. Aqui hay una lista de los proyectos que se presentaron ese día.

La presentación (en pdf) no indaga en la tecnología utilizada, pero plasma lo que se quiere (y hasta la fecha se ha conseguido) obtener con las ideas en las que se apoya el proyecto y el sistema de juego que tiene.

Gracias a la colaboración de Tempos21 y sobretodo a Joan Borrás se pudo tener la aplicación para su descarga a terminales a través de WAP mandando un mensaje corto del tipo 'GET WirePET al 7213'. Lamentablemente este servicio estubo activo hasta principios del año 2007. Puede que más adelante busquemos algún sitio para descargarlo, y puede que sea desde los servidores de Unkasoft.

El proyecto WirePET fue presentado de forma extraordinaria en la inauguración de la Feria de Muestras de Salamanca el día 7 de Septiembre de 2006, ante Presidente de la Junta de Castilla y León, D. Juan Vicente Herrera en el stand de Caja Duero. A partir de ello Jou apareció durante unos 10 segundos xD ese mismo fin de semana en el canal regional 'canal 4 cyl'.

Como ya he comentado otras ocasiones, este proyecto no se frenó aqui, pues quedaron en el tintero muchas ideas que todavía debían plasmarse. ya os contaremos (:

sábado, 8 de diciembre de 2007

Jou, alimentarse y jugar.

Si ya disponía de una versión de la lógica de la aplicación, ésta tenía que ser depurada y adaptada para informar al usuario de los acontecimientos del juego y para poder jugar durante bastante tiempo.
Como el objetivo era obtener una mascota virtual con connotaciones educativas, me documenté sobre los alimentos fundamentales en la dieta de cualquier persona y según sus cualidades codifiqué estas características en un conjunto de valores que afectarían a los atributos de Jou.

Fundamental para que Jou viva (y siento el punto de vista pesimista) es que sufra. El usuario se debe encargar de que Jou sufra lo mínimo posible y cubra sus necesidades de alimentación, higiene, felicidad y salud. De esta forma, con los objetos que tengamos en el juego podremos cubrir distintas necesidades, pero éstas variarán en función de las necesidades anteriores y de los alimentos y objetos utilizados.

Por ejemplo, podemos darle de comer carne, pero una dieta basada en carne no es buena para la salud, por lo que deberemos darle alguna fruta o verdura para compensar. Comer, normalmente le dará sed a Jou, y algunos alimentos le gustarán más que otros. El caso es liar la relacción entre los objetos del juego y el estado de los atributos de Jou.

Para obtener más jugabilidad, de entre los 20 objetos que existen en el juego, comenzaremos con un conjunto reducido de ellos, que se irá ampliando a modo de premio según avancemos en la aventura. Así también conseguimos que el jugador se acostumbre a la interfaz de usuario y descubra distintas posibilidades poco a poco.
Otro de los aspectos que afecta a Jou es la hora del día, pues no se está igual de cansado a las 12 de la noche que a las 12 del medio día.

Mezclando todas estas posibilidades con algo de azar para ampliarlas se obtiene un juego compacto pero muy jugable pues cada vez que empezamos a jugar los resultados serán distintos aunque le demos los mismos cuidados.

jueves, 6 de diciembre de 2007

El nacimiento de Jou

Una vez concedida la beca para el desarrollo de la primera versión de WirePET tenía que ponerme a trabajar inteligentemente, para hacer las cosas una vez si es posible y de la forma adecuada.
Nos habían informado que íbamos a recibir varios cursos: 30 horas sobre Fundamentos sobre Java (J2EE), otras 25 sobre desarrollo java en móviles (J2ME) y sobre 20 horas de la plataforma de comunicaciones de Tempos21.
Mientras recibía estos conocimientos y sacaba el 3er curso de la IT en Informática de Gestión, comenzé con el proyecto.

Como lo primero que vimos fue J2EE comencé por desarrollar una mascota que a través de la
consola informara de cómo estaba. Es decir, no tenía gráficos y no tenía interacción con el usuario; simplemente decía por consola que es lo que hacía, a la vez que consumía los alimentos y bebidas de forma aleatoria. Al acabarse éstos moría.
Obviamente esto estaba lejos de ser un videojuego, así que cuando recibimos el curso de J2ME comencé a pensar en cómo portar este funcionamiento al móvil y cómo hacerlo interactivo y gráficamente entretenido.
Necesariamente tenía que tener gráficos agradables a la vez que sencillos. Como mi objetivo era solo el móvil que me habían prestado (Nokia6230i) me centré en desarrollar para él y luego ver que compatibilidad se habría generado.

En este punto fue cuando recurrí a mi amigo Alvar, que sin poner ninguna pega hizo tres bocetos de tres mascotas en uno de sus cuardenos, para decantarnos por una de ellas, la cual escaneó y me paso a un tamaño increible. Con ésta imágen yo luego trabajaría para obtener todas las demás. Podríamos decir que Jou es hijo de Alvar, pero yo le alimente, le eduqué y le vi crecer :)

sábado, 1 de diciembre de 2007

WirePET: el comienzo

El proyecto WirePET nace en la primera convocatoria de los proyectos MOVENTE (curso 2005 / 2006), fruto del convenio de colaboración tecnológica entre la Fundación Caja Duero y la Universidad Pontificia de Salamanca (UPSA). Estos proyectos estan orientados al desarrollo de aplicaciones para dispositivos móviles.

La idea, originalmente garabateada en un papel en sucio junto a otras no-tan-malas ideas, se presentó informalmente a Encarna Beato, jefa de los proyectos y sub-directora del CPD de la UPSA. Ésta, me recomendó desarrollar la mascota virtual en la que se convertía Jou.

De esta forma, se presentó un desarrollo formal del videojuego encuadrado en la planificación a la que estamos atados, pues los proyectos abarcan desde Noviembre hasta Junio. Al finalizarlos se realiza una presentación de los mismos al resto de compañeros, colegas y profesores.

La idea fue completamente planificada, gestionada, diseñada y desarrollada por Fernando Fernández Fidalgo. Su desarrollo trajo muchos quebraderos de cabeza, pues este alumno de la EUI-UPSA solo disponía de los conocimientos alcanzados en 2º de la Ingeniería Técnica en Informática de Gestión, de las tutorías mensuales de Joan Borrás (Tempos21) y de los recursos que la universidad ponía a su disposición (formación (40 horas), un ordenador y un móvil(nokia6230i)).

El dibujo original de Jou fue realizado por Alvar Valverde Martín; compañero y gran amigo.

El resultado fue bastante bueno y bien aceptado. Se consiguió desarrollar una mascota virtual escrita en J2ME, utilizando la NokiaUI y compatible con todos los móviles que soporten MIDP1, CLDC11 que acepten aplicaciones de más de 64 Kb(87Kb de JAR final). Esto es, la inmensa mayoría de Nokia y SonyEricsson.

El juego tiene varios objetos, actividades, día y noche, una interfaz sencilla y cerca de 8 horas de juego; mientras inculca valores relacionados con la salud y la buena alimentación. Uno de los principales objetivos de este proyecto es la relación entre los videojuegos, la salud y la formación.

Más adelante hablaremos de qué reglas imperan en este mundo y cómo reacciona a ellas 'Jou', su protagonista. Así como de los proyectos que nacieron a raíz de él.