(Superglús 1.0)
Domingo 10 de mayo de 2009, por El Clérigo Urbatain
Para celebrar la salida de Superglús de su estado beta, que mejor que una entrevista con su autor Uto o Carlos Sánchez. Más información previa de este autor de sistemas de autoría y administrador de CAAD en la wikicaad: http://wiki.caad.es/Uto
Urbatain: Para quien haya estado en la Babia todos estos años, explícanos brevemente qué es Superglús.
Carlos: Superglús es un parser, también llamados sistemas de autoría, y es una herramienta que sirve para hacer con relativa facilidad una aventura conversacional. Superglús facilita al programador crear localidad, objetos, textos, conexiones, puzzles, gráficos, sonidos y juntarlos todos para crear una aventura.
Urbatain: Empecemos por el principio de los tiempos de dónde surgió Superglús, cuándo y porqué. Antecedentes y porqué decidiste unir tus fuerzas a las de Yokiyoki.
Carlos: Bueno, en realidad yo no pensaba hacer Superglús, sino que solo quería hacer un IDE para Paguaglús, y lo hice, pero según lo hacía ya empecé a hablar con Yokiyoki sobre alguna cosa que le faltaba a Paguaglús con respecto a PAWS, y no se ni cómo ni por qué acabé metido en las entrañas de la bestia. Anteriormente, como muchos sabéis, yo ya había creado un parser "PAWLike" llamado NMP, y este parser tenía capacidades más avanzadas que PAW, algunas propias y otras heredadas de DAAD. Así, un día, miré lo que tenía NMP y no tenía Paguaglús y me salió una lista tremenda, pero decidí tomar las cosas que me parecían más importantes: la indirección, los identificadores y el condacto WRITE. La primera añadía notable potencia al sistema, la segunda y la tercera comodidad (el sistema de mensajes de PAW es un rollo, y despues de usar WRITE en NMP lo de andar con "MESSAGE 126" en Paguaglús era insufrible, y referirse a todo por el número era otro horror). Afortunadamente, ahí estaba ya también Baltasar con su txtpaws para solucionar lo de los identificadores, así que solo tuvimos que hacer entre Yokiyoki y yo las otras dos cosas.
Entonces nos dimos cuenta de que Paguaglús ya no era Paguaglús, y que el siguiente paso que íbamos a dar (atributos de objetos) rompía la compatibilidad hacia atrás, y decidimos escindir el desarrollo. Así nació Superglús: "super" por que es superior que Paguaglús, y "glús" porque es Glulx (y Superglús porque el nombre es tan jocoso o más que Paguaglús). Una vez existió Superglús el "germen" ya había anidado en mí, y me vi "obligado" a seguir añadiendo características, alguna de las cuales superan a las de NMP (si bien otras funcionalidades que estuvieron aún no están, y algunas no estarán jamás porque no cuadran con la filosofía Glulx).
Urbatain: Descríbenos pormenorizadamente los componentes de Superglús, de qué se compone, su IDE, porqué Glulx, etc.
Carlos: Bueno, Superglús es un paquete, que contiene varias cosas: el IDE, el preprocesador, el compilador, el ensamblador y el empaquetador. Del IDE hay dos versiones: una para Windows y otra para Linux, y permite editar cómodamente el proyecto. Después, hay versiones compiladas para Windows y Linux de las demás herramientas. En realidad, el usuario de Supergús no necesita saber esto, porque el IDE esconde todo el proceso y nos basta con dar al botón de "ejecutar" para probar nuestra aventura, pero comentaré como va el asunto por debajo para los más técnicos:
El fichero fuente de Superglús tiene extensión TXP, e incluye indetificadores, es decir, podemos referimos a un objeto (por ejemplo) por su nombre (llave) en lugar de por su numero (por ejemplo, 6). El preprocesador, txtpaws, se encarga de substituir "llave" por "6", y genera un fichero similar pero con las substituciones hechas de extensión SCE. Además, txtpaws genera un fichero de entrada para blc con los recursos gráficos y sonoros de la aventura (lo vemos mas adelante).
El fichero .SCE es tomado por el compilador, spg, y genera un fichero fuente en ensamblador, uniendo lo generado por el compilador (el código variable diferente de cada aventura) y partes fijas como la parte que analiza frases, pone gráficos, etc., que están en la carpeta PGL. Se genera un fichero con extensión ULA.
El fichero .ULA es tomado por el ensamblador, glulxa, y genera un fichero ejecutable .ulx (para máquina Glulx). Este fichero ya contiene la aventura jugable pero sin gráficos.
Finalmente, el empaquetador, blc, toma el fichero .ulx y el listado de recursos generado en el primer paso por txtpaws y genera el fichero .blb final, un ejecutable con todos los recursos.
Obviamente, si nuestra aventura no tiene gráficos ni sonido, podemos usar el .ulx, de hecho, es mejor usarlo.
En cuanto a por qué Glulx, pues bien, la decisión no fue mía, sino de Yokiyoki. Pero supongo que su portabilidad y capacidades le convencieron. Nótese que al existir intérpretes Glulx para varias plataformas se hace innecesario que nosotros programemos intérpretes, que era algo que se llevaba mucho tiempo en la época de NMP o SINTAC, y que además producía que solo hubiera interpretes para un sistema, cosa casi inaceptable hoy en día.
Urbatain: ¿Nos puedes comentar que opinas de la máquina Glulx en más detalle, y que tal es programar para ella?
Carlos: Glulx es una maquina virtual, lo cual la convierte en algo especial. El ensamblador de Glulx se parece a otros ensambladores, pero menos que todos los demás ensambladores entre sí, es decir, es un poco raro: carece de registros, permite tres operandos en opcodes simples, que hacen que en una sola línea se haga lo que en otros ensambladores en tres, tiene operaciones en algunos casos bastante complejas (en el sentido de que hacen una tarea compleja) y tiene cosas extrañas como cabeceras de funciones, que yo no he visto en otros ensambladores (y conozco el de Z80, gama 8086 y gama 68000). Precisamente esas operaciones que hacen tareas complejas, unido al tema de los tres operandos hacen programar en ensamblador de Glulx una tarea mucho más sencilla que en otros ensambladores. Sin embargo, el programa glulxa (el ensamblador de Glulx) es la mínima expresión de un ensamblador, lo cual quiere decir que se queja de muy pocas cosas y sigue adelante ensamblando con errores sintácticos, y eso sí da muchos quebraderos de cabeza hasta que encuentras qué está fallando. En cuanto a la maquina virtual en sí, pues quizá las únicas carencias que le encuentro es su incapacidad de definir formatos y resoluciones de pantalla. Esto es algo que es así intencionadamente y sé que a alguna gente no le gusta lo de la "pantalla completa", pero yo considero que es algo fundamental que un autor pueda definir como es su obra, y los jugadores son muy libres de no jugarla si no les gusta como el autor la creó. Nada impediría dar esa posibilidad y que un determinado interprete que sea incapaz de acatar la orden, la ignore, como hacen los interpretes que no soportan gráficos cuando les pides que pinten uno.
Urbatain: Después de mucho tiempo como beta, al fin ha salido Superglús 1.0. Dinos que cambios y mejoras se han incorporado a esta versión estable.
Carlos: La versión comenzó a cuajarse como una versión puramente de corrección de bugs, pero al final han entrado unas cuantas cosas más, entre las que cabe destacar el gran trabajo de Radin con la librería base, que ahora contiene cientos de respuestas por defecto (para que os hagáis una idea, la librería usada en la beta 4, con la que ya se han hecho algunas aventuras cuya "sordera" se consideró baja, ocupaba 38K, mientras que la actual ocupa 84K, más del doble). Aparte de esto hay algunas novedades más, como las terminaciones pronominales, inclusión del generador de código en el IDE (hay articulo al respecto del generador de código en SPAC por cierto), nuevos condactos que permiten conversaciones por menús., etc. Aparte de esto hay dos cambios importantes: la documentación se ha "wikificado" y se mantiene ahora on-line, lo cual ahorra mucho tiempo a la hora de actualizarla (antes estaba online pero sin wiki, en PDF y en fichero CHM de ayuda de Windows). También, se ha modificado el código interno para evitar utilizar las características de la máquina Glulx que no implementa el interprete Git, haciendo así compatible, al menos en teoría, Superglús con Git (dado que la montaña no venía a Mahoma pues tuve que llevar a Mahoma a la montaña).
También hay ventajas que vienen de avances externos, como el soporte de sonido Ogg, por ejemplo.
Urbatain: Comentaste en el foro que el "problema" aquel sobre el parseado débil ya estaba resuelto. Para quien no conozca el asunto, en Las Aventuras de Rudolphine, había un momento donde un grillo cantor tonaba su habitual canción, pero al escribir "Escuchar grillo", se aplicaba un "escuchar" general de "escuchar en la localidad", lo cual daba una respuesta inadecuada. No quiero entrar en la polémica, en realidad me gustaría que explicases que tipo de parseado tiene Superglús y qué cambios se han incorporado para prevenir ese tipo de problemas.
Carlos: Simplemente Superglús es capaz de indicar ahora al programador que después de encontrar el verbo en la frase, encontró una palabra que fue incapaz de identificar. Así, se permite que desde la librería o por parte del programador, se pueda comprobar si eso ocurrió en caso de no haber encontrado un verbo y no un nombre. La librería base ya incluye comprobaciones de este tipo de manera que pueda contestar con frases del estilo "no veo eso que dices" en lugar de dar una respuesta genérica, en muchos verbos (en aquellos que se consideró que la respuesta debía ser diferente). Acabo de mirar y precisamente "escuchar" no hace uso de dicha funcionalidad en la librería base, aunque la respuesta que da me parece tan adecuada para "escuchar" como para "escuchar grillo". Ignoro cual era la respuesta por defecto en Rudolphine Rur, probablemente sería una diferente.
Urbatain: Futuro de Superglús, que mejoras tenéis en mente aplicar, y qué filosofía seguirá el futuro desarrollo de Superglús.
Carlos: Superglús es un PAWLike, así que seguirá una filosofía PAWS. No obstante la librería probablemente siga creciendo en cuanto vayamos recogiendo feedback, y sobre todo, deberá soportar una de las novedades del futuro Superglús: PSIs. Al final con el soporte de PSIs algunas comprobaciones de la librería base podrán hacerse mejor, y el PSI se podrá tratar de manera adecuada. Además, se está trabajando en aumentar el sistema de efectos de sonido, con mayor número de canales de efectos, sonidos cíclicos, etc. Y por último, aunque sin entrar a fondo en ello, ando leyendo la documentación y dándole vuelta a como añadir soporte de ratón, y sprites (fundamentalmente para hacer gráficos móviles, pero claro, ya no me fio, que cualquier día me sale un Josep Coletas y me hace un Barbarian Quest).
Urbatain: ¿Y qué tal un IDE unificado? ¿Donde todos los componentes de Superglús estén juntos bajo un IDE atractivo? ¿Qué tal integrar txtMap, txtPAW e Inferno en el IDE?
Carlos: Eso es otra cosa pendiente, que no se si será para la próxima versión, es un IDE, o mejor un GUI, más visual, al estilo ADRIFT o QUEST, pero por el momento mis investigaciones para encontrar un RAD capaz de compilar para Windows y Linux al menos, y gratuito, solo me han llevado a Lazarus, el cual al ser object pascal me deja como único candidato conocido a crear el IDE, y la verdad, puede que lo haga, pero tengo que concienciarme porque es mucho curro. En cuanto a Inferno (y txtmap, que en el fondo subyace a Inferno), tengo claro que no es lo que piden los usuarios de Superglús, y se qué es lo que piden porque me lo piden a mí, y lo que buscan es un IDE tipo Adrift/Quest/VS. Inferno esta bien si te lees las instrucciones, pero no es nada intuitivo, se abre ahí sin más y no sabes que hacer. Ni Quest ni Adrift son así, y la gente lo que me pide son cosas como Quest o Adrift (o como Visual Sintac). De todos modos parece que Baltasar piensa meter más soporte para Superglús en Inferno, y me gustará mucho verlo. A mi Inferno personalmente me parece un gran invento, pero para mí, como digo, no es lo que me están pidiendo.
Urbatain: Como creador de Superglús estarás al tanto de los proyectos en ciernes que se desarrollan bajo este SCA. ¿Nos puedes dar un adelanto?
Carlos: Pues la verdad es que no, que no se de ningún proyecto que esté realmente en desarrollo, lo cual no quiere decir que no exista, porque la experiencia me dice que las aventuras hechas en Superglús aparecen por regla general sin previo aviso (parece que los autores, en general, no requieren mucha ayuda). Por el foro puedo intuir lo mismo que vosotros: que Jhames dice que probablemente Nearco IV, y que hay alguna gente que ha agradecido la salida de Superglús 1.0 y que lo estaba esperando, pero vamos, que eso se convierta en aventuras reales solo el tiempo lo dirá.
Urbatain: Por último, ¿cómo te suena Carlos Sánchez como autor de aventuras? Aparte de las chorrocientos de tareas que tienes como administrador de CAAD y autor de Superglús, ¿tienes algo aparte en mente?
Carlos: La verdad es que no, de vez en cuando me vienen ideas, pero no soy capaz de plasmarlas en guión. Es posible que sí haga algo en colaboración con otras personas, pero es poco probable que me haga una aventura en solitario. La labor de administrador del CAAD ya casi no me da trabajo por otro lado, tener varios administradores y un hosting no casero, es un gran invento.
Urbatain: Gracias por tu tiempo.
Carlos: A ti por escucharme.
Enlaces de interés: