Hermanos Juramentados de la Espada Negra
En tiempo de desarrollo
19-2-2015 12:51
Por Siul
Salutaciones y bien hallados seáis todos.
No soy precisamente bueno ni locuaz a la hora de escribir, pero algunos de los Hermanos Juramentados de la Espada Negra me han sugerido que estaría bien que escribiera un articulo sobre el proceso de desarrollo de la Guía de Espada Negra para Android así que allá voy.
El principio se podría definir por “¿Que fue antes? ¿El huevo o la gallina”. Cuando se inicio el CF ya teníamos ganas de sacar algo más complementario según se fueran consiguiendo los objetivos y aunque la idea de una aplicación para Android no era algo nuevo en estos años de desarrollo del juego de rol, si que lo fue el determinar que aplicación sería.
Aunque algunos miembros de La Hermandad somos programadores ninguno somos expertos en Android y eso implico aprender sobre la macha.
Verion y yo empezamos frente a mi ordenador, junto a una ventana, en un rincón del salón en el piso en el que vivía al inicio del proceso, experimentando, haciendo pruebas, buscando la manera más eficaz de programar la aplicación para poder actualizarla de la manera más dinámica y sencilla posible ante los posibles imprevistos que pudieran surgir. Esto lo planteamos creando un indice de contenidos en un archivo XML. Android mostraría dinámicamente unos botones u otros en función de la información contenida en dicho archivo. De esta manera otros creadores de juegos podrían modificar los contenidos de la aplicación sin saber nada de programación.
Una cosa que nos quedó clara desde el principio es que Android apestaba bastante a nivel de desarrollo, pese a disponer de las herramientas necesarias. Pero tras varias horas mirando en la pantalla y picando código por turnos finalmente conseguimos armar el esqueleto del proyecto, el cual terminaría obteniendo consistencia en días posteriores.
El siguiente paso era extraer el contenido de la web para poder aplicarlo en la aplicación. De esta tarea se encargó Verion quién desarrolló una herramienta para obtener los datos y portarlos a la aplicación.
Todo parecía ir bien hasta que nos dimos cuenta de que los contenidos de la aplicación no se ajustaban correctamente a la pantalla, algunos quedaban descolocados, los botones del menú tenían las funciones básicas invertidas y por supuesto faltaban algunas imágenes, cuya realización ya estaba encargada a los correspondientes dibujantes.
Así que me puse manos a la obra.
Para corregir el desajuste de los contenidos no tuve mucho problema gracias al Maravilloso Sistema operativo que empleo en mis equipos. Si, GNU Linux.
Gracias a la existencia de un comando que permite modificar el contenido de archivos sin abrirlos cree un script Bash que corregiría la cabecera de todos los archivos de contenido de un plumazo.
Corregí también la inversión de función en los botones de los menús aunque esto tuvo que ser uno a uno en el esquema.
Después el gran amante de los profundímetros, si Verion otra vez, me sugirió que metiera uno en la aplicación. A mi no me gustaba visualmente y al principio tampoco lo veía una utilidad real, cosa que después me di cuenta de que si la tenía.
Pese al desacuerdo decido meterlo como algo opcional lo cual me obligó a jugar con los diseños de la pantalla sin cargarme nada lo cual me llevó algo de tiempo, sobre todo en la versión horizontal.
Tras retocar el código de automatización de contenidos para que interacturara con el diseño de profundímetro, comprobamos que funcionaba, y la visualización o no del mismo la condicione a la pulsación de la tecla de menú de los terminales Android.
Cuando todo parecía que terminaba... no nos podíamos quedar ahí y empezaron a surgir ideas de poner un simulador de runas. En principio algo sencillo pero... queríamos que destacara algo más.
Antes de programar nada, me lancé a sacar algo que pudiera considerarse runas y como no me apetecía diseñarlas decidí recortarlas de el borde de la maquetación del manual del juego de rol.
Genial! Ya tenia algo con que trabajar.


En seguida me puse a investigar la programación gráfica bidimensional en Android, lo cual no llevó mucho tiempo, y empecé a poner las primeras runas en pantalla unas encima de otras, apelotonadas, tapándose y sin que se pudiera determinar visualmente que había salido más que con un numero en la parte inferior de la pantalla.
Lo siguiente era hacer que las runas se dispusieran en el espacio de tal manera que no se pisarán, para lo cual empleé un bucle de posicionamiento y comprobación de las runas que se desencadena según se depositan en el espacio y aplicando una modificación al tamaño en función del número de runas y el espacio disponible.
Incluí un campo para indicar el numero de runas mediante el teclado numérico de Android, pero rápido quedó claro que eso debía de cambiar.
Después decidí mejorar el aspecto de las runas para lo cual empleé la aplicación de modelado y animación 3D Blender. Básicamente utilicé las imágenes que tenia de las runas como textura para unas runas 3D a las que pudiera aplicar un brillo y dar sensación de relieve una vez representadas como imágenes 2D.Y entonces apareció Verion y me dijo... “El que las runas salgan con el símbolo siempre derecho queda feo y poco natural”.
“¡Mierda!” pensé, si giramos las runas el brillo también girará y sería peor, pero él tenía razón.
Así que a solucionarlo.
Realmente pensaba que esto iba a ser más complejo pero no lo fue. Simplemente realicé un render de las runas sin textura, modificando el material a modo de cristal de tal manera que solo se representaran los brillos y las sombras pero no el dibujo. Después efectué los render de las runas sin los efectos de la iluminación.
Finalmente sobrepuse la imagen de los brillos y sombras sobre el dibujo rotado al azar de cada runa y TACHAN! Listo.
Ya solo faltaba crear un control más amigable para elegir el número de runas en lo que tardé una tarde y aprendí más cosas sobre la programación de Android.
Cambiando un poco la afinación matemática logre que arrastrando el dedo sobre el control se variara el valor mostrado en el mismo.
Todo resultaba ya más fácil, cómodo y rápido, tanto en el desarrollo como en el manejo de la aplicación.
Tras varios días corrigiendo fallos en el contenido, bugs en la visualización del lanzador de runas y otros detalles menores se decidió meter también las ventajas y defectos, contenido que tuve que adaptar a mano al no disponer de la herramienta de Verion para tal fin debido a la enorme carga de trabajo que este ya soportaba.
Como constante en este proyecto estaba el … “vamos a meter esto también”.
Lo último que metimos de contenido fueron las cualidades pasivas sobrenaturales, que en un principió posicionamos cada cual en su esfera en el apartado de poderes, lo que hizo que rápidamente Verion me hiciera consciente del error a nivel de accesibilidad. Optamos por añadirlo en una sección propia en el menú principal lo cual lo hacía mucho más accesible.
¿Por fin terminada?
Pues no, unos minutos publicada la aplicación y mientras escribía estas lineas surgieron fallos, como la falta de dos imágenes en el bestiario que rápidamente tuve que solventar en mi jornada laboral empleando un netbook para la compilación de la aplicación.
Unos meses de crisis económica personal y otros imprevistos, sin medios económicos de apoyo, de manera autodidacta, con una mudanza de por medio y dedicando el poco tiempo libre disponible finalmente lo conseguimos.


Ya solo falta retocar un poco el código antes publicarlo para que simplemente modificando un XML y metiendo unos cuantos archivos con información e imágenes puedan adaptar la aplicación para cualquier juego de rol.
En fin, y esto es un resumen breve de lo que ha sido programar “La Guía del Juego de Rol de Espada Negra para Android”.