Categoría: Software

Publicado: 16:58 15/01/2008 · Etiquetas: Lenguaje, SFL, FIC, FIC.tion, aventura, aventura conversacional · Categorías: Videojuegos : Software
Como decía al final de la entrada anterior, me faltaba por comentar cómo se escribiría un juego usando el lenguaje que he creado. Para ello me apoyaré en el ejemplo que está incluído en el paquete que enlacé en dicho post.

El fichero ha de empezar con una línea similar a ésta:

FICTION tarde;

el identificador (en general, cualquiera de los identificadores usados en el fichero) puede ser una secuencia alfanumérica cualquiera sin espacios. Este será el nombre que tendrá la clase Java que se generé al final del proceso de parsing y el que habrá que indicar al script de ejecución (run.sh).

A continuación vendrían las secciones iniciales:

TITLE "Llegas tarde!"
AUTHOR "Arxel"
VERSION "0.9";


que simplemente indican el título del juego, autor y versión. Esta información se muestra en el menu inicial del juego.

START IN ROOM Habitacion2
HAVING []
DISPLAY "Son las 8 de la manana y tienes clase de practicas de Compiladores dentro de media hora, asi que deberias de salir pitando...";


Con START IN ROOM se define cual será la habitación en la que se inicie el juego y HAVING configura el inventario inicial; en este caso no llevamos nada al principio lo cual se representa con la lista vacía []. DISPLAY aquí imprime por pantalla una especie de prólogo.

END IN ROOM Calle
DISPLAY "Felicidades, has conseguido salir de casa a tiempo y podras disfrutar de una magnifica clase de Compiladores por completo!";


END IN sirve para determinar cómo se da por finalizado el juego. Están soportadas tres maneras de acabar la aventura:

* Alcanzando cierta sala: se añade a END IN las palabras ROOM <idHabitacion>.
* Cogiendo cierto objeto: se añade ITEM <idItem>.
* Hablando con cierto NPC: se añade CHARACTER <idPersonaje>.

DISPLAY en este caso imprime un texto a modo de epílogo.

A continuación se definirían las habitaciones:

ROOM Hall
AT WEST Sala2
AT EAST Cocina
AT SOUTH Pasillo2
CONTAINS ITEM [Lampara; Puerta; Espejo; Paraguero; Telefonillo; Paraguas; Boton]
DISPLAY "El hall no es demasiado grande. Sus paredes estan pintadas de un amarillo suave y una pequena lampara ilumina de forma tenue el ambiente.";


La definición comienza por la palabra ROOM seguida de un identificador. Las salas vecinas se indican mediante AT y un punto cardinal (NORTH, SOUTH, etc.) y el identificador de dicha sala. Si no hay una sala en cierta dirección simplemente se omite. CONTAINS puede ir seguido de la palabra reservada ITEM o CHARACTER, según nos vayamos a referir a una lista de objetos o personajes presentes en la sala. Esa lista se representa mediante los identificadores correspondientes separados por ; y encerrados todos ellos entre []. Finalmente, DISPLAY muestra la descripción de la habitación al entrar en ella o al pedírselo explícitamente al juego mediante el comando OBSERVAR.

Para definir los objetos se sigue la siguiente estructura:

HIDDEN ITEM Galletas
DESCRIPTION "Unas galletas"
LOCKED REACTION MirarGalletas TO "Mirar" DO DISPLAY "Son unas pequenas galletas de chocolate rellenas de naranja."
LOCKED REACTION ComerGalletas TO "Comer" DO ADD AND DISPLAY "Ya no tienes tanta hambre." AND SCORE 1;


De forma similar a las habitaciones, comenzamos con la palabra ITEM seguida de un identificador. En este caso podemos ponerle el flag HIDDEN que indica que es un objeto inicialmente oculto. Esto es útil en el caso de no querer dar a conocer un objeto antes de interactuar con otro o de hacer cierta acción.
DESCRIPTION es una descripción del objeto usada conjuntamente con la descripción de la sala actual.
El verdadero meollo de la cuestión son las reacciones (quizá acciones sería un mejor nombre). Cada una de ellas se indica con la palabra REACTION que puede ir antecedida por el flag LOCKED, que impide que se realice hasta que por alguna otra parte del código se desbloquee. A continuación va un identificador seguido por la palabra TO y el verbo que dispara esa acción. La palabra reservada DO señala el comienzo de todas las consecuencias de la acción, cada una de las cuales se enlaza con AND. Las consecuencias soportadas son:

* ADD: añade este objeto al inventario.
* DISPLAY <mensaje>: imprime <mensaje> por pantalla.
* SCORE <int>: suma <int> puntos al marcador.
* UNLOCK <id>: desbloquea la reacción <id> (puede ser de otro objeto).
* UNHID <id>: desoculta el objeto <id>.
* SETTRUE <id>: pone a TRUE el estado del objeto <id>.
* SETFALSE <id>: pone a FALSE el estado del objeto <id>.
* MOVE <id>: movimiento incondicional a la sala <id>.
* BREAK: finaliza el juego.
* NOP: no hace nada.

Todas estas consecuencias se pueden incluir dentro de la estructura condicional IFTRUE (o IFFALSE) STATE, de una forma similar a la siguiente:

REACTION HacerCama TO "Hacer" IFTRUE STATE DISPLAY "La cama ya esta hecha." ELSE DISPLAY "Muy bien, tus padres estaran orgullosos de ti." AND SETTRUE Cama AND SCORE 1;

Si el estado del objeto Cama es TRUE imprime el mensaje "La cama ya esta hecha.", en caso contrario imprime "Muy bien, tus padres estaran orgullosos de ti." y suma 1 a la puntuación actual.

La definición de los personajes es bastante limitada. Como siempre, comienza por la palabra reservada CHARACTER más un identificador. A continuación se definen las frases del NPC y tus posibles respuestas, formando un diálogo al estilo Lucas/Sierra/etc.

CHARACTER Vecino
PHRASE VecinoI ANSWER TO null DISPLAY "Hola holita vecinito!"
PHRASE Vecino1 ANSWER TO VecinoI DISPLAY "Pierdete!"
PHRASE Vecino2 ANSWER TO VecinoI DISPLAY "Que tal hombre...?"
PHRASE Vecino3 ANSWER TO Vecino1 DISPLAY "Vale vale, no te pongas asi...!"
PHRASE Vecino4 ANSWER TO Vecino2 DISPLAY "Aqui andamos, vengo de comprar el pan."


Cada frase comienza con PHRASE y un identificador, seguido de ANSWER TO más el identificador de la frase a la que replica, null si es la inicial (pensar en una estructura en árbol). Como siempre DISPLAY escribe en pantalla.

Mejor con un dibujito aproximado que acabo de encontrar (el árbol no tiene por que ser binario)



La raiz es siempre una frase inicial del NPC. El siguiente nivel son tus posibles respuestas a esa frase, el siguiente nivel estará formado por 'hijos únicos' (no dos como en el dibujo de ejemplo) que son cada una de las respuestas a tu elección anterior, y así sucesivamente.

Creo que esto es todo, como se puede comprobar es un lenguaje bastante sencillo, con no demasiadas posibilidades pero medianamente comprensible por una persona poco ducha en programación a la que le guste experimentar/perder el tiempo con estas cosas :]

Publicado: 21:14 13/01/2008 · Etiquetas: FIC, FIC.tion, aventura, aventura conversacional, disponible, lanzado, released · Categorías: Videojuegos : Software


Ha pasado casi un año desde que en este mismo blog hablé de FIC.tion, el pequeño y simple creador de aventuras conversacionales que había hecho como práctica de una asignatura. Ahora, y después de mucho tiempo en el olvido, le he hecho los retoques necesarios para ponerlo a disposición de todo el mundo. Como decía en su momento, no liberaré su código fuente (al menos por ahora) porque sigue en desarrollo, no es una proeza informática y (unido al primer motivo) es posible que lo use como base para mi Proyecto de Fin de Carrera. A pesar de ello, no tendré ningún problema en responder preguntas técnicas, aunque de algunos detalles de implementación ya ni me acuerdo xD

Los requisitos para hacerlo funcionar son:

* Un PC con Linux. Sí, sigue sin haber versión Windows, lo siento
* Un compilador y máquina virtual de Java, con la 1.6.0 de Sun sé que funciona.
* Este paquete.

Una vez bajado el paquete no hay más que descomprimirlo en alguna parte haciendo algo del estilo tar -xvf Fiction_distributable.tar.gz. El fichero README incluído creo que esta bastante auto-explicativo, por si por si acaso...

* ./compile.sh tarde.sfl compila el juego de ejemplo incluído. El .java que genera va a parar a java/
y es un fichero de código fuente normal y corriente que puede ser modificado y leído por un
humano.

* ./run.sh Tarde ejecuta el juego anteriormente compilado.

Cuando tenga un poco más de tiempo explicaré un poco cómo funciona el lenguaje que creé, De esta forma, alguien con curiosidad y algo de tiempo libre podrá disfrutar jugando a su propia aventura :]

Publicado: 10:59 21/11/2007 · Etiquetas: AWN, dock, Linux, Compiz, Ubuntu, Gutsy · Categorías: Informática : Software


Ahora que Ubuntu, en su versión 7.10 (Gutsy), viene con Compiz Fusion por defecto, no estaría mal completar la 'experiencia' de usuario con una barra dock con estilo.

Que a todo esto, quizá hay quien no conozca Compiz Fusion; con el siguiente video se hará una ligera idea de su potencia:





El tutorial es una simple traducción del que se puede encontrar en los foros de Ubuntu, pero como mucha gente no conoce esta aplicación, la doy a conocer aquí :]

NOTA: El procedimiento está probado para Gutsy de 32 y 64 bits, no sé si con otras distribuciones o versiones de Ubuntu irá con tanta facilidad.

Instalación

Primero, añadid el repositorio de AWN:

echo 'deb http://download.tuxfamily.org/syzygy42 gutsy avant-window-navigator
deb-src http://download.tuxfamily.org/syzygy42 gutsy avant-window-navigator' | sudo tee -a /etc/apt/sources.list

Ahora añadid la clave apt:

wget http://download.tuxfamily.org/syzygy42/reacocard.asc
sudo apt-key add reacocard.asc
rm reacocard.asc

Y ahora instaladlo:

sudo apt-get update
sudo apt-get install avant-window-navigator-bzr awn-core-applets-bzr


Y ya está, muy sencillo como podéis comprobar =)

FAQ

¿Cómo ejecuto AWN?

En un terminal, avant-window-navigator &

¿Cómo hago para que AWN arranque al inicio?

En Ubuntu, vas a Sistema > Preferencias > Sesiones. Ahora añade una entrada para el comando 'avant-window-navigator'

¿Como añado un lanzador al dock?

Hay dos formas: la primera es simplemente arrastrar un lanzador ya creado a la barra; la segunda, consiste en ir al gestor del AWN (click derecho sobre el dock) e ir al apartado Launchers.

He añadido un lanzador y le he puesto un icono pero no se ve, ¿qué pasa?

Parece ser un bug de AWN. La solución cutre es crear un lanzador en el escritorio, ponerle un icono y arrastrarlo al dock.


Publicado: 19:17 11/11/2007 · Etiquetas: Menuet, SO, Ensamblador · Categorías: Informática : Software
MenuetOS es un sistema operativo para PC escrito totalmente en ensamblador de 32 y 64 bits. Soporta aplicaciones escritas en ese mismo lenguaje, de forma que son pequeñas, rápidas y consumen pocos recursos.

Menuet no está basado en UNIX ni en ningún otro sistema operativo. Se ha diseñado con el fin de eliminar ciertas capas del SO que son propensas a errores y complican la programación.

Algunas de sus características son:

- Multitarea apropiativa, ejecución multihilo, protección de tres niveles.
- Interfaz gráfica que soporta hasta 1280x1024x16M.
- IDE de macroensamblador para programar aplicaciones.
- Pila TCP/IP con interfaz de loopback y drivers Ethernet.
- Clientes y servidores FTP/HTTP.
- Ventanas de aplicación de formas libres, drag & drop.
- Captura de datos desde el disco en tiempo real.
- Ocupa un solo diskette.

Algunas imágenes de esta proeza de la programación:




MenuetOS es gratuíto y puede ser descargado desde aquí en formato imagen de diskette. Además, por 15 euros te mandan a casa un CD con el sistema operativo más algunos extras como las versiones shareware de Doom (!), Quake (!!) o emuladores como Dosbox y ScummVM.

Publicado: 19:57 03/09/2007 · Etiquetas: scaling, siggraph, reescalado, redimensionado, adobe · Categorías: Informática : Software
En este pasado Siggraph se ha presentado una novedosa técnica para redimensionar imágenes denominada 'Seam Carving for Content-Aware Image Resizing', algo así como 'Redimensionado de Imágenes Basado en Contenido mediante Zurzido' (es posible que lo de zurzido sea una parida pero no se me ocurre mejor forma de traducir eso xD).

El algoritmo, desarrollado por Shai Avidan y Ariel Shamir del Efi Arazi School of Computer Science, permite reescalar imágenes de forma parecida a como un navegador recoloca el texto de una web cuando se redimensiona su ventana o se muestra en un dispositivo con una pantalla de distinto tamaño. La técnica se basa en encontrar las zonas menos importantes de la imagen y prescindir de ellas sin perder información relevante.

Es algo difícil de explicar con palabras, mejor verlo en un vídeo:





Obviamente, uno de sus creadores ahora trabaja en Adobe xD


Publicado: 15:07 30/08/2007 · Etiquetas: java, swt, interfaz, IU, orgaNice! · Categorías: Informática : Software
De nuevo algo nombrado mediante un estúpido juego de palabras! xD (organize+nice). Esta vez no haré un FAQ como en el caso de FIC.tion porque me da pereza xD Así que me limitaré a comentar un poco de qué va y enseñar unas capturas...

orgaNice! es el resultado de una de las prácticas de la asignatura de Interfaces con el Usuario (IU), consistente en diseñar e implementar el interfaz de una agenda en Java+SWT o Python+pyGTK (en mi caso, Java+SWT). Como el profesor no especificó, de forma deliberada, qué se entiende por una agenda, teníamos bastante libertad para incluir lo que quisiésemos. Yo he optado por, aparte de las típicas funcionalidades de gestión de tareas y contactos, implementar un lector de noticias (estilo RSS), un cliente de correo y un sistema de consulta meteorológica.
Ya que la asignatura trata de interfaces, no era necesario que ninguna de las funcionalidades realmente hiciese algo (por ejemplo, la consulta del tiempo podría simplemente cargar una imagen con las temperaturas y siempre la misma, independientemente de la ciudad), bastaba con que la interfaz diese la opción de hacer ese algo. De todas formas, mi práctica contiene alguna funcionalidad que de verdad es útil.



Éste es el aspecto general de orgaNice!: una zona principal a la izquierda, un calendario y una lista rápida. Cada funcionalidad es accedida mediante las pestañas superiores, mientras que el calendario nos lleva a la agenda, al dia seleccionado. La lista rápida nos muestra los eventos que tenemos programados en los próximos 7 días.
Cada evento del día consta de una hora de comienzo y una descripción breve, que puede expandirse mediante el icono [+]


En la sección de contactos tenemos una lista que muestra la información sobre la que se suele buscar típicamente. Las columnas se pueden reordenar de cualquier forma y ordenar las filas en orden ascendente o descendente por cualquier campo.
Cuando se selecciona un contacto aparece más información en la parte inferior. Además, se puede buscar por cualquier campo de los de la tabla.



Las secciones de noticias e e-mail son muy similares: a la izquierda se elige el canal/cuenta de correo deseado y se muestran a la derecha las noticias/correos correspondientes. Al seleccionar una noticia/e-mail, se muestra en la parte inferior. El lector de RSS no funciona completamente, simplemente guardo una serie de titulares y URLs para mostrar (pero la web mostrada sí es la real y se accede de verdad a ella). Igualmente, el gestor de correos es de pega y en este caso los e-mails son simples cadenas de texto.


La sección de predicción meteorológica permite elegir unas cuantas ciudades del mundo y consultar la previsión para el día de hoy. La predicción es real, gentileza de Yahoo Weather.

También tiene un soporte inacabado para añadir/eliminar/editar eventos/contactos/canales RSS/cuentas de correo/fuentes de predicción, pero por el momento toda la información se extrae de ficheros auxiliares, siendo la agenda prácticamente de 'sólo lectura'.

Como siempre, críticas, comentarios, preguntas son bienvenidas :]

Publicado: 00:11 28/05/2007 · Etiquetas: windows, vista · Categorías: Informática : Software
Yo soy de los que recomiendo no instalar un sistema operativo Windows hasta que no ha salido su primer Service Pack; sin embargo, en esta ocasión no he predicado con el ejemplo y me instalé Windows Vista un par de meses después de su salida oficial. No era algo que tuviese planeado, pero ya que tenía que formatear (la instalación de XP murió espontáneamente) pues me decidí a probarlo. Como se hace en las reviews profesionales, decir que el equipo de prueba fue el siguiente:

* AMD Athlon 64 3000+ (1800 Mhz)
* 2x512MB DDR400 GEIL (2-3-3)
* ASUS A8N-SLI Deluxe (NForce4)
* Maxtor SATAII 300GB
* Maxtor IDE 160GB
* MSI Nvidia 6600 GT 128MB PCIe

que no es un superpepino, pero tampoco es una antigualla. Según Microsoft, un equipo Vista Capable debe de reunir las siguientes características:

* Un procesador moderno (al menos 800 MHz).
* 512 MB de memoria del sistema.
* Un procesador de gráficos apto para DirectX 9.

que claramente mi PC supera. Además define los requisitos Premium Ready como:

* Un procesador de 32 bits (x86) o de 64 bits (x64) a 1 GHz.
* 1 GB de memoria del sistema.
* Compatibilidad con gráficos DirectX 9 con un controlador WDDM, 128 MB de memoria gráfica (mínimo), Pixel Shader 2.0 y 32 bits por píxel.
* Una unidad de disco duro de 40 GB con 15 GB de espacio libre.
* Unidad de DVD-ROM.
* Capacidad de salida de audio.
* Capacidad de acceso a Internet.

que en todo momento igualo o supero. Así que en teoría debería de poder correr Vista con ciertas garantías (aunque sin holgura debido a la RAM). Nada más lejos de la realidad como comentaré más adelante.

La versión que he probado es la Ultimate de 64 bits, cuya instalación no empezó sin problemas ya que por algún extraño motivo no me detectaba el disco SATA. No le encontraba sentido puesto que nunca había tenido problemas en ese aspecto durante la instalación de un nuevo SO... hasta que se me ocurrió desenchufar el disco IDE, momento en el cual apareció mágicamente el SATA. Vale.

Una vez instalado tuve la gran idea de pasarle esta especie de benchmark para evaluar el equipo y tras unos minutos me devolvió el resultado:

3.7

Ni apruebo... ¿Pero no tenía un PC Premium Ready según los requisitos? Parece que no, y eso lo comprobaría más tarde...

Pero empezaré enumerando las cosas buenas:

* Arranque y apagado: afortunadamente es más rápido que XP (aunque también es cierto que no lo tengo tan lleno de mierda) pero algo más lento que Ubuntu por ejemplo (sobre todo en el apagado). De todas formas bastante bien.

* Soporte hardware: detecta automáticamente toneladas de hardware, incluso periféricos más exóticos como webcams o adaptadores bluetooth por USB con drivers bastante buenos. Las únicas cosas que no me instaló automáticamente fueron la tarjeta de televisión y el teclado (un Logitech G15 que usa unas aplicaciones propias).

* Interfaz: tiene algunas cosas nuevas interesantes como el nuevo menú Inicio (que ya no despliega un menú de 4 columnas cuando tienes muchos programas instalados, sino que te los mete en una caja con scroll) y la navegación llamémosle 'adelante-atrás-arriba' por carpetas.

* Extras: por ejemplo, la versión Ultimate trae soporte para tabletas digitalizadoras de serie y una aplicación que integra la escritura manual en algunos programas (Messenger, el gadget de post-its, etc.)

Probablemente habrá alguna cosa que se me olvide, pero básicamente son esas. Antes de llegar a los puntos negativos, hablaré de aquéllo que no es bueno, pero que tampoco es malo, sean las cosas psé:

* Aspecto visual: meh, no me dice nada, es un XP ligeramente vitaminado, con algún efectillo más con la interfaz Aero Glass, algunos cambios en los esquemas de color, nuevos iconos y poco más; nada que no exista en Aqua en términos de preciosismo o que no haga Beryl en cuanto a virguerías. Se ha anunciado como gran nueva característica de Vista el Flip 3D (lo de cambiar de aplicación viendo las ventanas unas delante de otras), funcionalidad que no pasa de mera curiosidad (¿quién va a querer hacer eso si puedes hacer el Alt+Tab de toda la vida que es más funcional, no consume tantos recursos y se puede usar sin Aero Glass?).

* Gadgets: llamados astutamente así para que parezcan una idea original (los de otras aplicaciones en general y MacOS X en particular se llaman widgets), no están mal pero tampoco me parece algo impresionante; será que he probado ya muchos programas de terceros para hacer esas cosas...

Y por fin, vayamos ahora con las (mwahaha) cosas malas:

* Consumo absurdo de RAM: es inconcebible que sin hacer un uso intensivo del PC (Firefox con cuatro pestañas, un P2P y el Messenger) y con un equipo que no es del Pleistoceno tenga el 73% de la memoría física en uso. Parece que Vista sigue la senda de XP de 'por mucha RAM que le pongas, Windows se la queda toda' pero a lo grande. A la gente que tenga un recién estrenado Core 2 Duo con 2 GB de RAM esto se la soplará, pero al resto de los mortales no. Un parche a este problema es aumentar el tamaño del archivo de paginación... si pudiese, porque en cuanto guardo los cambios me sale un pantallazo azul. LOL.

* Aplicaciones incompatibles: se le puede achacar a estar en los primeros meses de su existencia, no digo que no, pero es algo que toca bastante las narices: a Firefox se le da por cerrarse sin motivo; WinAMP empieza a chupar RAM hasta llegar a los 600 MB, colapsar el sistema y morir a lo kamikaze; Ableton Live no es compatible con Aero Glass y hace que cambie automáticamente al Aero normal...

* Paranoia por la seguridad: supongo que en Microsoft habrán comprobado que la mayoría de catástrofes relacionadas con virus, gusanos, etc. están relacionadas con que el usuario mete los dedarros donde no debe. Y probablemente sea verdad. Así que, ¿para que mejorar la seguridad de las aplicaciones o minimizar las vulnerabilidades si en su lugar avisamos al usuario cada vez que ha-ce-cual-quier-co-sa? Donde cualquier cosa puede ser: abrir un archivo que te acabas de descargar, instalar un programa, abrir una conexión a través del firewall, mover un archivo a ciertas localizaciones peligrosas, enviar un ejecutable por Messenger (que vale, al menos ahora te deja pero antes te obliga a que le digas con que antivirus quieres que te escanee), hasta instalar un driver que le ha mirado mal, yo que sé, déjame en paz. Hazme meter una contraseña para verificar si soy el administrador y no me des la chapa durante un rato (como el sudo de Ubuntu) y en caso contrario no me dejes juguetear con los archivitos, pero no me rayes.

En resumen: probablemente Vista no sea ni la sombra de lo que iba a ser Longhorn y debido a las prisas no hay un gran salto respecto a XP. Mi recomendación es que si usas XP, te quedes en él (además está anunciado el tercer Service Pack que debería hacerlo funcionar algo mejor); si de todas formas piensas en pasar de XP a Vista, ten en cuenta que requiere un hardware potente y que de momento presenta algunas incompatibilidades y otras cosas feas; y si te vas a comprar un PC nuevo... ya que probablemente sea una máquina decente y no compense ponerse XP por el ahorro de precio en la licencia, quédate con él.

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…

Publicado: 15:04 02/03/2007 · Etiquetas: Ensamblador, codigo, cuadro · Categorías: Software : Arte


Esto que veis (click en la imagen para agrandar) es el contenido del cartucho de Pac-Man para Atari 2600. Las columnas grises son líneas de código escrito en ensamblador, mientras que las zonas naranjas corresponden a datos, donde cada fila es un byte (un 1 se pinta como un cuadrado naranja y un 0 como una zona sin colorear). Los arcos entre diferentes líneas de código indican el camino que se toma al evaluar la condición incluída en una instrucción de salto.

Aquí hay algún ejemplo más y en este otro sitio incluso podéis comprar una lámina con marco incluído para colgarla en vuestra habitación :]

Binary Finary

Arxel
Blog de Arxel
Art meets Technology

Posts destacados por el autor:
· Mi Top 10 de Trance/Techno/etc. (Revisitado gracias a Youtube)
· Cabecera mejorada (v3) y arxel.flow (v3, también)
· orgaNice!: Agenda en Java+SWT
· Ingeniería Informática alternativa (II)
· Ingeniería Informática alternativa (I)
· FIC.tion : Creador de Aventuras conversacionales
· Mi humilde Colección de GameCube
· Lo que NO es un Informático
· Momentos frustrantes de los Videojuegos (III)
· Momentos frustrantes de los Videojuegos (II)
· Momentos frustrantes de los Videojuegos (I)



Vídeos:
· Videos Musicales



Blogs amigos:
Albert Wesker
Clone
DJ-MAT
Forero's Mask
Jordav
maxter2001
Mowei
Suppaiku
The Last Blade
xispax_


Categorías:
Arte
Blog
Frikadas
Hardware
Humor
Informática
Música
Software
Videojuegos


Archivo:
Agosto 2011
Abril 2010
Febrero 2010
Enero 2010
Diciembre 2009
Noviembre 2009
Octubre 2009
Agosto 2009
Julio 2009
Junio 2009
Mayo 2009
Marzo 2009
Febrero 2009
Enero 2009
Noviembre 2008
Octubre 2008
Septiembre 2008
Agosto 2008
Julio 2008
Junio 2008
Mayo 2008
Abril 2008
Marzo 2008
Febrero 2008
Enero 2008
Diciembre 2007
Noviembre 2007
Octubre 2007
Septiembre 2007
Agosto 2007
Julio 2007
Junio 2007
Mayo 2007
Abril 2007
Marzo 2007
Febrero 2007
Enero 2007
Diciembre 2006
Octubre 2006
Septiembre 2006
Agosto 2006
Mayo 2006


Vandal Online:
Portada
Blogs
Foro

Blogs en Vandal · Contacto · Denunciar Contenido