Publicado: 19:04 18/05/2007 · Etiquetas: FIC, FIC.tion, aventura, aventura conversacional · Categorías: Videojuegos : Software
¿Qué es FIC.tion?
FIC.tion es un proyecto orientado a crear aventuras conversacionales de forma relativamente sencilla. Su núcleo es el lenguaje SFL. ¿Por qué motivo surge este proyecto? Necesitaba un tema para la realización de la práctica especial de la asignatura de Compiladores, que requiere el uso de uno o más elementos de un compilador (scanner, parser, generador de código, etc.). Era deseable que la idea fuese original y amena de llevar a cabo, características que reúne ésta. ¿Cuánto has tardado en acabarlo? Primero aclarar que no está acabado, sino en un estado lo suficientemente avanzado como para que la gente no se ría (mucho) de mí. La idea inicial surge alrededor de Febrero de 2007, pero no es hasta Marzo que me pongo manos a la obra, dedicándole un par de horas a la semana más a pensar que a implementar. FIC.tion alcanza un estado aceptable a mediados de Mayo tras dedicarle un par de semanas de manera más intensiva. Así que la respuesta corta a la pregunta es: poco. ¿De dónde viene el nombre de FIC.tion? Es un juego de palabras entre dos conceptos: el primero, el lugar donde estudio (Facultad de Informática de La Coruña, o FIC); el segundo es que a las aventuras conversacionales también se les conoce como ‘ficción interactiva’. Entiendo, pero… ¿qué es una aventura conversacional? Es quizá el primer género del mundo de los videojuegos. Su nacimiento se remonta a la década de los 70, cuando Will Crowther escribe en 1975 Adventure (después llamado Colossal Cave) en Fortran para el PDP-10. Más tarde en 1979, miembros del MIT Laboratory for Computer Science finalizan Zork, que sería uno de los muchos juegos de la compañía por excelencia del género, Infocom. Una aventura conversacional es básicamente una historia contada en primera persona, en su estado más puro sin gráficos ni sonido, en el que la interacción entre el hombre y la máquina se basa en la escritura de comandos en lenguaje casi natural. En base a estas frases, el avatar investiga su entorno, se desplaza o usa objetos. Antes hablabas del lenguaje SFL, ¿puedes hablar algo más de él? Claro, SFL es el acrónimo de Structured Fiction Language. Es un lenguaje declarativo al estilo SQL, del cual coge parcialmente su nombre (Structured Query Language). Se basa en la definicion de salas, objetos y personajes con sus características. SQL, SFL… desde luego no te has mucho estrujado las meninges… Podría haberle llamado SIFILIS (SImple FIction Language for Interactive Software), pero quizá era algo controvertido. ¿Qué herramientas has usado para este proyecto? - Flex, el generador de analizadores léxicos de GNU, en su versión para Linux que genera código C. - Bison, el generador de parsers de GNU, en su versión para Linux que genera código C. - GCC, el compilador de C de GNU en su version Linux, para generar el ejecutable en C que lee un archivo SFL. - Javac, el compilador de Java de Sun para Linux, para generar el bytecode de la traducción desde SFL y de las clases auxiliares. Conozco GCC y Javac, pero… ¿para qué sirven Flex y Bison? Flex se encarga de comprobar que una cadena de entrada es léxicamente correcta, por ejemplo en C: for(i=0;i<10;i++), es una cadena correcta desde el punto de vista léxico. for i++ ; ( i<10 ; i=0), también lo es, ya que sus elementos pertenecen al lenguaje (for, i=0…). fir(i=0;i<10;i++), no lo es. Bison comprueba que una cadena es sintácticamente correcta; la primera de las anteriores lo es pero la segunda no. Además, una vez que reconoce una tira (o parte de ella) como válida, puede realizar acciones (asignar un valor a una variable, imprimir algo por pantalla, etc.) Muy educativo, sí… ¿qué características soporta FIC.tion? Actualmente: * Hasta 64 habitaciones distintas por juego, con hasta 4 vecinos cada una. * Hasta 8 items y personajes por sala. * Conversaciones con 32 preguntas y respuestas diferentes. * Hasta 16 interacciones diferentes por objeto, cada una de las cuales puede desencadenar 4 eventos. * Inventario de hasta 8 objetos. * Items con estado, que puede ser cambiado debido a eventos. * Interacciones con objetos dependientes de interacciones previas o de estado de objetos. * Eventos dependientes de acciones previas. * Objetos ocultos desocultables. * Contabilización de puntuación y número de movimientos. * Finalización por alcance de sala u obtención de objeto. No parece muy potente, ¿no? ¿Piensas mejorarlo? No es muy potente teniendo en cuenta que Zork tiene casi 30 años y le da mil vueltas a éste… De todas formas, sí, tengo previsto añadirle más funcionalidades como: * Aumentar los límites en el número de salas, objetos, etc. quizá hasta un límite infinito (o el que permita la memoria). * Añadir nuevos tipos de eventos, incluso algunos de tipo condicional. * Implementar condiciones de terminación compuestas más complejas. * Hacer más flexible la interpretación de los comandos desde teclado. * Añadir nuevas características a los objetos como peso, género, número, sinónimos… * Implementar una sencilla interfaz para mostrar imágenes estáticas y tocar música. ¿Vas a poner FIC.tion a disposición del público? Sí. ¿Cuándo? Pronto. ¿Incluído el código fuente? No. ¿Por qué no? Odio que la gente critique mi código :] Además, tampoco es una obra magna de la ingeniería que merezca ser admirada. Así que solo distribuiré los binarios con un sencillo juego de ejemplo. ¡Pero eso va a contra del software libre! Cierto. ¿Alguna pregunta más? Eres un borde. ¿Al menos responderás a preguntas sobre su implementación, etc.? Por supuesto, sin problema. Algo es algo… ¿qué se necesita para poder crear y/o ejecutar juegos hechos con FIC.tion? Necesitas un ordenador con Linux, un compilador de Java y mis binarios. Para crear un juego antes tendrás que haber escrito un archivo SFL correcto y para jugar a uno ya creado necesitarás su SFL o su traducción o compilación Java (.java/.class). ¿Linux? ¿Y qué pasa con Windows? Quizá algún día portee FIC.tion a Windows, si hay gente que me lo pide y me veo con ganas :] Una última pregunta: ¿cómo funciona SFL? En unos días incluiré un breve tutorial del lenguaje basado en el juego que incluiré en el paquete. Perfecto. Pues sí, ¿puedo irme ya? Claro, ya hemos terminado. Pero una última curiosidad, ¿ha visto el profesor de la asignatura el proyecto? Todavía no. ¿Y si no le gusta la idea? Buena pregunta… 8 comentarios :: Enlace permanente
Comentarios: (primero los más recientes) 20:55 29/05/2007
Yo también llegué a pensar en presentar mi sistema de creación de aventuras como PFC, pero al final me surgió un tema de investigación y no lo hice. Pero desde luego en este tema hay material de sobra para hacer un PFC, de hecho sistemas existentes consolidados como Inform o TADS son mucho más grandes y complejos que un PFC (o al menos que la mayoría). En el CAAD ciertamente te será difícil encontrar cosas de tan bajo nivel, pero cuando subas a otros temas (como modelos de mundo y cosas así) seguro que te podemos echar una mano. Y en todo caso siempre puedes preguntar. Si llegas a hacer el PFC también me puedes preguntar a mí, que aún estoy en la facultad (como becario) y tengo alguna experiencia en estas cosas :D 14:21 29/05/2007
Qué bien otro FICero xD Tampoco me he matado demasiado (o no lo suficiente como para hacer todo lo que se me ha ocurrido) por el momento, pero sí tengo pensado ampliarlo algo más o incluso utilizarlo como base para el PFC (algo que me comentó Dafonte). Sobre lo de cambiar de herramientas... ya lo había pensado, pero ya llevaba demasiadas líneas escritas como para rehacerlo a tiempo de la entrega :/ Por CAAD me pasé hace unos meses en busca de inspiración, pero no encontré (o no supe buscar) nada que fuese al nivel tan bajo que necesitaba (gramáticas y esas cosas). De todas formas, muy posiblemente vuelva por ahí :] 11:40 29/05/2007
Compiladores. Qué mítico. Yo también estudié en FIC y pasé por ello en mis tiempos. Sobre la última pregunta, no te preocupes mucho, es bien sabido que en esa asignatura los profesores no miran las prácticas con mucho, ejem, interés, precisamente. Si alguna vez se te ocurre portar y mejorar el sistema, te aconsejo que cambies de herramientas. Por algún motivo que escapa a mi comprensión en la asignatura te recomiendan flex y bison, que tienen más o menos tantos años como el Zork (son clones de herramientas para AT&T Unix). Desde entonces estas cosas han mejorado bastante. Si quieres tenerlo todo en Java, puedes mirarte JavaCC, por ejemplo. Te llevará una hora aprender su manejo pero después harás las cosas como diez veces más rápido que con bison, al ser LL(k) y no tener que andar preocupándote por cosas como escribir la gramática de una u otra manera, shift-reduce conflicts, etc. Y si te interesan las aventuras de texto para algo más que hacer esta práctica, te aconsejo que te pases por los foros de http://caad.es - por allí estamos todos los que nos dedicamos a hacerlas y jugarlas (en español). 14:13 24/05/2007
Parece un buen proyecto. Ya contarás qué tal va. Yo no tengo Linux para probarlo :-( 14:49 19/05/2007
@SASUKE Gracias, te comento lo mismo que a Cardesin; la inclusión de gráficos es algo secundario en este momento por dos motivos: el primero es que el objetivo de la práctica está relacionado con los compiladores exclusivamente y por tanto cualquier virguería fuera de eso no sería valorada y sólo me haría perder el tiempo, falta de tiempo que tiene que ver con el segundo motivo: los exámenes se acercan :] De todas formas cuando esté más libre ya incluiré todo lo que pueda y se me vaya ocurriendo :) 22:17 18/05/2007
Genial tio. La forma de presentar el proyecto mediante preguntas es entretenida. Si lo hubieras hecho con una parrafada no hubiera leido ni dos lineas. XD Bueno, tal vez si, porque me interesa el tema. Ya nos avisaras cuando lo publiques. Por cierto, considero bastante importante la introducción de imágenes estáticas y melodias. 20:14 18/05/2007
@Cardesin De momento no soporta nada de gráficos, pero no descarto hacer una interfaz tonta que muestre una imagen estática al estilo de las aventuras de Dinamic o Aventuras AD. De todas formas es lo que menos me preocupa, antes tengo que pulir algún que otro aspecto más básico :] Y gracias :) 20:08 18/05/2007
Y tiene gráficos? Hay aventuras conversacionales que los tienen... Felicidades por el proyecto, a ver si hay suerte y aparece en windows pronto para el uso y disfrute de la mayoría. Participa con tu Comentario:
No puedes poner comentarios. Necesitas estar registrado en Vandal Online. Regístrate aquí o Haz Login. |
Blogs en Vandal · Contacto · Denunciar Contenido