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.