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í.