30.12.16

Despidiendo el 2016

Este año 2016 iba a ser el año de Layna, pero no lo ha sido. Quería haber hecho: una renovación de Hierba, una hiperficción con ella y su equipo, un libro de relatos y la continuación de Hierba. De todo eso sólo he completado la renovación de Hierba, que ha consistido en recompilarla con I7, añadirle hiperenlaces para facilitar el juego y ponerle una pequeña ilustración cortesía de Depresiv.

En cuanto a la hiperficción, me sirvió para hacer mano con Squiffy -herramienta sobre la que sospecho que pronto habrá jugosas e interesantes noticias- y está bastante avanzada, pero no está completada y no acaba de convencerme el resultado, así que si me queda hueco este año intentaré revisarla a ver si puedo sacar algo de interés. De forma que en realidad de ese 'compromiso' del año pasado sobre todo ha servido para coger experiencia y finalmente crear mis SillyBerrys de este año.

Me gusta mucho que haya empezado esto de los SillyBerrys, no son más que obras pequeñas, rollo 'jam', o en nuestro lenguaje habitual no dejan de ser más que 'RapidoComp' sólo que lo estamos haciendo en rollo 'amigotes' y una vez al mes. Los resultado no son 'redondos' -aunque algunos de mis compañeros sillyberros han hecho cosas realmente chulas, los condenados- pero son 'diferentes', lo que resulta bastante refrescante. Ya hemos empezado a incluir algún autor (autora en realidad) de fuera de aquel primer día de cerveza negra y risas, y entiendo que poco a poco vamos a ir extendiendo la experiencia a otras personas -de hecho me han contado que ya han aparecido jams con casi el mismo formato en algunos cursos de programación de juegos, lo que me ha alegrado este triste final de año.

En cuanto al libro de cuentos, existe, pero aún es demasiado corto como para considerar su subida a Amazon o a cualquier otra plataforma de publicación, así que lo dejaremos para más adelante cuando tenga la inspiración necesaria para crear unos cuántos cuentos oscuros y espaciales más.

Finalmente, he de reconocer que de la continuación de Hierba prácticamente no hay nada de nada. Simplemente no he tenido tiempo.

¿Qué he hecho entonces? Pues, como he dicho, la renovación de Hierba, el tutorial no del todo acabado de Huesos, la convocatoria de Más allá de la Comp, mis SillyBerrys así como la renovación de material de mi campaña de rol Akaram -que ahora están 'sufriendo' mis compañeros sillyberros de tanto en tanto.

Teniendo en cuenta que lo que más me ha convencido este año han sido mis hiperficciones lo lógico sería continuar por ese camino, pero no soy una persona lógica así que este año 2017 quiero hacer un par de aventuras conversacionales de corte más clásico con la misma protagonista, la de esta 'novela' de mi campaña Akaram -sin revisar.

Así que este año intentaré que sea 'el año del fuego'.

7.12.16

Participantes en 'Más allá de la Comp'

Ya están disponibles las obras participantes en 'Más allá de la Comp', la competición temática de relatos interactivos que hemos organizado este año en la comunidad hispana. Podéis jugar online la mayor parte de ellos -y si no podéis descargarlos- aquí

Justo debajo tenéis ya las tablas preparadas para poder votar cada una de las obras presentadas de 0 a 10. ¡Os animo a hacerlo!

Este año todo empezó en este hilo del foro y en esta encuesta, en donde por mayoría de votos se escogió que la temática estuviese relacionada con la amable chica que nos acompaña justo a la izquierda. En esta ocasión decidí poner dinero en metálico como premio y así hay un total de 900 euros de premio entre todos los posibles ganadores. Inicialmente iba a haber tres categorías: aventura conversacional -obra manejada por comandos-, libro-juego -obra manejada por elecciones- e hiperficción -sin acciones ni elecciones-, pero durante la época de registro sólo se presentaron obras para los primeros tipos por lo que ahora habrá sólo premio en estas dos categorías y a cambio habrá un segundo premio para cada una de ellas.

Se hizo bastante propaganda no sólo por parte de este blog y el caad, sino también por el portal amigo de librojuegos, las redes sociales e incluso estuve recorriendo tumba a tumba los potenciales creadores largamente echados de menos de la comunidad. He de dar especial gracias a Rubén que se ha esforzado en hacer varios artículos de presentación y recordatorio. Y la verdad es que la respuesta inicial fue bastante potente, casi treinta registrados -como en los primeros tiempos de los primeros concursos de aventuras nacionales- incluyendo autores nuevos, viejos zombies rescatados de la tumba e incluso algunos autores y estudios indies.

A lo largo de los meses de desarrollo hemos tenido muchas bajas, por toda clase de motivos desde falta de tiempo -el más común de los problemas- a algunos temas de la vida real que se ha cruzado en el camino del autor. Al final desde los más de veinte registrado nos hemos quedado con cinco aventuras conversacionales y cuatro libro juegos.

Son buenas noticias en cualquier caso, ¡nueve nuevas obras que disfrutar!

19.10.16

Tutorial de creación de ficción interactiva - Huesos (9)

Bien, ya tenemos tinajas y tapas, pero, ¡resulta que no les hemos incluido descripción a ninguna de las dos cosas! Un poco paradójico cuando justamente estamos intentando incluir todo el texto y decoración que la obra necesita.

Añadir descripción es bastante sencillo. Como en los casos anteriores incluimos un 'The description of...', sólo que ahora hay que usar la palabra 'usually' para indicar que estamos definiendo la descripción para toda una 'clase' de cosas y no sólo para una cosa. Es decir, podríamos incluir algo como:

The description of a tapa is usually "Envejecida, pero aún se reconoce la madera de los árboles locales, los mismos que os proveen de madera para cuencos o para cocinar.".

The description of a tinaja is usually "Arcilla amarilla con algunos toques de rojo muy pálido cocida en el horno comunitario. Tierra y agua de vuestro río, y fuego alimentado con la madera de vuestros bosques. Hasta ahora, muy pronto la palabra 'vuestro' ya no será la adecuda.".

Ya tenemos descripciones, pero es un poco raro que cualquiera de las seis tinajas y seis tapas tenga exactamente a misma descripción, ¿no? Sería interesante poder poner un menaje que variase de una a otra de forma aleatoria. Inform 7 tiene todo un conjunto de opciones para hacer el texto variable y en concreto hacerlo aleatorios. La opción más sencilla es la construcción:

[one of]...[or]...[at random]

Que permite ofrecer un texto variable que cambie con cada acción de examinar asegurándose que no se repita lo elegido mientras existan alternativas. Por ejemplo lo podríamos dejar como:

The description of a tapa is usually "[one of]Envejecida, pero aún se reconoce la madera de los árboles locales, los mismos que os proveen de madera para cuencos o para cocinar.[or]De madera vieja. Algo carcomida por el tiempo, pero aún reconocible como de los árboles locales.[or]Madera envejecida por el tiempo aunque aún resistente, capaz de proteger los restos de los anteasados.[at random]".

The description of a tinaja is usually "[one of]Arcilla amarilla con algunos toques de rojo muy pálido cocida en el horno comunitario.[or]Barro cocido a fuego lento para ser duradero.[or]Amasado por manos expertas y cocido en el horno comunitario.[at random] Tierra y agua de vuestro río, y fuego alimentado con la madera de vuestros bosques. Hasta ahora, muy pronto la palabra 'vuestro' ya no será la adecuda.".

Se puede ver que esta variabilidad del texto se puede aplicar tanto a toda la descripción o un fragmento del mismo. Pero claro, esto no da realmente una descripción diferente para cada tinaja ni cada tapa, tampoco es que lo necesitáramos, realmente, pero más adelante veremos algunas opciones de mejora posibles. En cualquier caso, para darle más color es de interés añadir al menos dos o tres opciones de descripción a casi todas las descripciones principales, pero no es algo imprescindible. Continuemos con la lista de cosas que deberían estar en la obra según dijimos en el post anterior.  Necesitamos el túmulo en su mismo, uno que transmita la sensación de ser otro mundo, uno oscuro y tenebroso cercano al mundo espiritual en el que vivirían los muertos, o al menos portal del mismo.

Para empezar retoquemos un poco el túmulo en sí, aunque sea de una manera un tanto obvia, por ejemplo con:

Tumulo is a dark room. The printed name of tumulo is "Cámara de enterramiento".
The description of tumulo is "Piedras enormes te rodean levantadas por tus antepasados para proteger a los restos de sus muertos. Separan este sagrado espacio dedicado a los fallecidos del mundo de los vivos. Ninguna luz perturba este lugar si no la traes contigo. Ningún sonido llega desde el exterior. Entrar en este lugar es como entrar en otro mundo. Montones de tinajas, algunas en hileras, la mayor parte desordenadas, contienen esos restos a tu alrededor.".

Ahora revisemos de éste lugar qué cosas mencionadas nos faltan. Ya incluimos las piedras pero las podernos hacer más pesadas, más amenazadoras, por ejemplo con:

Some piedras (f) are scenery in the tumulo. 
The description of piedras is "Amarillentas como las colinas cercanas a la aldea. Enormes como caballos, pero las historias dicen que fueron traídas de tierras sagradas lejanas, allá en el lejano sur de nuestros orígenes, por antepasados que aún no sabían como hacer que ningún animal trabajase para ellos. Cierran todo el lugar transformándolo en una cueva sólo para los difuntos y sobre ellas una capa de tierra lo cubre todo.".

Además solo tenemos definido 'piedras', no una de ellas de forma individual. Podríamos limitarnos a incluir un sinónimo de piedras con la palabra 'piedra', esto se haría en Inform 7 con la frase 'Understand', así:

Understand "piedra" as piedras.

En este caso queda bastante bien y lo podemos dejar así, pero hay veces en los que habría que distinguir por el contexto y las respuestas entre el 'conjunto' y el 'individuo' aunque sea genérico. Eso es lo que le pasa a las tinajas. De hecho el texto que hemos incluido en la descripción del túmulo referente a ellas no debería estar en él, sino el un objeto del 'conjunto de tinajas', esto sería de esta forma:

Some conjunto tinajas (f) is a thing in Tumulo.   The conjunto tinajas is fixed in place.
The printed name of conjunto tinajas is "tinajas". "Montones de tinajas, algunas en hileras, la mayor parte desordenadas, contienen esos restos a tu alrededor."

Hemos creado un objeto genérico no movible que tiene un texto que se muestra separado pero como parte de la descripción del lugar. Pero ahora vemos las tinajas como dos veces, una en la descripción y otra en el lugar. Lo podemos solucionar quitando a las tinajas del túmulo, o sea:

There are six tapas.
There are six tinajas.

¡Pero entonces ya no podemos hacer nada con las tinajas, ni examinarlas siquiera! Por que no están allí simplemente. Diablos. ¿Cómo referirnos a las tinajas como conjunto y a la vez conseguir que haya muchas individuales? En realidad no puede ser más sencillo, las tinajas son parte de conjunto de tinajas, ¿no? Pues lo indicamos con:

All the tinajas are part of conjunto tinajas.

Inform 7 permite trabajar así, declarando cosas que afectan a todos los objetos de una misma clase o que comportan una propiedad. Y lo puedes hacer en tiempo de ejecución de la obra o como en este caso en la parte de descripción del mundo.

Se nos ha hecho un poco largo el post. El estado actual de esta obra lo podéis descargar de aquí,

Mañana seguimos creando nuestro pequeño mundo de los difuntos.



12.10.16

Tutorial de creación de ficción interactiva - Huesos (8)

En el anterior post organizamos el código y empezamos a incluir decoraciones. En el caso de los relatos interactivos orientados a comandos el texto no vive por sí mismo sino que va 'clavado' o 'pintado' aquí o allá asociado a acciones pero muy frecuentemente a los objetos y lugares del modelo del mundo. Muy frecuentemente es más importante en una de estas obras que 'parezca' a que lo 'sea' en realidad. Es decir, frecuentemente lo que acaba siendo la obra se parece más al escenario o decorado que se ve en la foto de la izquierda que a una casa de verdad. En este sentido tratamos al interlector un poco como un abducido por extraterrestres y preso en un simulacro. No se trata de simular todos y cada uno de los aspectos de una casa si incluimos una en el relato, sino que se trata de que no se 'note' que no es una casa sino algo hecho de cartón-piedra. El equilibrio es delicado, porque aunque lo más probable es que no sea necesario incluir en el modelo del mundo las tuberías que recorrerían una casa de verdad, ¿qué pasa si le das al interlector un pico? Nada le impide que las busque picando en una de las paredes y entonces descubrirán que son de cartón-piedra y escaparán de tu obra. Mejor no les des un pico, pero si se los das ten preparada una buena excusa para que no rompan tu decorado.

Como siempre nos tenemos que guiar por la narrativa; es decir, tendremos que incluir todo lo que la historia:

  1. Necesita para completarse
  2. Necesita para tener sentido
  3. Necesita para ser coherente
  4. Sugiere que está
Muchos autores sólo incluyen el primer punto. Eso es muy insuficiente. Muchos autores ni siquiera saben distinguir entre el segundo punto y el tercero. Y raras son las obras que no se han saltado el último punto. Si el interlector está preso en una prisión, tendrás que incluir las paredes, el techo, el suelo y las rejas que conforman su prisión. Todo eso sólo es el nivel punto. Para que la historia tenga sentido tendrás que incluir los elementos que hagan al calabozo triste y desesperante. La suciedad, la humedad, las marcas de anteriores prisioneros. Para que sea coherente asegúrate de saber de dónde viene la luz, cómo llegan los prisioneros allí, cómo los vigilan los carceleros. Y finalmente... si dices que la luz proviene de un ventanuco, éste debe estar, pero también las estrellas que se ven a su través y los ruidos del mundo exterior que entran por él.

Dejaremos de lado aún a las tinajas que trataremos mucho más adelante. ¿Qué nos exige en cada punto la historia que tenemos entre manos?

El primer punto es evidente que sólo requiere las tinajas para completar la historia... bueno, las tinajas y todo su contenido, lo que será el cometido de un post posterior. Nada más, ni siquiera el túmulo. Pero el segundo punto necesita un lugar oscuro, una tumba, el túmulo en sí mismo. Con sus piedras viejas y enormes, con un suelo básicamente de tierra en la que las tinajas se hayan asentado casi hasta quedar unidas unas a otras, probablemente telarañas, polvo removido por la visita de nuestro protagonista. Pero todo eso no es suficiente para que el escenario sea coherente, al menos tiene que haber alguna clase de pasillo que nos haya traído hasta es lugar y por el que nos podamos marchar. Necesitamos una fuente de luz, una pequeña, por lo que también tendremos de hacer zonas de luz y de oscuridad, cosas que se vean desde el principio y tal vez zonas a las que haya que iluminar.

Uff... son montones de cosas y además ya se van perfilando una serie de acciones que habrá que implementar, como salirse del túmulo o la posibilidad de iluminar diversas secciones del túmulo. Hay dos maneras de encarar esto; la ordenada y eficaz o la entretenida y laboriosa. La ordenada consiste en que te pares ahora mismo y hagas una lista de todos los objetos que vas a necesitar y las acciones que estos objetos requieren... de hecho, en esta aproximación tradicionalmente se ha hecho un walkthrough, o en palabras castellanas, una secuencia de acciones que llevan al menos a uno de los finales de la obra, al final 'bueno'. Este componente, esta lista, era tan habitual que incluso hay colecciones de 'soluciones' y se siguen pidiendo en muchos casos para los concursos. A mí eso ya no me gusta. Si una obra necesita que exista y que se guarde su 'solución' es que es una colección de puzles indigerible que no está bien enhebrada, cuya complejidad no está equilibrada con el interés que despierta. Por eso ya no incluyo ese requisito en los concursos -como en Más allá de la Comp- ni me parece siquiera interesante leer 'soluciones' o que se publiquen.

Así que vamos a hacerlo de forma desordenada y creativa. Como hemos ya dicho un par de veces lo único que necesita el relato son las tinajas. No vamos a hacer el tratamiento correcto de las tinajas que deben de incluir toda la interacción, el contenido de las mismas y la interacción con el contenido. Pero hagamos un poco de estructura para ver cómo iría. Lo primero sería crear un conjunto de tinajas todas iguales. El relato requiere en realidad que el número sea 'enorme' y desconocido, pero empecemos con algo más controlable, por ejemplo siete tinajas. Inform 7 contiene un maravilloso sistema para hacer objetos iguales, que consiste en: primero crear una 'clase' de objetos y luego decir simplemente cuántos objetos de esa clase están presentes.

Section 3 - Tinajas

A tinaja is a kind of container.
The grammatical gender of a tinaja is usually feminine gender.

There are six tinajas in Tumulo.

Decimos que una tinaja es un contenedor, que es femenino y luego decimos que hay seis. Listo. Podéis descargaros el código de aquí, compiladlo y veréis que es bastante sencillo pedirle al parser que haga cosas por vosotros con tinajas. Pero le faltan cosas. Para empezar a nuestro personaje anciana no debería resultarle nada sencillo arrastrar estas tinajas de aquí para allá, y desde luego no debería poder cogerlas. Esto se resuelve añadiendo un 'fixed in place' a la definición de las tinajas. Además deberían estar cerradas y debería ser posible abrirla y cerrarla, esto se consigue añadiendo 'closed' y 'openable' a la tinaja. Quedando el código:

Section 3 - Tinajas

A tinaja is a kind of closed openable container. A tinaja is usually fixed in place.
The grammatical gender of a tinaja is usually feminine gender.

There are six tinajas in Tumulo.

Pero en realidad la tinaja debería tener una tapa, una buena tapa de madera sellada con betún. Añadir una tapa a un contenedor no es tan sencillo en Inform 7. Lo primero es crear otra clase de objeto que sea la tapa, decir que hay seis y explicar que cada tinaja tiene su correspondiente tapa. O sea:

Section 3 - Tinajas

A tapa is a kind of supporter. 
The grammatical gender of a tapa is usually feminine gender.

A tinaja is a kind of closed openable container. A tinaja is usually fixed in place.
The grammatical gender of a tinaja is usually feminine gender.

There are six tapas.
There are six tinajas in Tumulo.

Tenemos que asociar ahora las tapas a las tinajas. Inform 7 tiene la posibilidad de hacer objetos partes de otros objetos y de esta forma una tinaja cerrada tendrá una tapa asociada que podremos separar cuando la abramos. Una forma de asociar una tapa a una tinaja sería esta:

When play begins:
 repeat with jar running through tinajas:
  if there is a tapa (called selected) which is not part of anything:
   now selected is part of jar.

Como este capítulo se ha alargado demasiado mejor dejarlo aquí.

30.9.16

Tutorial de creación de ficción interactiva - Huesos (7)

Si algo tenía Squiffy era su simplicidad. Una única secuencia de texto en dónde sólo había secciones separadas por [] y [[]] cada una con su nombre y los enlaces entre ellas. Como ya empezamos a ver en la anterior entrega en Inform 7 la cosa va a ser algo más complicado y merece la pena que empecemos desde el principio a ordenar nuestro código. Por supuesto podríamos hacerlo con comentarios, ya que Inform 7 proporciona una herramienta muy sencilla para incluir comentarios que es rodear una parte del texto con corchetes.

Por ejemplo podríamos empezar con poner un comentario indicando las circunstancias de la creación de esta obra, con una especie de mínima ficha que explique al que se la encuentre en el futuro de qué va todo esto. Claro que Inform 7 ya proporciona un mecanismo para incluir información 'bibliográfica' de la obras, como podéis ver en este enlace. Si añadimos esta información y además ponemos un comentario de contexto de la obra nos quedaría una cabecera como la siguiente:

"Huesos" by Johan Paz (in spanish)

[==============================================================

 Huesos - ejemplo de historia interactiva creada en Inform 7
 
 Parte del tutorial de 'huesos':
  
  http://pacificaciones.blogspot.com.es/search/label/tutorialhuesos
  
 Creado en 2016 por Johan Paz con motivo de la competición:
  
  http://wiki.caad.es/M%C3%A1s_all%C3%A1_de_la_Comp
  
==============================================================]

The story title is "Huesos". 
The story author is "Johan Paz". 
The story headline is "Una historia de fantasmas en la edad del bronce". 
The story genre is "Horror". 
The release number is 1. 
The story description is "Sin casi apoyo de tu comunidad, tú, una pobre anciana 
vas a lograr que los huesos de tus antepasados no sean profanados." 
The story creation year is 2016. 

Estos cambios no modifican la obra absolutamente en nada, pero ayudarán a los que se encuentren la obra en el futuro y en su 'publicación' y propagación como explica la sección de la documentación que he enlazado anteriormente.

Otra herramienta que tiene Inform 7 para hacer más claro el código es la capacidad de hacer secciones mediante las palabras claves 'Part', 'Chapter', 'Section', numeradas y con un título. Estas secciones además sirven para navegar por nuestro código tanto en el IDE como cuando se publica la obra incluyendo el código.

Creemos una 'parte' para cosas técnicas -que de momento dejaremos vacía-, otra con el modelo del mundo. En la parte del modelo del mundo separaremos en capítulos la parte de mapeado y la parte de objetos. Finalmente crearemos una sección para cada lugar o cosa existente. El código nos quedaría de esta forma:

"Huesos" by Johan Paz (in spanish)

[==============================================================

 Huesos - ejemplo de historia interactiva creada en Inform 7
 
 Parte del tutorial de 'huesos':
  
  http://pacificaciones.blogspot.com.es/search/label/tutorialhuesos
  
 Creado en 2016 por Johan Paz con motivo de la competición:
  
  http://wiki.caad.es/M%C3%A1s_all%C3%A1_de_la_Comp
  
==============================================================]

Part 0 - Referencia bibliográfica

The story title is "Huesos". 
The story author is "Johan Paz". 
The story headline is "Una historia de fantasmas en la edad del bronce". 
The story genre is "Horror". 
The release number is 1. 
The story description is "Sin casi apoyo de tu comunidad, tú, una pobre anciana 
vas a lograr que los huesos de tus antepasados no sean profanados." 
The story creation year is 2016. 

Part 1 - Herramientas y apaños técnicos

Part 2 - Modelo del mundo

Chapter 1 - Mapeado

Section 1 - Túmulo

Tumulo is a dark room. The printed name of tumulo is "Interior del túmulo".
The description of tumulo is "Piedras enormes te rodean levantadas por tus 
antepasados para proteger a los restos de sus muertos. Montones de tinajas, 
algunas en hileras, la mayor parte desordenadas, contienen esos restos a tu alrededor.".

Chapter 2 - Objetos

Section 1 - Lámpara de aceite

A lampara (f) is a switched on device carried by the player. The lampara is lit.
The printed name of lampara is "lámpara".
The description of lampara is "Arcilla roja con pequeñas decoraciones en 
arcilla blanca que representan los signos sagrados de los dioses. Una lámpara 
muy adecuada para esta misión sagrada.".

Instead of switching on the lampara:
 say "Con dificultad enciendes la lámpara.";
 now the lampara is lit.
 
Instead of switching off the lampara:
 say "Soplas sobre la trémula llama de la lámpara, apagándola.";
 now the lampara is unlit.

Si compiláis este código veréis que el IDE ya os crea un índice que nos facilitará mucho la localización del código que nos interese cuando estemos depurando el comportamiento de la obra. Sé que parece un poco excesivo poner todas etiquetas pero es mucho más importante de lo que parece y en realidad es bastante sencillo hacerlo.

Ahora que tenemos la obra un poco más ordenada, sería necesario añadir 'niveles de examinado'. ¿Qué es un nivel de examinado? Llamo nivel de examinado a la existencia de mensajes de detalle -accesibles por el comando 'ex' o 'examinar'- de todas las 'cosas' que aparecen en los mensajes de los lugares por donde pasará el interlector y los objetos que lleva encima o se encuentren en estos lugares. Por ejemplo, en la descripción del único lugar de esta obra, el túmulo, se habla de 'piedras', 'antepasados', 'muertos', 'tinajas', 'hileras' y 'restos'. Disponer de una respuesta adecuado a los examinas de todos esos conceptos sería tener el primer nivel de examinado completo. Personalmente no me doy por satisfecho hasta que esté completo el tercer nivel de examinado, es decir, respuestas correctas para los conceptos mencionados en las respuestas de los conceptos mencionados en las respuestas de los conceptos mencionados por la descripción de inventario y de lugares. Pero es que yo soy un poco demasiado exigente, con que lleguéis al primer nivel ya estará bastante bien.

De la lista de concepto anterior no todas las cosas son lo mismo, por ejemplo, 'piedras', 'tinajas' e 'hileras' son cosas que 'realmente' estarán ahí, mientras que 'antepasados', 'muertos' y 'restos' no van a estar realmente, al menos no hasta que empecemos a abrir tinajas. Las respuestas no pueden ser lo mismo. El comando 'examinar' es mirar con los ojos, así que un 'ex piedras' debería dar detalle de las piedras tal y cómo sea que sean en la realidad del mundo de la obra, pero un 'ex muertos' debería decir que están dentro de las tinajas, poco más... excepto si las tinajas están abiertas. Cuidado con estos detalles variables que es lo que finalmente dará calidad a vuestra obra interactiva.

Trataremos con las tinajas (y sus hileras) más adelante, ya que van a ser los objetos más importantes de esta obra, pero, ¿cómo incluimos la descripción de las piedras del túmulo? Una primera aproximación es simplemente incluirlos como un objeto más en el túmulo, es decir:

Section 2 - Piedras

Some piedras (f) are in the tumulo. 
The description of piedras is "Enormes como caballos. Amarillentas como las colinas cercanas 
a la aldea, pero las historias dicen que fueron traídas de tierras sagradas lejanas, 
allá en el lejano sur de nuestros orígenes.".

Esto proporciona el objeto piedras, al que podemos referirnos más adelante y nos da la descripción que buscábamos, pero hace aparece el texto:

Interior del túmulo
Piedras enormes te rodean levantadas por tus antepasados para proteger a los restos de sus muertos. 
Montones de tinajas, algunas en hileras, la mayor parte desordenadas, 
contienen esos restos a tu alrededor.

Puedes ver unas piedras aquí.

Y ese 'puedes ver unas piedras aquí', no es precisamente lo que queremos. Además estas piedras 'grandes como caballos' resulta que pueden cogerse con el comando 'coger piedras'. No, esto no queda bien. Por suerte Inform 7 contempla esta clase de objetos de 'decoración' y los llama 'escenarios'. Si cambiamos el código por:

Section 2 - Piedras

Some piedras (f) are scenery in the tumulo. 
The description of piedras is "Enormes como caballos. Amarillentas como las colinas cercanas 
a la aldea, pero las historias dicen que fueron traídas de tierras sagradas lejanas, 
allá en el lejano sur de nuestros orígenes.".

Veréis que el comportamiento cambia totalmente y sólo por una palabra. Es una de las magias de Inform 7, es un sistema que tiene tanta historia tras de sí que ya contempla mucho de lo que podemos necesitar.

En el siguiente capítulo veremos como incluir el resto de las decoraciones y cómo simplificar un poco este código.

28.9.16

Tutorial de creación de ficción interactiva - Huesos (6)

En la anterior entrega ya completamos la versión de nuestra historia 'Huesos' en forma de una hiperficción realizada con Squiffy. Hasta ahora hemos transformado un texto lineal en una historia que se puede explorar a través de varios caminos, lo que es la base de una narración interactiva. Pero un relato interactivo basado en comandos -nuestras viejas conocidas las aventuras conversacionles- son algo bastante diferente, es una historia que surge de forma emergente de un 'modelo de mundo'. Un relato interactivo por lo tanto tiene necesariamente una coherencia interna que una hiperficción -o un librojuego- no tiene porqué tener, necesita esa coherencia porque el interlector en este caso no sólo controla el discurrir de la historia sino que puede interactuar con el 'mundo' en el que está con una plétora de comandos -acciones- diferentes que deben contestar adecuadamente. Y si estas respuestas no son coherentes, perderemos la credibilidad.

En algunos aspectos hacer un relato interactivo basado en comandos es mucho más difícil que hacer una hiperficción o que un librojuego, porque el autor aquí pierde aún más control de su obra y hay que hacer un enorme trabajo de programación para incluir todos esos comandos posibles así como las respuestas adecuadas... o había que hacerlo, en el pasado. Por suerte las herramientas actuales para crear aventuras conversacionales están muy evolucionadas y con muy poco código es posible obtener modelos del mundo coherentes y complejos. En el resto de este tutorial vamos a usar una de estas herramientas avanzadas: Inform 7.

Esta herramienta contiene en su interior un ingente universo de capacidades que no tenéis porqué conocer en un principio -que se pueda usar muy por debajo de sus capacidades es también parte de su magia- pero que os servirá para tener modelos de mundo muy avanzados en el futuro. Hay un tutorial de Inform 7 que merece la pena hacer antes de programar ninguna aventura y os animo a hacerlo, ya que este tutorial no va -como ya habéis visto- tanto de la parte técnica de las herramientas, como de la parte de escritura.

¿Cómo es el código más básico que podemos crear con Inform 7? Pues tan simple como el que podéis ver aquí abajo:

"Huesos" by Johan Paz (in spanish)

Interior del túmulo is a room.

En dicho código tan sólo hemos puesto el nombre de la obra y del autor, hemos indicado que es en español y hemos creado la primera -y en este caso única- habitación en la que se desarrollará la historia. Nada más empezar ya tenemos entre manos algo totalmente diferente, ya estamos creando un mundo en el que nuestro interlector va a 'estar'.

Pongamos algo más de detalles a este mundo. El túmulo debería estar a oscuras, y deberíamos iluminarnos con una lámpara de aceite. Esto se logra en Inform 7 de la siguiente forma:


"Huesos" by Johan Paz (in spanish)

Interior del túmulo is a dark room.

A lámpara (f) is a switched on device carried by the player. The lámpara is lit.

Instead of switching on the lámpara:
 say "Con dificultad enciendes la lámpara.";
 now the lámpara is lit.
 
Instead of switching off the lámpara:
 say "Soplas sobre la trémula llama de la lámpara, apagándola.";
 now the lámpara is unlit.

Hemos indicado que el interior del túmulo está oscuro, pero que tenemos un artefacto que se puede encender y apagar que empieza como encendido -la (f) le indica al sistema que es femenino. Además hemos incluido nuestras primeras dos reglas para encender y apagar la lámpara. Si copiáis el código anterior en el IDE de I7 y lo corréis veréis cómo el sistema de creación se encarga de proporcionaros toda la coherencia que necesitáis. Probad a dejar la lámpara mientras estáis en la oscuridad. Intentad encenderla o simplemente cogerla después de haberla dejado en la oscuridad. Ahí tenéis todo un nuevo conjunto de puzles, de dificultades coherentes que surgen por si mismas cuando trabajamos con un modelo de mundo en lugar de sólo con enlaces y párrafos de texto.

Pero Inform 7 no es perfecto. Por ejemplo la adaptación al español, aún es un poco regular, y si usáis 'lámpara' con acento como en el ejemplo el juego no aceptará 'lampara' sin acento -sí es una falta de ortografía pero si lo incluis podrán jugar con más facilidad chavales que escriben sin acentos sus Whatsapps. Para lograr esto tenemos que dar un poco de vuelta y escribir el siguiente código.

"Huesos" by Johan Paz (in spanish)

Tumulo is a dark room. The printed name of tumulo is "Interior del túmulo".

A lampara (f) is a switched on device carried by the player. The lampara is lit.
The printed name of lampara is "lámpara".

Instead of switching on the lampara:
 say "Con dificultad enciendes la lámpara.";
 now the lampara is lit.
 
Instead of switching off the lampara:
 say "Soplas sobre la trémula llama de la lámpara, apagándola.";
 now the lampara is unlit.

En el que hemos separado la declaración de los objetos y lugares del nombre que deben mostrar cuando se ejecute la obra. Es una buena práctica hacer eso para los juegos en español y aunque es incómodo es algo que recomiendo tal y como está de momento la versión para español de Inform 7.

Nos faltaría ahora añadir descripción tanto para el lugar como para la lámpara, y es fácil, no muy diferente de lo de indicar el nombre.

Tumulo is a dark room. The printed name of tumulo is "Interior del túmulo".
The description of tumulo is "Piedras enormes te rodean. Levantadas por tus antepasados para proteger a los 
restos de sus muertos. Montones de tinajas, algunas en hileras, la mayor parte desordenadas, 
contienen esos restos a tu alrededor.".

A lampara (f) is a switched on device carried by the player. The lampara is lit.
The printed name of lampara is "lámpara".
The description of lampara is "Arcilla roja con pequeñas decoraciones en arcilla blanca que representan los 
signos sagrados de los dioses. Una lámpara muy adecuada para esta misión sagrada.".

Corred la obra y observad las diferencias. Bien, tenemos un inicio de mundo creíble, pero ya empezamos a ver que vamos a necesitar bastantes más textos para la misma obra. Toda cosa que pongamos debe poderse examinar y hay que incluir el texto correspondiente.

Pero vayamos poco a poco.

22.9.16

Tutorial de creación de ficción interactiva - Huesos (5)

Pues ya hemos llegado al evento principal del relato. Ya estamos frente al sacerdote. El resto del relato está enfocado en incrementar progresivamente el terror en el lector, hasta provocar la huida, tras la cuál ya sólo queda el giro final.

¿Cómo logramos ir incrementando la tensión en el interlector y a ser posible transmitirle un poco de terror? Probablemente un autor más cercano al terror que yo tenga mejores ideas, pero en mi caso lo que haría no es muy diferente lo que ya hace el relato original. Intentar secciones breves, sin demasiadas ramificaciones, para transmitir inevitabilidad. E intentar que en cada sección haya un giro que incremente la tensión, que complique la situación. Se pueden poner secuencias descriptivas pero estas deben ser cortas, concisas, deben invitar a regresar a la trama principal y la espiral de preocupación.

Aquí habrá que probar una y otra vez hasta que quede bien, así que conviene que nos saltemos el resto de la obra y probemos directamente empezando en la sección de la apertura de la tinaja del sacerdote. Esto en Squiffy es tan sencillo como cambiar el nodo de inicio, o más concretamente en nuestro caso es incluir al principio:

@start tinajax

Primero ocultamos un poco la sección dentro de la exploración del sacerdote, ya que tenemos que sugerir al interlector que está 'profanando' la tumba. Esto se logra con (podéis descargarlo de aquí):

[[tinajax]]:
La siguiente tinaja la dejó confundida. En ella había un [sacerdote]. Los sacerdotes ya no 
se enterraban en el pueblo. Vivían apartados, en su propia colina y por lo que ella sabía 
los enterraban allí mismo, en los cimientos del templo dedicado a [Potnia]. Pero éste estaba 
allí, y estaba casi entero, casi sin corromper. ¿Por qué estaba en el túmulo tan lejos 
del resto de los suyos? 

[sacerdote]:
Su piel estaba [seca], como costra salada, pero aún tenía cara, una cara de sonrisa excesiva 
y amenazadora que le había hecho soltar un breve grito al destapar la tinaja.

[Potnia]:
La diosa de los animales es adorada por todo el que tiene juicio, pues de ella depende toda 
prosperidad, así como la suerte en los partos o que las tormentas y las heladas no destruyan 
las cosechas. Hasta la luz nace de ella, al menos si está de humor.

[seca]:
Con algo de temblor se atrevió a tocar la piel del sacerdote. Áspera. [Escalofriante]. 

[Escalofriante]:
A su edad casi nada le asustaba, pero el tacto del sacerdote le hacía pensar en maldiciones, 
en enfermedades, en ovejas estériles y cabras de ubres secas, en todo lo negativo que 
la [diosa](Potnia) podía llegar a desatar a los que no respetaban las tradiciones


Y ya queda tan poco, que con un poco de esfuerzo podemos completar la historia. Aquí podéis descargaros el programa fuente.

Y aquí podéis jugarla.

En la próxima entrega lo intentamos con Inform 7.

8.9.16

Tutorial de creación de ficción interactiva - Huesos (4)

Los relatos escritos deben poseer un buen 'ritmo'. El ritmo es la 'sensación' que se tiene al leerlo. Esta sensación puede ser más o menos rápida, agresiva o por lo contrario pausado o aún soporífero. Es importante que el ritmo del relato sea el adecuado para aquello que cuenta. Al imprimir el ritmo adecuado el lector se 'contagiará' de las sensaciones de los protagonistas de forma más intensa y por lo tanto disfrutará mucho más de la experiencia lectora.

El ritmo es uno de los elementos más complejos de conseguir en un relato, ya que no hay reglas demasiado fijas sobre cómo conseguirlo, aunque hay elementos que se pueden usar para lograrlo, como los tiempos verbales, la longitud de las frases, etc... pero que el ritmo sea realmente adecuado es una suerte de 'baile' entre la morfología del texto, el léxico y la semántica. Un hermoso y salvaje baile.

¿Se conserva el ritmo en los relatos interactivos? En realidad sí, pero es mucho más difícil de 'controlar'. Si quieres transmitir una sensación de urgencia, por mucho que escribas con frases cortas o ultra cortas, si el interlector no pulsa de forma frenética los enlaces el 'ritmo' de urgencia no se mantendrá. En la ficción interactiva el interlector es siempre el que controla el discurrir y por lo tanto puede afectar muchísimo al ritmo.

Si quieres que más o menos se mantenga el ritmo que tienes pensado para cada parte del relato puedes jugar con algunos trucos. Un hecho interesante es que muchos interlectores son 'impacientes', al menos en la primera lectura. Muchos se precipitan a 'clickar' los enlaces que parecen lógicos para avanzar en la acción. Si quieres meter a tu interlector en un frenesí de urgencia, crea textos de escena cortos, déjale muy claro cuáles de los enlaces son de acción, y ponle bien visible aquellos que te conviene que crean que son la solución, y, encima, borra el texto cuando pulse en el enlace. De esta forma el interlector impaciente -que son muchos- se verá en una secuencia de textos cortos enlazados por acciones y se volverá más y más frenético, hasta llegar a la angustia que la sensación de urgencia que querías expresar requiere. Si requieres transmitir una sensación de meditación, algo lento y muy pausado, haz lo contrario. Textos algo más largos -nunca demasiado largos, porque los interlectores impacientes simplemente se lo saltarán- y en los primeros párrafos no incluyas ni una sola acción, por sólo enlaces a pasajes de exploración y varios niveles.

Estas diferencias tienen al menos una ventaja. En un relato tradicional simplemente no puedes pasarte con la cantidad de información y de texto. Eso destruye el ritmo y aburre al lector, sin embargo en el caso de la ficción interactiva puedes dejar información adicional en niveles de descripción que el interlector simplemente puede ignorar para ir a lo concreto, a la acción. Para ilustrar este hecho he creado esta versión de Huesos que avanza un poco más en el relato, pero sobre todo que mete bastante más información que no estaba en el relato original, pero que al estar conectado de forma periférica simplemente no rompe el ritmo de lectura, ya que es el propio usuario el que ha solicitado ampliar la información.

Bien, esto va cogiendo forma, pero aún no hemos atacado la parte más complicado del relato original. Los dos siguientes párrafos del relato son básicamente un elipsis encubierta. El autor nos engaña -sí soy malvado- y parece hacernos ver cómo la anciana va abriendo tinajas, remueve los restos dentro de ellas y rescata lo que puede en los dos primeros sacos. Incluso se permite sacar a la anciana del túmulo en un fragmento de texto que probablemente es bastante redundante, no muy bien conseguido, y todo es para trasmitirnos la sensación de tiempo, de acción repetitiva sin que haya en realidad ninguna acción repetitiva en absoluto en el texto. Al tiempo que nos produce un poco de sopor, de normalidad, de rutina, que puede así contrastar más adelante con la tensión y la extrañeza de encontrar el cadáver del sacerdote.

Transcribir tal cual esta elipsis simplemente no funcionaría aunque es tentador. Necesitamos provocar al interlector el mismo tipo de sensación de normalidad, de rutina, que crea el relato. Una forma de generar esa sensación en un interlector es llevarlo a pensar que está 'resolviendo un juego'. Si lo situamos ante lo que parece un puzle a resolver, estamos jugando con las convenciones de lo interactivo y el interlector se olvidará del contexto pasando a 'modo de resolución', que es equivalente a lo 'rutinario' en un lector normal. Así que tenemos que intentar presentar el vaciado de las tinajas como un 'juego' de alguna clase, algo a resolver.

Para lograr esto vamos a tener que hacer un poquillo de código, algo que permita 'repetir' la acción de 'abrir tinaja' y que, sin embargo, de un resultado diferente y preferiblemente uno que varíe de una lectura a otra, de forma que si el interlector relea la obra le de algo más de sensación de realismo. Evidentemente esto se puede lograr con un cuidado diseño de enlaces fijos, pero mejor veamos un poco de cómo se codifica en Squiffy.

En la documentación de Squiffy podéis ver varias secciones que hablan de cómo se puede incluir código en Squiffy. La forma más habitual de hacerlo con esta herramienta es añadiendo javascript a la estructura de nuestro relato interactivo, como se explica aquí, jugando con atributos, como se explica aquí y/o haciendo 'saltos' programados de unas secciones a otras como se explica aquí.

Una estructura simple que podemosa usar es tener una sección que contenga una llamada a función de javascript que haga un salto a una sección u otra de forma condicional, esto se hace de esta forma:

@start Inicio

[[]]:
@clear

[[Inicio]]:
@set count = 0
Estamos en una panadería repleta de hogazas de pan. Cojo una hogaza de [[pan]].

[[pan]]:
    var count = squiffy.get("count")
    var next = "pan" + count
    squiffy.set("count", count + 1)
    squiffy.story.go(next)
    
[[pan0]]:
Es una hogaza de pan negro fragante y ácida. ¡Quiero [[más]](pan)!

[[pan1]]:
Es una hogaza de pan blanco deliciosamente tierno. ¡Quiero [[más]](pan)!

[[pan2]]:
Es una hogaza de pan de semillas. Llena demasiado. ¡Ya basta de pan!

En este caso estamos usando un contador de squiffy que se incrementa cada vez que se pulsa en 'pan' y se salta a una sección numerada. Lo que se consigue con esto es separar el texto de cada clase de pan de la lógica que llega a la siguiente. De hecho el código de antes da un resultado bastante obvio, siempre el mismo y que no merece la pena hacerlo con código. La gracia es que podemos cambiar ese comportamiento cambiando sólo la lógica escrita en pan para dejar por ejemplo un avance aleatorio, como este:

@start Inicio

[[]]:
@clear

[[Inicio]]:
@set count = 0
Estamos en una panadería repleta de hogazas de pan. Cojo una hogaza de [[pan]].

[[pan]]:
    var count = squiffy.get("count")
    var next = "pan" + Math.floor(Math.random() * 3);
    squiffy.set("count", count + 1)
    squiffy.story.go(next)
    
[[pan0]]:
Es una hogaza de pan negro fragante y ácida. {if count< 3:¡Quiero [[más]](pan)!}{else:¡Ya basta de pan!}

[[pan1]]:
Es una hogaza de pan blanco deliciosamente tierno. {if count< 3:¡Quiero [[más]](pan)!}{else:¡Ya basta de pan!}

[[pan2]]:
Es una hogaza de pan de semillas, crujiente y deliciosa. {if count< 3:¡Quiero [[más]](pan)!}{else:¡Ya basta de pan!}

Este ejemplo ya se acerca bastante a lo que queremos, una secuencia más o menos aleatoria de secciones que representen el buscar entre las tinajas y que nos lleve a un determinado final. Pero en nuestro caso no vamos a querer que una misma tinaja se repita, para ellos sustituiremos la lógica central del ejemplo por esta otra:

[[huesos belaiska]]:
@set count = 0
@set tinajas = 012345x
Dejó la lámpara sobre la tinaja de al lado y, con cuidado, pero con toda la prisa que podía darse, los 
introdujo en el primer saco. Hueso a hueso. Bien colocados casi no ocuparon nada. Aun así allí había 
muchos cuerpos que recoger. Todos los muertos desde la fundación de la ciudad. Muchas más [[tinajas]](abrir tinaja) 
que abrir y revisar.

[[abrir tinaja]]:
    var count = squiffy.get("count")
    var cadena = squiffy.get("tinajas")
    if ( cadena == "------x" ) {
        next = "tinajax" 
    } else {
        var rango = 6
        if ( count > 2 ) { rango = 7 }
        var seleccionado = "-"
        while ( seleccionado == "-" ) {
            var index = Math.floor(Math.random() * rango)
            seleccionado = cadena[index]
        }
        var next = "tinaja" + cadena[index];
        cadena = cadena.substring(0, index) + "-" + cadena.substring(index + 1)
        squiffy.set("tinajas", cadena)
    }
    squiffy.set("count", count + 1)
    squiffy.story.go(next)

En la que usamos una variable de squiffy -tinajas- como una cadena en la que vamos marcando las que ya hemos abierto hasta que llegamos a la del sacerdote por suerte o porque no queda ninguna otra. Además hemos añadido una condición para que al menos abra tres tinajas antes de que aparezca como alternativa la del sacerdote. Por fin tenemos un texto variable, que da la sensación de mostrarnos el trabajo de rescatar los restos y al tiempo no es excesivamente larga como para aburrir.

Aquí podéis ver el resultado final.

23.8.16

Tutorial de creación de ficción interactiva - Huesos (3)

En el anterior post iniciamos la construcción de la versión Squiffy de nuestro primer relato interactivo. Ya vimos que el comienzo de la obra no podía ser el mismo que en su versión de escritura tradicional y hoy vamos a ver otras diferencias importantes entre escribir un relato y su versión interactiva, aunque sea sólo la versión hipertextual.

En el relato tras la presentación del túmulo se presenta la dificultad que nuestra protagonista ha tenido para conseguir que alguien más de su pueblo la ayude con lo que para ella es tan importante. Y al tiempo se presenta la situación, es decir, por qué ellos deben huir y porqué ella desea poner a salvo los huesos de sus antepasados. El orden en el que se cuentan estas cosas se debe a las propias normas de ritmo y de armonía del relato al leerlo. Pero en un relato interactivo no hay un orden predeterminado de lectura, el orden es el que el lector -a mí me gusta llamarlo interlector- quiera. ¿Cómo enlazamos entonces en nuestro código de Squiffy los textos del relato original? No hay una respuesta sencilla, pero alguna cosa podemos hacer para prepararnos. En este enlace he cogido el relato original y marcado con diferentes colores qué podemos considerar que es cada fragmento: acción, descripción, consecuencia, etc...

Las secciones en fondo verde -las acciones- deberían corresponderse en nuestro relato interactivo a enlaces presentes que tenga alguna clase de consecuencia, es decir, fragmentos en fondo amarillo -las consecuencias. O dicho de otra manera, los fragmentos amarillos deberían ser las secciones mínimas presentes en el Squiffy, mientras que los fragmentos verdes deberían ser enlaces incluidos 'en alguna otra parte'. Las partes azules son información adicional y no fundamental, así que se deberían corresponder con pasajes de Squiffy. Finalmente las secciones en fondo blanco pero en negrita es información fundamental que constituye el esqueleto básico del relato. Sin ellos el cuento simplemente no existe, así que casi cualquier recorrido no fallido del relato debería contenerlos todos y más o menos en ese orden.

Este relato anotado nos facilita la adaptación, ya que nos da la información aproximada de cuántas secciones y cuántos pasajes deberían existir así como sugerencias de qué debería ser enlaces, incluso, usando las partes negras, se nos está sugiriendo una estructura básica del relato interactivo, es decir, la forma del árbol de decisiones más básico de las secciones y los pasajes. Todo esto está muy bien y os animo a hacerlo en vuestro propio relato, pero pronto veréis que la literatura lineal no respeta necesariamente una estructura de parejas 'acción' -> 'consecuencia' o 'acción' -> 'descripción'. Va haber que ser creativo, flexible, y reescribir el relato para que se adapte al medio interactivo.

Hagamos primero sólo la transición entre el inicio descriptivo y el momento de enfrentarse a las tinajas, lo que en el texto original son los tres primeros párrafos. Mi resultado es este -lo podéis descargar de aquí:

[[]]:
@clear

[[Inicio]]:
Lo más impresionante era el silencio. Lo más terrorífico la oscuridad.
En el mundo de los vivos el sonido lo permea todo. Los ruidos son constantes.
Los trinos de los pájaros. Las llamadas de las cigarras. Los berridos del ganado.
Las voces de a gente. La vida es ruidosa. Hasta los espírtus más cotidianos como el
arroyo y el viento se anuncian con el sonido.

Sin embargo los muertos viven en el silencio frío y oscuro del [túmulo].

No es un lugar para los vivos, ni lo era para ella, una [anciana].

[túmulo]:
A ciegas chocó la [piedra de chispa] con la piedra de sol. Los primeros golpes sólo
iluminaron sus viejas manos un instante, pero la paciencia de la anciana le permitió
encender la [yesca](piedra de chispa) de hilachos carbonizados. Sopló con suavidad la
yesca prendida, hasta que tuvo en su mano encallecida una minúscula llama roja con la
que pudo encender la lámpara de aceite. Levantó la luz sobre su cabeza, sintiendo dolor
en el hombro que nunca se le había curado del todo. Allí estaban. Unas detrás de las otras,
algunas en hileras, la mayor parte amontonadas de forma desordenada. Allí estaban
las [[tinajas]] con los [huesos de los antepasados]. 

[piedra de chispa]:
Piedra de chispa de las tierras remotas del sur, piedra de sol del remoto norte y yesca
que era de andrajos, sí, pero de hilos de la mejor calidad, sacados de su mejor viejo
vestido. Lo mejor que había encontrado en su casa, porque nada podía fallar. Lo que
tenía que hacer era demasiado importante.

[anciana]:
La piel estaba tan arrugada como la tierra seca del verano y tan fina que parecía que 
los huesos, doloridos y cansados, podían verse a su través. Muy pronto su lugar sería 
en aquel túmulo junto con los antepasados, pero aún no, aún tenía un último trabajo 
que completar.

[huesos de los antepasados]:
Esta tarea era fundamental, pero los que no se habían atrevido a penetrar las fronteras 
de los muertos, y los que lo consideraban una pérdida de tiempo, se había encontrado 
[casi sola]. 

[casi sola]:
No sin mucho insistir había conseguido la ayuda de Atten, el hijo del forjador de bronce y 
sólo para que con su fuerza hiciese rodar el portalón de piedra del túmulo. Era mucho 
trabajo para una anciana y no sabía cuánto tiempo faltaba para que los campos ardiesen 
bajo los pasos de lo [gigantes] rubios del norte. 

[gigantes]:
Todos se preparaban para huir, al sur, más allá de las montañas. Al río. A las aguas que 
fueron de los antiguos reyes del oro y la plata. Huían de los invasores que venían desde 
tierras frías y lejanas, trayendo consigo la muerte en los filos de sus armas negras. No 
quedaría nadie en la aldea. Ni los antepasados si [[ella podía evitarlo]](tinajas).

[[tinajas]]:
Apartó las telarañas hasta llegar a la primera tinaja. El betún se había secado hacía mucho 
y pudo destaparla con facilidad. El olor era aún intenso dentro de la tinaja pero el cuerpo, 
en este caso sabía que era Belaiska, la mujer de su hermano mayor, muerta de parto, ya sólo 
eran huesos.

Podéis ver que he prescindido finalmente de usar las dos posibles acciones del texto -encender el farol y elevarlo- como secciones y las he dejado como pasajes, esto es así porque narrativamente me ha parecido más importante distinguir entre esta primera presentación y la parte de las tinajas mediante el borrado de la pantalla -que hemos puesto en la frontera entre secciones. Empecé creando las secciones y sus enlaces siguiendo el patrón del documento coloreado, pero al probarlo vi que quedaba mejor hacer que todo el principio fuese dentro de una misma sección -sin borrado de pantalla- y lo cambié para jugar con los pasajes. Y esto es por la auténtica regla maestra de todo esto:

No hay normas definitivas. Escribe, prueba la interacción y corrige hasta que quede bien.

Esto es arte y tendréis que reescribir tanto los textos como la estructura de interacción hasta que quede bien, no hay forma de asegurar un buen resultado siguiendo normas generales. Algo interesante que hemos hecho en esta parte es llevar al interlector hasta la sección de tinajas mediante dos caminos. La forma de hacer esto en Squiffy es añadir dos veces en enlace a la nueva sección en este caso mediante:
Allí estaban las [[tinajas]] con los [huesos de los antepasados]. 
y:
Ni los antepasados si [[ella podía evitarlo]](tinajas).
Ese (tinajas) tras el enlace es lo que redirige el enlace a la misma sección.

Ya hemos empezado a abrir tinajas, veremos en el siguiente post cómo pelearnos con la elipsis que hay ahora en el relato.

29.7.16

Tutorial de creación de ficción interactiva - Huesos (2)


Pues ya hemos leído un poco de información general sobre de qué va todo esto, hemos escogido un tema y más o menos una historia. Además hemos escrito un relato corto de literatura tradicional para verificar que la historia puede tener interés y que además nos apetece contarla.

Va siendo hora de escribir algo interactivo. Lo primero que tenemos que escoger es que subclase de relato interactivo vamos a crear. Hay muchas opciones. Por ejemplo podríamos crear un librojuego, y cuando digo librojuego digo librojuego, montando el relato en una página con número de secciones y con enlaces 'manuales'. En definitiva algo muy tradicional que podría ser impreso en papel o distribuido en PDF. Estrictamente hablando esto entra dentro de la ficción interactiva; cuenta una historia y hay cierto grado de interacción con el lector, ya que éste puede más o menos escoger el curso de la acción. Podríamos yéndonos al extremo contrario hacer una recreación de la escena en forma de web-comic o de aventura de point-click en donde unos bonitos gráficos rollo Mignola nos descubren escenas en claro-oscuro de tétricos túmulos y civilizaciones desaparecidas. O finalmente podríamos crear una aventura conversacional tradicional con sus gráficos arriba que fuesen cambiando con la escena. Todo eso sería una ficción interactiva y os serviría para participar en la comp

En este tutorial nos vamos a centrar en dos clases de relatos interactivo: primero haremos una hiperficción a caballo entre la ficción explorativa y el librojuego y luego transformaremos la misma historia en aventura conversacional. Así podremos comparar las herramientas, el proceso y los resultados, y sobre todo podremos destacar las diferencias narrativas que implican ambos subclases de ficción interactiva.

La primera versión requiere de una herramienta de librojuegos/hiperficción, en nuestro caso de una que genere una obra digital, preferiblemente publicable en forma de web.  Hay muchas, pero nosotros usaremos Squiffy que me resulta particularmente sencilla. Squiffy tiene en inglés un aceptable tutorial interactivo y documentación. En español disponemos del post de Incanus, así que no voy a entretenerme demasiado en describir Squiffy. En lugar eso os iré explicando lo que vayamos necesitando poco a poco.

Lo primero que tenemos que saber es que hay 'secciones' indicadas por doble corchete, que son como las escenas que se van presentando a nuestro usuario y 'pasajes' que son textos adicionales que aparecen cuando se pincha en su enlace pero que en el fondo no hacen 'avanzar' la acción. Realmente se trata de una división completamente arbitraria y en la práctica podríais usar el uno por otro, pero es mejor tener en la cabeza que una [[sección]] es una escena o un paso y que un [pasaje] es información adicional.

Lo primero que tenéis que hacer es decidir si vais a usar el editor online o el offline, y en este segundo caso descargarlo e instalarlo -todo lo cual viene explicado aquí. Empezaremos creando una nueva obra a la que llamaremos -evidentemente- 'Huesos'. Y aquí tenemos nuestra temida hoja en blanco que vamos a romper primero de todo poniendo el título de la obra:

@title Huesos
Es buena práctica aunque no necesaria en Squiffy poner un punto de inicio e indicarlo en el principio del documento. Esto se hace así:

@title Huesos
@start Inicio
[[Inicio]]:
...

Además a mi me gusta mucho que cuando van pasando las escenas se borre el contenido de las escenas anteriores, esto en Squiffy se consigue poniendo una acción de borrado en la 'sección general' que es [[]] que se ejecuta antes de cada sección. Con esto tendríamos:

@title Huesos 
@start Inicio
[[]]: 
@clear
[[Inicio]]:...
¿Cómo traspasamos el relato a nuestra obra interactiva? El primer intento sería coger, por ejemplo, el primer párrafo y copiarlo tal cual en la sección de inicio a ver qué pasa, o sea:

@title Huesos
@start Inicio
 
[[]]:
@clear
 
[[Inicio]]:
A ciegas chocó la piedra de chispa con la piedra de sol. Los primeros golpes sólo iluminaron sus viejas manos un instante, pero la paciencia de la anciana le permitió encender la yesca de hilachos carbonizados. Piedra de chispa de las tierras remotas del sur, piedra de sol del remoto norte y yesca que era de andrajos, sí, pero de hilos de la mejor calidad, sacados de su mejor viejo vestido. Lo mejor que había encontrado en su casa, porque nada podía fallar. Lo que tenía que hacer era demasiado importante.
 Podéis descargar este estadio del relato aquí si estáis muy vagos.

Pero si corréis esto veréis que en realidad no funciona. La razón por la que no funciona es sutil pero importante. Cuando estamos creando ficción interactiva, incluso una menos explícita como la que vamos a hacer, hay que invitar al usuario a que tome las riendas de la narración. Con este primer párrafo estamos haciendo dos cosas que lo alejan de ello, primero estamos creando una protagonista exterior al usuario, es decir no estamos diciendo 'Chocas la piedra' ni siquiera 'Chocaste la piedra', y encima estamos comenzando con una acción de esta protagonista externa. Eso lo aleja aún más de tomar el control, que es algo que no queremos.

Hacer al usuario el protagonista es la opción habitual, así que vamos a mantener a la protagonista externa para que así incluso gente que ya ha hecho ficción interactiva encuentre en este tutorial cosas nuevas de interés. Pero tenemos que empezar con algo que sea más 'descriptivo' e invitar al usuario a tomar la acción por él mismo, aunque sea de forma muy indirecta en este caso.

Yo he reescrito el inicio de esta forma -que podéis descargar de aquí-:

@title Huesos
@start Inicio
 
[[]]:
@clear
 
[[Inicio]]:
Lo más impresionante era el silencio. Lo más terrorífico la oscuridad. En el mundo de los vivos el sonido lo permea todo. Los ruidos son constantes. Los trinos de los pájaros. Las llamadas de las cigarras. Los berridos del ganado. Las voces de a gente. La vida es ruidosa. Hasta los espírtus más cotidianos como el arroyo y el viento se anuncian con el sonido.
 
Sin embargo los muertos viven en el silencio frío y oscuro del túmulo. 
No es un lugar para los vivos, ni lo era para ella, una anciana.
Ahora ya podemos incorporar algo de interacción poniendo algunos pasajes y recuperando la acción descrita en el primer párrafo del relato y parte de uno de los siguientes, quedando de esta forma -se puede descargar de aquí-:
@title Huesos 
@start Inicio 
[[]]: 
@clear 
[[Inicio]]: 
Lo más impresionante era el silencio. Lo más terrorífico la oscuridad. En el mundo de los vivos el sonido lo permea todo. Los ruidos son constantes. Los trinos de los pájaros. Las llamadas de las cigarras. Los berridos del ganado. Las voces de a gente. La vida es ruidosa. Hasta los espírtus más cotidianos como el arroyo y el viento se anuncian con el sonido. 
Sin embargo los muertos viven en el silencio frío y oscuro del [túmulo]. 
No es un lugar para los vivos, ni lo era para ella, una [anciana].
[túmulo]: 
A ciegas chocó la [piedra de chispa] con la piedra de sol. Los primeros golpes sólo iluminaron sus viejas manos un instante, pero la paciencia de la anciana le permitió encender la [yesca](piedra de chispa) de hilachos carbonizados. Sopló con suavidad la yesca prendida, hasta que tuvo en su mano encallecida una minúscula llama roja con la que pudo encender la lámpara de aceite. Levantó la luz sobre su cabeza, sintiendo dolor en el hombro que nunca se le había curado del todo. Allí estaban. Unas detrás de las otras, algunas en hileras, la mayor parte amontonadas de forma desordenada. Allí estaban las tinajas con los huesos de los antepasados.  
[piedra de chispa]: 
Piedra de chispa de las tierras remotas del sur, piedra de sol del remoto norte y yesca que era de andrajos, sí, pero de hilos de la mejor calidad, sacados de su mejor viejo vestido. Lo mejor que había encontrado en su casa, porque nada podía fallar. Lo que tenía que hacer era demasiado importante. 
[anciana]: 
La piel estaba tan arrugada como la tierra seca del verano y tan fina que parecía que los huesos, doloridos y cansados, podían verse a su través. Muy pronto su lugar sería en aquel túmulo junto con los antepasados, pero aún no, aún tenía un último trabajo que completar.

En la siguiente entrega veremos los problemas que conlleva la existencia de muchas tinajas y cómo podemos convertir algunas de las elipsis del relato en una interacción que sea satisfactoria.

27.7.16

Tutorial de creación de ficción interactiva - Huesos (1)

¿Cómo empezar a construir una ficción interactiva? Pues en realidad hay muchas aproximaciones que se pueden escoger algunas más próximas a la escritura tradicional y otras más alejadas. 

Hay incluso sesudos artículos -que podéis buscar y leer- sobre si conviene diseñar completamente la obra antes de ponerse a codificar o más bien es necesario ponerse a codificar cuanto antes y dejar que la propia interacción te guíe sobre cómo debe continuar la historia y por lo tanto qué se debe codificar a continuación.  Es una discusión sobre la que en general no puede haber una única respuesta. Incluso en literatura tradicional hay autores que se sientan delante de la pantalla en blanco a 'dejar salir lo que sea', para posteriormente reescribir y reescribir hasta la extenuación, y otros que necesitan tener una caja bastante grande de material de preparado antes de decidirse a escribir la primera línea. No creo que ninguna de las dos cosas sea un error, depende de tus capacidades y de tus gustos -aunque si qué es cierto que cada clase de escritor tiende a engendrar un tipo de obra diferente, más o menos fría/calculada y más o menos embrollada.

En nuestro caso además el texto no sólo es un único hilo que podamos controlar hasta el último detalle sabiendo en cada momento cómo lo va a experimentar nuestro lector, no, ya que de una manera o de otra éste va a escoger buena parte del desarrollo -a no ser que hagamos una obra obvia y extremadamente lineal. Y para acabar de matarnos no sólo vamos a tener que escribir el texto, sino que de alguna manera vamos a tener que darle estructura, y según la herramienta incluso va a haber que 'programar'.

¡¡Horror!!

Como todo en esta vida lo mejor para enfrentarse a todo lo que se nos viene encima es paso a paso. Lo primero será encontrar lo que queremos narrar. Ojo que no hablo de la historia que queremos contar, no, eso es parte del trabajo. La primera elección es sobre qué queremos hablar. En el caso de este tutorial va a ser más sencillo porque lo escribo para la competición sobre la Muerte que acabo de convocar, así que hablaremos sobre algo relacionado con el mundo de los fallecidos.

Una vez que tenemos el tema para que surja la historia de nuevo hay varios caminos. Hay gente más visual o intuitiva que antes de la historia da con 'fotogramas', con escenas sueltas que tienen fuerza, que les emocionan y todo su trabajo consiste en intentar hilar una historia que las contenga. A veces hilar esas escenas simplemente no es posible sin que la historia quede mal, ilógica. Hay gente más fría que parte de un esquema muy básico de la historia, incluso de algún arquetipo de la misma y lo que va haciendo es ir enriqueciéndola de detalles hasta que descubren si pueden dotarla de la fuerza necesaria. A veces simplemente no hay forma de dotar de intensidad una historia demasiado fríamente concebida.

Lo que sí que os recomiendo encarecidamente es que no narréis una historia de cosas de las que no sabéis casi nada. Las mejores historias probablemente surgen de la propia vida de uno, no narrada tal cual, claro, dotada de sentido mediante la literatura. Se nota demasiado cuando un autor se mete a describir cosas de las que no tiene ni idea y de las que además se ha documentado poco. En seguida se percibe la falta de profundidad en los detalles de la historia.

De una forma o de otra tienes que poner en duda a la propia historia. Si te pones a montar la ficción interactiva sin haber verificado su viabilidad y su fuerza, probablemente gastes muchos días para conseguir una obra que ni fú ni fá. Mi recomendación es que empecéis escribiendo al menos un relato corto con lo que queréis narrar. Es una forma de saber si la idea funciona, si tiene algo de fuerza y además te apetece de verdad desarrollarla.

No es que la muerte -y mucho menos sus aspectos más terroríficos- sean lo mío, pero voy a intentarlo. Además a mí me interesan algunos periodos históricos concretos -como el final de la Edad del Bronce- de los que he leído bastante. Mezclando ambas cosas he montado un relato corto que me sirve para verificar si es algo que merezca ser contado.

 A mi me ha costado varios días escribir este pequeño cuento sin demasiadas pretensiones. No os asuste tardar varios días en esta fase, en realidad es la más importante.

Huesos -relato corto-: 
A ciegas chocó la piedra de chispa con la piedra de sol. Los primeros golpes sólo iluminaron sus viejas manos un instante, pero la paciencia de la anciana le permitió encender la yesca de hilachos carbonizados. Piedra de chispa de las tierras remotas del sur, piedra de sol del remoto norte y yesca que era de andrajos, sí, pero de hilos de la mejor calidad, sacados de su mejor viejo vestido. Lo mejor que había encontrado en su casa, porque nada podía fallar. Lo que tenía que hacer era demasiado importante.  
Sopló con suavidad la yesca prendida, hasta que tuvo en su mano encallecida una minúscula llama roja con la que pudo encender la lámpara de aceite. Levantó la luz sobre su cabeza, sintiendo dolor en el hombro que nunca se le había curado del todo. Allí estaban. Unas detrás de las otras, algunas en hileras, la mayor parte amontonadas de forma desordenada. Allí estaban las tinajas con los huesos de los antepasados. 
Entre los que no se habían atrevido a penetrar las fronteras de los muertos, y los que lo consideraban una pérdida de tiempo, se había encontrado sola. No sin mucho insistir había conseguido la ayuda de Atten, el hijo del forjador de bronce y sólo para que con su fuerza hiciese rodar el portalón de piedra del túmulo. Era mucho trabajo para una anciana y no sabía cuánto tiempo faltaba para que los campos ardiesen bajo los pasos de lo gigantes rubios del norte. Todos se preparaban para huir, al sur, más allá de las montañas. Al río. A las aguas que fueron de los antiguos reyes del oro y la plata. Huían de los invasores que venían desde tierras frías y lejanas, trayendo consigo la muerte en los filos de sus armas negras. No quedaría nadie en la aldea. Ni los antepasados si ella podía evitarlo.  
Apartó las telarañas hasta llegar a la primera tinaja. El betún se había secado hacía mucho y pudo destaparla con facilidad. El olor era aún intenso dentro de la tinaja pero el cuerpo, en este caso sabía que era Belaiska, la mujer de su hermano mayor, muerta de parto, ya sólo eran huesos. Dejó la lámpara sobre la tinaja de al lado y, con cuidado, pero con toda la prisa que podía darse, los introdujo en el primer saco. Por suerte ella había sido pequeña, no ocuparía demasiado, aún así allí había muchos cuerpos que recoger. Todos los muertos desde la fundación de la ciudad.  
En casi todas las tinajas había huesos. Fémures, tibias, calaveras, costillas. En algunos ya sólo quedaban astillas, o polvo. No podía llevarse el polvo, el saco no era de tela tan fina como para contenerlo y el antepasado acabaría marcando un camino amarillento detrás de la huída de los vivos. Tampoco cargaba con las cosas que tanto amaron cuando estuvieron vivos. Sus cuchillos de cobre o bronce, sus anillos, sus brazaletes y los broches. Los antepasados tendrían que perdonarla por dejar todas aquellas cosas valiosas a merced de los invasores. Ya sería bastante difícil llevarlos a todos ellos, tendrían que aguantarse sin sus comodidades. La mayor parte habían sido tan pobres como ella misma, que no había llevado ninguna joya excepto en el día de su boda y que no volvería a llevarla hasta que la enterrasen en un túmulo que esperaba que no fuese muy diferente de este. Sí, habían sido pobres así que entenderían que sólo se llevase los huesos. Y los reyes… los reyes que se aguantasen, que para lo que les había servido el rey y todos sus matones contra los invasores. De todos los que partieron a detenerlos sólo uno aterrorizado llegó del collado donde los gigantes de armas negras los despacharon sin mucho inconveniente. 
Los dos primeros sacos estaban llenos. Salió con dificultad por el estrecho y bajo pasillo del túmulo hasta la luz del verano. El calor del mundo de los vivos ya le resultaba insoportable. Por su edad, ya se encontraba más cerca del mundo fresco y oscuro del interior del túmulo. Atten se resistió un poco, pero al final accedió a llevar los sacos hasta la aldea mientras ella continuaba con antepasados más antiguos. 
Muchos de ellos casi ni existían. Mera arena fina, polvo de talco, con pequeños fragmentos de hueso, mezclados con abalorios antiguos, conchas de mar y piezas irreconocibles verdes de cobre. Seguía sin poder llevarse esos restos, pero a medida que más y más de sus antepasados se los encontraba en ese estado, más le dolía dejarlos allí, así que se esforzaba en meter la mano entre los restos y buscar algo, lo que hubiese, una mandíbula, un pedazo grande del cráneo, lo que fuese. Hasta la tinaja del sacerdote.  
Los sacerdotes ya no se enterraban en el pueblo. Vivían apartados, en su propia colina y por lo que ella sabía los enterraban allí mismo, en los cimientos del templo dedicado a Potnia. Pero este estaba allí, y estaba casi entero. ¿Por qué estaba en el túmulo? Su piel estaba seca, como costra salada, pero aún tenía cara, una cara de sonrisa excesiva y amenazadora que le hizo soltar un breve grito al destapar la tinaja. Demasiado entero, era probable que no pudiese ni sacarlo de la tinaja sin tirar de él, y era probable que no tuviese fuerza suficiente para hacerlo. Dejarlo allí tampoco sería adecuado. Había venido a salvar a los antepasados, no podía dejar justamente a un hombre santo a merced de los invasores. 
Con algo de temblor se atrevió a tocar la piel del sacerdote. Áspera. Escalofriante. A su edad casi nada le asustaba, pero el tacto del sacerdote le hacía pensar en maldiciones, en enfermedades, en ovejas estériles y cabras de ubres secas, en todo lo negativo que la diosa podía llegar a desatar a los que no respetaban las tradiciones. Con muchísimo cuidado y aún más respeto hizo un intento de tirar de los flacos y secos brazos del sacerdotes, pero la piel estaba quebradiza y frágil. Al primer sonido de desgarro le dio un vuelco el corazón. Palpitaciones y ahogo. No iba a poder hacerlo. No iba a poder. 
Entonces se apagó la llama de la lámpara. Toda su experiencia, todo su sentido común acumulado con los años gritaba que simplemente se habría acabado el aceite, o que había sido un golpe de aire. Pero todas sus creencias y todos sus temores le decían que la luz se hace más y más pequeña antes de apagarse cuando se acaba el aceite, y que allí abajo, en el túmulo, no hay corrientes de aire. Ningún viento sopla jamás. La razón le impelía a serenarse, a centrarse y a buscar la lámpara para volver a encenderla, pero las entrañas le recordaban que Potnia era también la Señora de la Luz en la Noche, la que brilla más que ninguna otra estrella en el cielo, nada sería más sencillo para ella que apagar una pequeña lámpara de aceite. ¿Estaría haciendo mal en sacar a los antepasados del túmulo? Este lugar estaba consagrado sí, pero ella sabía lo que harían los gigantes de armas negras, penetrar en el túmulo, destruir las tinajas, saquear a los muertos, tal vez hasta usar los restos para decorar sus terribles altares al impío Esus.  
Se dio cuenta de que sumida en sus pensamientos y temores había perdido el sentido de la orientación y la oscuridad se le hizo aún más profunda. Notaba cómo las manos le temblaban de miedo, pero aún así las alargó hacia donde debería estar la lámpara. Por aquí. Estaba aquí, sobre esta tinaja. Pero no estaba allí, en lugar de eso una mano, de piel seca y cuarteada cogió la suya. El frío más intenso que jamás había sentido la rodeó al tiempo que sentía que aquellos dedos esqueléticos apresaban los suyos. Estaba condenada, sin duda abrir la tumba del sacerdote, tocar su consagrada piel había sido un pecado imperdonable y ahora el sacerdote regresaba de entre los muertos para castigarla. Potnia iba a maldecir a todos los suyos hasta que su linaje se extinguiese. No veía nada, pero podía adivinar los ojos del sacerdotes clavados en los suyos mientras se incorporaba en su tinaja sin dejar de cogerle la mano. Casi podía escuchar los leves crujidos de la piel reseca del cadáver al levantarse. 
Sacando fuerzas no se sabe de qué recoveco, de qué reserva de valor y vigor logró soltar su mano y huir. Chocando contra tinajas que no deberían estar allí, escuchando lo que sin duda eran los torpes y lentos pasos del cadáver del clérigo, resbalando y cayendo, enredándose con las telarañas, pero sobre todo a ciegas, alcanzó el pasillo de salida del túmulo y guiándose por la tenue luz que prometía, logró regresar al mundo de los vivos.


El sacerdote, que no se había movido de la tinaja, sonrió. No había tenido que hacer casi nada -tan sólo apagar una lámpara- y no tendría que pagar un precio demasiado alto por trastear entre los vivos en aquella ocasión. Sabía que ella ya no regresaría y que para cuando llegasen los hombres de Esus -demasiado pronto ya- la anciana piadosa, estaría lejos y a salvo.

Con esto, ya tenemos un texto sobre el que trabajar. En el siguiente post lo analizaremos brevemente para ver qué partes tienes y pensar sobre como podemos hacer nacer a partir de él una pequeña obra interactiva.