INCLUDE_DATA

Nuevas versiones de AGE y PUCK

December 11th, 2008

Entre anteayer y hoy, en el canal #caad se ha hablado bastante de parsers. Y, como suele suceder cuando se habla de parsers, me he “picado” y me he puesto a programar. Subo hoy una nueva versión tanto de AGE como de PUCK (constituyendo lo que sería el AGE World Creator Kit, que permite programar y jugar), con las siguientes mejoras principales:

- Eliminado (creo) el cuelgue al iniciar las aventuras que experimentaban algunos usuarios de Ubuntu.  Cuando digo “creo” quiero decir que Netskaven ha comprobado que antes se le colgaba y ahora, con el arreglo que he hecho, ya no. Pero me gustaría que más ubunteros me digan si ahora les funciona.

- Ahora, la última versión del AGE es capaz de abrir las aventuras de 2005 “AGE Arena” y “Zendyr’s Labyrinth”. En las versiones anteriores, estas aventuras ya no se podían abrir por algunos cambios que había hecho; pero ahora vuelven a ser compatibles con la última versión. La única aventura de AGE que no se puede jugar con esta versión es “Los Inmortales”, del remoto 2002; pero espero arreglar esto también.

- Añadido al PUCK un sistema de skins para que sea fácil cambiar los iconos del programa, y añadido un bonito skin de iconos creados por Urbatain. Para cambiar el skin, se puede hacer editando el fichero de configuración y cambiando “skin=urba1″ por “skin=naive” para poner el skin anterior. Para crear nuevos skins, se puede hacer abriendo el fichero PuckCore2.jar (que se abre con el winrar, o con cualquier descompresor de rar’s cambiándole el nombre temporalmente a rar si es necesario) y mirando en el directorio skins. Hay dos skins hechos (naive y urba1), y es muy fácil ver cómo están hechos, sólo tienen las imágenes correspondiendo a los iconos y un fichero de texto que dice cómo se llaman.

- Eliminado algún fallo de usabilidad de PUCK que daba problemas si hacías ciertas cosas. Yo creo que ahora es perfectamente usable para crear una aventura sin elementos de rol. Eso sí, sigue faltando la documentación, la eterna asignatura pendiente.

- Con este release de AGE y PUCK se incluyen las aventuras “AGE Arena”, “Zendyr’s Labyrinth”, “Vampiro”, “Fuego” e “Insecto Mortal”. Nótese que las dos primeras pueden ser jugadas con el AGE; pero de momento no pueden ser abiertas con el PUCK porque a éste le falta el soporte de algunos elementos roleros (definiciones de armas, etc.) y por lo tanto no reconoce bien estos ficheros que los usan. Esto se arreglará con el tiempo, por supuesto. Las aventuras “Vampiro”, “Fuego” e “Insecto Mortal” sí que las podéis abrir (y modificar) con el PUCK.

- En Windows, AGE se ejecuta con Aetheria.bat y PUCK con puck.bat. En linux, AGE con Aetheria.sh y PUCK con puck.sh. Recordar que hace falta una máquina virtual Java, la versión mínima para que funcione es 1.4 para AGE y 1.5 para PUCK. Si habéis actualizado el java en los últimos tres años no deberíais tener problema.

Aquí tenéis el enlace de la descarga: http://irreality.eu/age/AGEyPUCK081210.zip

Os invito a que hurguéis todo lo que queráis y me comentéis cualquier problema o sugerencia que pueda surgir.

Avances en PUCK

February 4th, 2008

Estos últimos días, el PUCK ha estado avanzando sin prisa pero sin pausa. He corregido numerosos bugs y molestias menores, que eran poca cosa individualmente; pero tras eliminarlos todos el programa es mucho más usable y estable.

También he quitado los últimos problemas que impedían cargar el XML de la aventura larga que dejé a medio hacer en 2003, “El Despertar de Zogon”. He aquí cómo se veía dicha aventura esta mañana en el PUCK (NOTA: se ven los nombres de localidades y objetos, con lo cual hay SPOILERS para los que quieran jugar la aventura si la saco algún día):

El Despertar de Zogon en PUCK (1)

Como se puede ver, el grafo está bastante enmarañado y, aunque se puede hacer “zoom” a una parte para quitarse información irrelevante de encima, sigue siendo bastante lioso. Gran parte del enmarañamiento responde a unos cuantos objetos que tienen gran cantidad de flechas desde otros, porque son compartidos (por ejemplo, muchos monstruos tienen garras, y todos ellos tienen una flecha diciendo que “contienen” las garras). Para solucionar este problema, he hecho que las flechas muy largas se corten, mostrándose en dos partes, de modo que el final de la una haga referencia al principio de la otra. Con esto, la representación es más clara:

El Despertar de Zogon en PUCK (2)

Ahora las cosas se ven bastante bien cuando uno hace zoom (no muy bien en la foto, pero es normal, cuando se están mostrando a la vez todos los objetos de una aventura que tiene más de cien). Hay un caso en el que no estoy muy satisfecho, sin embargo, y es cuando tenemos puertas. Cuando hay dos habitaciones conectadas por una puerta, se muestran:

  • Las dos habitaciones 1 y 2,
  • Flechas de la habitación 1 a la 2 y de la 2 a la 1 indicando las conexiones (caminos),
  • El objeto puerta,
  • Línea gris entre cada camino y la puerta para indicar que la puerta está asociada a los caminos,
  • Flechas entre la habitación 1 y la puerta y entre la habitación 2 y la puerta, para indicar que las habitaciones contienen a la puerta.

Esto es la forma más coherente de representar las puertas dentro de mi modelo, pero la verdad es que vuelve la representación un poco complicada. Tengo que pensar si hay alguna forma de simplificarlo. ¿Sugerencias?

AGE en el BugTracker del CAAD

November 27th, 2007

He dado de alta el proyecto AGE+PUCK en el bugtracker del CAAD. He subido a él los informes de bugs y sugerencias que me han hecho Grendel, Lenko y Urba, así como alguna “autosugerencia” para tener presentes cosas que hay que añadir en el futuro.

Cabe destacar que, en un solo día, el AGE se ha convertido en el proyecto más activo del bugtracker, en términos de número de reportes, seguido en segundo lugar por Superglús :P

El bugtracker es una herramienta útil que por desgracia está infrautilizada, creo que sería buena idea que más gente le sacara partido. Gracias a Uto por haber montado esta herramienta en su momento y haberla puesto a disposición del CAAD.

La lista de bugs ahora mismo es pública (aunque no sé si permanentemente, porque según dice Uto en el pasado ha habido problemas con bots de spam). Podéis verlos todos aquí.

Y si os hacéis usuarios podéis también mandar comentarios sobre los bugs o incluso nuevos informes.

El botón Go

November 23rd, 2007

Ya está listo el botón “Go” del PUCK, cosa que quiere decir que se puede crear una aventura usando PUCK, darle a un botón y probarla en el AGE al momento.

Ayer el valiente Grendel estuvo haciendo un poco de alpha-testing, y ya han salido un par de bugs graves, uno de los cuales no he conseguido reproducir en mi máquina pero creo que está arreglado. Y es que aunque uno tenga cuidado al programar, e intente no distribuir las cosas demasiado pronto, al final no hay forma humana de salvar a los testers de sufrir “show-stopper bugs”. Cosas de la naturaleza del desarrollo software, supongo.

Por cierto, si alguien más quiere probar lo que hay hasta ahora, que me lo diga y le mando una distribución actualizada al último segundo. Pero eso sí, con la advertencia de que es inestable y además no está completo, el IDE aún no está lo suficientemente documentado como para que se pueda hacer una aventura con sus puzzles y su final (sí debería estarlo para hacer unas cuantas localidades conectadas con objetos).

En todo caso esto podéis pedírmelo sin ningún compromiso, o sea, si tenéis curiosidad por saber qué pinta va teniendo. Esto no os compromete a hacer de testers, mandar bugs y tal.

Reorganización y otras zarandajas

November 18th, 2007

Estos últimos días, la alta actividad en el #caad del IRC con motivo del resurgir de SPAC y de la Minicomp me ha provocado un ataque de motivación que me ha puesto a trabajar en el AGE otra vez.

Lo que he hecho ayer y hoy es hacer con el AGE lo mismo que comentaba en la última entrada que había hecho con el PUCK, es decir, reorganizar el proyecto y crear una “ant build file” para poder sacar versiones utilizables en cualquier momento.

Esto ha dado algo más de trabajo que con el PUCK, ya que el AGE es un proyecto que viene de muy antiguo y que empecé a desarrollar sin IDE ni nada, y por ello la estructura de ficheros estaba muy desorganizada. Ahora la he ordenado bastante, poniendo cada cosa en su sitio, y ya tengo la susodicha “build file” que genera versiones de AGE ejecutables en windows a partir de las fuentes. Digo en windows porque no sé qué script o programas se ha dedicado a cambiar las extensiones de algunos ficheros a mayúsculas cuando deberían estar en minúsculas, y eso hace que en este preciso instante AGE casque bajo linux. Pero obviamente eso se arregla en quince minutos. :)

Aparte de dicha reorganización, que era algo que tenía ganas de hacer desde hacía tiempo pero me daba pereza, también he creado un par de métodos de conveniencia que permiten cargar mundos desde un fichero mediante argumentos de línea de comandos. El objetivo de esto es poder hacer que PUCK, el IDE del AGE, tenga un botón “Go”, es decir, un botón que permita probar rápidamente la aventura que estamos editando (sugerencia de Urba). El AGE ya está preparado para esta funcionalidad, ahora queda añadir el botón en sí al PUCK, que será trabajo fácil.

Completando el grafo

July 18th, 2007

Estos días, en el poco tiempo libre que me ha dejado un súbito y agudo ataque de papeleo, he estado avanzando en la programación de PUCK, el IDE para creación de aventuras en AGE.

Lo primero que he hecho ha sido mejorar un poco la organización del proyecto, creando un “ant build file” que me permite sacar versiones funcionales cuando yo quiera. De este modo, si en algún momento queréis saber cómo va el desarrollo de PUCK y obtener una versión compilable y ejecutable, no tenéis más que pedírmelo y os la saco en un momento. Antes tenía que montar estas versiones a mano si quería que se pudiesen ejecutar fácilmente en ordenadores que no fuesen el mío.

Después de este cambio vinieron unos días sin tiempo libre, y finalmente ayer retomaba el trabajo, añadiendo al grafo de PUCK la capacidad de incluir objetos de tipo Spell (hechizos) y AbstractEntity (entidades abstractas).

En el modelo de mundo de AGE, un mundo está formado por un conjunto de objetos (entidades) que se relacionan e interactúan entre sí. Existen varias clases de entidades:

  • Habitaciones
  • Personajes (jugadores o no)
  • Cosas (objetos inanimados)
  • Conjuros
  • Entidades abstractas (esta clase se utiliza para que el creador de aventuras pueda definir cualquier concepto no cubierto por las entidades anteriores… yo las he usado para representar por ejemplo conocimientos de un personaje, o el tiempo atmosférico).

El PUCK funciona permitiendo al creador de aventuras colocar unos iconos que representan estas entidades sobre un lienzo, y unirlas con flechas que denotan las relaciones entre ellas (por ejemplo un camino entre habitaciones, o el hecho de que un personaje posea un objeto). Esta representación con iconos y flechas se llama un grafo de mundo. Las dos últimas clases mencionadas son las que he añadido ayer al grafo; aunque en el caso de los conjuros todavía falta añadir al IDE los formularios correspondientes a atributos específicos de este tipo de entidad. (también faltan, por cierto, partes de los formularios para algunos subtipos de objeto, como las armas o los objetos vestibles).

Presentación

July 2nd, 2007

Muchos de los que lleguéis a esta página seréis asiduos de CAAD, y tendréis una idea de lo que es el Aetheria Game Engine (AGE).

Para los que no lo sepan, se trata de un completo sistema de creación y ejecución de aventuras de texto que comencé a programar allá por el año 2001 (!), cuando empecé la carrera.

El proyecto avanzó con paso firme durante los años 2001 y 2002, hasta el punto de que en noviembre de 2002 aparecía una beta pública con la aventura de ejemplo “Los Inmortales“. A esta versión le faltaba el acabado y la documentación para que cualquiera pudiese ponerse a crear aventuras con ella; pero se podía jugar la aventura y ver que el motor funcionaba. Aunque “Los Inmortales” carecía de soporte multijugador, incluso esta función estaba ya implementada (aunque todavía algo inestable), como se mostró en un juego experimental (AGE Arena) creado en 2003.

Continuando a este ritmo, el proyecto habría visto fácilmente la luz en forma de versión 1.0 en 2003. Pero, por desgracia, en ese momento se produjo un parón en el desarrollo que ha llevado a muchos a calificarlo de “vaporware”. ¿Qué sucedió para que un proyecto en el que todo lo importante ya estaba implementado, y quedaba más que nada pulir detalles, sufriese un parón tal? Fueron varios los factores que influyeron:

  • Disminución drástica de mi tiempo libre durante los últimos cursos de la carrera, que me resultaron más duros que los primeros.
  • Cuando volví a tener algo de tiempo libre, no estaba muy animado a continuar el proyecto, por circunstancias personales.
  • Cuando me animé un poco a terminar el proyecto, me encontré con la dificultad de retomar código que llevaba unos dos años sin ver… dos años en los que, además, los nuevos conocimientos adquiridos en la carrera habían cambiado totalmente mi forma de programar.
  • Además, el trabajo restante consistía principalmente en documentar, cosa que me aburre muchísimo (al contrario que programar). Todo esto contribuyó a que, a pesar de querer terminar el proyecto, me diese pereza abordar la tarea.

Así, a lo largo de estos últimos años he estado dando algunos tímidos pasos, sobre todo en cuanto al desarrollo de un IDE para la creación de aventuras… pero estos pasos han sido pequeños, nada que ver con el ritmo de hace años.

El caso es que estos días varias personas me han estado hablando de AGE. A través del IRC, Urba ha estado dándome ideas, preguntándome por el proyecto y animándome a acabarlo. A esto se une la mención en el blog de Grendel, y una conversación en el canal #caad este viernes: se dio la afortunada circunstancia de que coincidimos en el chat varios aventureros con interés en los aspectos de programación, y estuvimos hablando de parsers. A muchos les parecerá una tontería; pero lo cierto es que hablar de este tema siempre me produce un cierto efecto de catarsis.

En dicha conversación, Mel Hython nos recomendaba que nos hiciéramos blogs como motivación para avanzar en nuestros proyectos (pues escribir algo, y sobre todo recibir comentarios, siempre anima). Me ha parecido un consejo interesante, así que le he hecho caso, he cogido el último WordPress y me he montado esta bitácora.

¿Esto quiere decir que voy a terminar el AGE en menos que canta un gallo, o algo por el estilo? En principio, no prometeré nada, ya hace tiempo que no lo hago. No me gustaría lanzar promesas al viento y que acabasen en nada. Sí os puedo decir que estos días he estado pensando en el proyecto y llenando papeles de anotaciones, que esta semana me pondré a programar, y que durante el verano, aunque tendré que trabajar, siempre me quedará algo de tiempo libre.

Espero contar aquí las cosas que vaya haciendo, y recibir todo tipo de comentarios y críticas. Por supuesto estoy abierto a sugerencias de posibles características, preguntas, peticiones, o lo que sea.

Un saludo a todos los CAADeros y muchas gracias a todos los que me han animado.