Tuesday, August 30

Localización de textos en J2ME

Reproduzco el código de la semana que se ha publicado en el foro de Stratos:


Os presento una clase muy simple para recuperar cadenas de texto localizadas en J2ME. Permite seleccionar el idioma en el que queremos presentar los textos, usando por defecto la localización del dispositivo.

Antes de usar la clase, debemos colocar un fichero de texto para cada idioma que queremos soportar. Este sería un ejemplo para el idioma español:

menu.main.newgame = Nuevo juego
menu.main.options = Opciones
menu.main.help = Ayuda
menu.main.exit = Salir
ingame.lives = Vidas
ingame.energy = Energia

Este fichero lo llamariamos "es-ES.txt" y lo colocaríamos en un directorio llamado "i18n" dentro de los recursos de la aplicación. Si vamos a soportar español, inglés y alemán, tendríamos la siguiente estructura:

i18n/es-ES.txt
i18n/en-UK.txt
i18n/de-DE.txt

La notación de los nombres de ficheros viene dada por los códigos de idioma y país.

Ejemplo de uso

En el siguiente ejemplo, mostraríamos tres cadenas localizadas en el idioma por defecto del teléfono, en el caso de lo hayamos soportado. En otro caso, usaría la localización "en-UK" por defecto. Luego seleccionamos manualmente el idioma alemán-Alemania y volvemos a mostrar las tres cadenas:

Locale locale = new Locale();

System.out.println( "New game = " + locale.getString( "menu.main.newgame" ) );
System.out.println( "Options = " + locale.getString( "menu.main.options" ) );
System.out.println( "Lives = " + locale.getString( "ingame.lives" ) );

locale.setLocale( "de-DE" );

System.out.println( "\nNew game = " + locale.getString( "menu.main.newgame" ) );
System.out.println( "Options = " + locale.getString( "menu.main.options" ) );
System.out.println( "Lives = " + locale.getString( "ingame.lives" ) );


Podeis descargar un MIDLet de ejemplo desde este enlace. Debereis ejecutarlo en un emulador ya que imprime la salida por la consola.


Notas y posibles mejoras


- En caso de que Locale no encuentre ningun fichero, todas las llamadas a getString() devolverán null.

- Locale asume por defecto "UTF-8" como codificación para los ficheros. En el caso de idiomas asiáticos,hay que emplear "UTF-16" ya que cada caracter requiere dos bytes. En ese caso haríamos algo así:

locale.setEncoding( "UTF-16 " );
locale.setLocale( "jp-JP" );

Una mejora deseable sería seleccionar automáticamente la codificación para cada idioma. Otros idiomas que usan UTF-16 son el Polaco, el Finlandés y el Griego(corregidme si me equivoco)

- El código del analizador léxico podría ser reducido y optimizado usando una filosofía más "java".

- En sistemas de producción, suele existir una clase superior que devuelve "objetos" localizados, sean cadenas de texto, imágenes, etc.

Código y minitutorial: Locale.zip (38kb)

Friday, August 19

Pakkun

Encontré una buena foto buscando "pakkun" en Google Images, y se me ocurrió añadirle un protector de konoha y un vendaje en la pata izquierda para imitar al perro rastreador de la serie Naruto:



:P

Saturday, August 13

QuakeCon 2005: Conferencia de John Carmack

Durante 90 minutos John habla sobre el presente de la compañía, y admite estar desarrollando un juego para XBox 360. Tambien habla sobre el poco impacto de las físicas avanzadas y los procesadores a corto plazo. Comenta muchas más cosas interesantes, así que mejor que veais la conferencia vosotros mismos ;)


Enlace al fichero .torrent con el vídeo de la conferencia, 260MB, en formato NSV (necesario Winamp 5):

http://www.filerush.com/download.php?target=QuakeConCarmackKeynote.zip

Friday, August 12

wget, administrador de descargas

wget es una aplicación de consola para descargas de archivos mediante HTTP(S)/FTP. Está presente en la mayoria de sistemas Unix. Lo interesante de esta herramienta es que puede actuar como un administrador de descargas, evitando acudir a programas de terceros tipo FlashGet, DAP, etc..

Por ejemplo, para descargar un fichero a 50kb/s, y activar la reanudación de descargas, escribiríamos algo así:
wget --continue --limit-rate=50kb http://servidor.com/fichero.zip
¿Y si queremos apagar el ordenador una vez finalice la descarga? Podemos concatenar dos comandos en Unix mediante una coma ";":
wget http://servidor.com/fichero.zip; halt
El comando "halt" puede no estar presente en algunos sistemas, en los que habría que utilizar la orden "shutdown now" o similar. De la misma manera, podríamos planificar más descargas consecutivas usando la coma.

Otra opción algo más avanzada es "--user-agent", que permite que wget se presente como un navegador determinado, y así poder "engañar" al servidor web. Es útil para acceder a ciertos contenidos reservados a navegadores concretos, como los de los teléfonos móviles.

Hay mucha más información sobre wget en el manual.

Mega

Esta es Mega. Las primeras dos fotos son de cuando tenia 2 meses. Las más recientes son con 8 meses. Es una perraca. No fuí yo quien propuso el nombre, sino mi madre. 'Mega' es el nombre de una isla del océano Índico, y no tiene nada que ver con el ADSL :P

Thursday, August 11

Intel Dev Kit de Apple hackeado

La mayoria de las páginas dedicadas al seguimiento de Apple se hacian eco esta madrugada de los primeros vídeos de Mac OS X corriendo fuera de los Intel Dev Kits.

Podeis descargar los vídeos mediante bittorrent desde hardmac.com



El vídeo en cuestión muestra la versión x86 de OS X para desarrolladores ejecutándose en un portátil Centrino 1.6Ghz. Dejo la polémica para cuando se consiga ejecutar la versión final de Mac OS X 10.5 "Leopard" en la mayoría de PC's nuevos... O.o!

Thursday, August 4

Impresiones Campus Party 2005

Zona de desarrollo

Superó mis expectativas, y aunque no todo fue perfecto, creo que estuvo realmente bien para ser la primera edición. Lo más importante es que la iniciativa se repita y mejore cada año, para que poco a poco se vaya promocionando y potenciando la industria de desarrollo en nuestor país.

Todo esto se lo debemos principalmente a David Font(Synchrnzr), que ha sido el encargado de organizar la zona, traer a la mayoría de conferenciantes, y además proponer el concurso de proyectos.

Charlas y conferencias

Martes

La empresa Next Limit presentó su software RealFlow 3, que se utiliza para la simulación de fluídos y otros elementos físicos en la industria del cine, animación e incluso arquitectura. También hablaron sobre su próximo producto: Maxwell Render. Un motor de render para los paquetes 3d más importantes, con una base física, y que consigue unos resultados realmente espectaculares. Tambien anunciaron acuerdos con dos conocidos publishers de videojuegos para integrar el motor de física en tiempo real en la cadena de producción de sus juegos dentro de varios años.

El mismo día asistí a una charla sobre las oportunidades que presenta el boom de los videojuegos para móviles. Todo muy bonito, aunque los desarrolladores con experiencia en este mercado no suelen verlo todo de color de rosa... al final, las licencias y la publicidad determinan el éxito o fracaso de casi cualquier juego.

Más tarde Pablo Valbuena explicó en qué consistía el puesto de "Concept Artist", la necesidad de esta figura en los proyectos grandes, y qué camino debe seguirse para convertirse en uno. Mostró muchísimos bocetos y pinturas que se podrían calificar como puro arte. Pudimos ver concept art de The Lord of the Creatures, entre otros.

Me perdí los talleres de Iker J. de los Mozos(IkerClon de 3Dpoder) sobre diseño y animación 3D, pero hubo gente que los calificó como lo mejor de toda la semana.


Miércoles

Por la tarde hubo un par de charlas sobre API's para juegos, y motores 3D. Sólo fuí a la charla de motores, que desgraciadamente estaba orientada a principiantes... además hubieron bastantes "incorrecciones" por parte del ponente.

Jueves

Digital Legends presentó ONE, su juego de lucha para N-Gage. A destacar el apartado gráfico y la posibilidad de personalizar completamente el aspecto de los luchadores. Como desmostración, crearon una nueva luchadora y le dieron un aspecto muy similar al de Uma Thurman en Kill Bill(chándal amarillo con rayas negras). Luego jugaron un par de partidas por Bluetooth.

Más tarde, una charla sobre "guiones para videojuegos". Fué bastante entretenida, aunque el título engaña, ya que se habló de muchas cosas, pero sin profundizar demasiado en cómo contar una historia dentro de un videojuego.

Viernes

Un miembro de la empresa alicantina Trymedia presentó la charlas "Dentro de la mente del hacker". No fuí, porque ya he asistido un par de veces a esta misma conferencia en la Universidad de Alicante. Se trató el tema de la distribución digital de contenidos, y las medidas básicas de prevención o disminución de la pirateria. Para ello se explica la forma de actuar de los grupos organizados de crackers/hackers, y cómo se puede proteger el software durante un tiempo con el menor esfuerzo, partiendo de la premisa de que todos los sistemas se pueden romper.

A media mañana se presentó la X-Box 360. No hay mucho que añadir.. sólo hubo un par de vídeos inéditos, pero nada realmente espectacular. Me da miedo que con las prisas que tiene Microsoft por sacar la consola, la primera hornada de juegos esté compuesta por títulos mediocres y con tecnología(a.k.a. gráficos) desfasada.

Me perdí las dos charlas de la tarde, debido al cansancio y la falta de sueño: Programación Multiplayer por Nester Matas(Zinkia Ent.) y Audio Digital para videojuegos por Pablo Delgado y David Font(saludos!).


Sábado

Último dia. Dos profesores de La Salle presentaron I-Shadows, un proyecto similar en concepto al conocido EyeToy, pero que se limita a procesar la sombras del usuario. Para ello requieren un proyector, una sala a oscuras, y una webcam. Ellos mismos admitieron que el sistema podía ser mejorado, y que cualquier estudiante de 3º curso podría lograr algo parecido con tiempo y paciencia. En el futuro van a dejar de lado las sombras, y trabajar directamente con la imagen del usuario, al estilo de EyeToy.

Mesa redonda sobre la creación de videojuegos en España. Participaron Antonio Arteaga(fundador Stratos), gente de Exelweiss, Zinkia Ent. y Alberto Melgar(futurocio.com). Lo mejor fueron las anécdotas sobre desarrollo: contratos con trampa, publishers "listos", desarrolladores aun más "listos", proyectos inacabados, etc.. estuvo muy bien la verdad : )

Por la tarde tuvo lugar la última charla, donde se presentó la oferta docente relacionada con los videojuegos en dos universidades españolas: Universidad Europea de Madrid, y La Salle(Barcelona).


Conclusiones

El año que viene repetiré la experiencia si me es posible. Espero que la zona de desarrollo se mejore en calidad y contenidos. Sin embargo, es una pena tener que compartir el recinto con los cientos de capullos que no paran de gritar y molestar durante la party... incluso fuera de la zona de gamers.

Monday, August 1

Campus Invader

Éste es el juego con el que ganamos el concurso de la Campus Party 2005:






Sigo preparando el mega-post con las impresiones sobre la Campus..