INCLUDE_DATA

Archive for July, 2007

Completando el grafo

Wednesday, 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

Monday, 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.