14.6.18

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

Si probáis a abrir una tinaja veréis dos cosas: primero que el texto de respuesta es bastante inadecuado, porque no te dice nada de lo que encuentras y además podréis comprobar que si intentas repetidamente 'abrir tinaja' va a intentar abrir la misma tinaja una y otra vez. El comportamiento no se parece en nada al que obtuvimos en la versión Squiffy, ni tampoco a la idea del 'flujo de acción' del relato original (una anciana que va abriendo tinajas y vaciando el contenido con respeto y cuidado en un saco). Necesitamos que la secuencia sea algo parecido a: 'abrir tinaja', 'examinar tinaja', 'vaciar tinaja', 'abrir tinaja', 'vaciar tinaja'... Dado que no hemos 'nombrado' (ni queremos) cada una de las tinajas, podría parecer todo un reto crear un mecanismo de interacción que resulte fácil y al mismo tiempo intuitivo para el interlector; pero no lo es. Sé que alguno estará pensando, "pero, pero... ¿no tenemos que nombrar cada tinaja de una forma diferente para que el interlector pueda decir vacía esa tinaja y luego aquella otra?".

:)

Pues la verdad es que no. La solución tradicional a este problema en un 'juego de aventuras' sería pintar cada tinaja de un color, o hacer que cada tinaja sea de una arcilla diferente, o decir que unas están descascarilladas mientras que otras están agrietadas. A fin de cuentas hay hasta una obra inglesa que usa tal solución como puzle: 69105 keys. En esta obra hay literalmente 69105 llaves pero sólo hay un formato de llave que sólo tiene una copia, ¡encuéntrala si puedes!. En el fondo esta obra lo que contiene es un 'meta puzle', es algo que tiene sentido por el medio que se usa y por la forma en la que se resuelve 'habitualmente' la ambigüedad. Para abrir la puerta de la obra tendrás que escribir algo tan chungo como 'abre la puerta con la llave pequeña de hierro con mango azulado, cabeza ovalada y diente cuadrado'. 

:)

Salvaje. Como puzle. Pero, ¿no sería posible resolver el puzle escribiendo 'simplemente': > probar con una llave, probar con una llave, probar con una llave, probar con una llave.... [69101 veces más]?  Y la obra debería responder con:

> probar con una llave. probar con una llave...
Pruebas con la llave pequeña de hierro con mango azulado, cabeza ovalada y dientes cuadrados. No funciona.
Pruebas con la llave pequeña de hierro con mango azulado, cabeza ovalada y dientes triangularas. No funciona.
Pruebas con la llave pequeña de hierro con mango azulado, cabeza ovalada y dientes redondeados. No funciona.
Pruebas con la llave pequeña de hierro con mango azulado, cabeza rectangular y dientes cuadrados. No funciona.
....
¡Vaya la llave mediana de hueso de dragón con mango dorado, cabeza triangular y dientes redondeados sí que logra abrir la puerta!

Como solución a ese puzle pierde toda la gracia, pero para nuestra obra sí que tendría sentido. Y diría más, para gran parte de las obras de ficción interactiva la distinción usando adjetivos diferenciados es un auténtico dolor para el interlector que tiene que teclear una y otra vez los 'adjetivos' que identifican al objeto concreto con el que quiere interactuar y, sin embargo, la usamos una y otra vez. Va siendo hora que nos liberemos de ella, veamos cómo.

Lo primero es cambiar el mensaje estándar que devolvemos al abrir una tinaja, esto se logra mediante las reglas 'After' de esta forma:

Chapter 5 - Abrir tinaja

After opening tinaja :
 if there is a contenido (called content) in the noun:
  say the description of the content;
  say paragraph break;
 otherwise:
  say "Esta tinaja ya no contiene más que polvo.".

Podéis ver que hemos incluido una respuesta útil para las tinajas que no contengan nada. Esto nos permite subir el número de tinajas por encima del número de contenidos, como a 12 por ejemplo -no nos pasemos o el interlector pensará que se han acabado las tinajas que vaciar y que el resto está vacía. Como ya sabéis para lograr esto basta con subir el número de tinajas y de tapas.

There are twelve tapas.
There are twelve tinajas.

Si probáis la obra ahora veréis, que 'abrir tinaja' insiste en usar una y otra vez la misma tinaja, ¿cómo resolvemos esto? Pues es brutalmente sencillo, incluyamos es única línea extra de código.

Does the player mean opening a tinaja which is open: it is very unlikely.

Ahora le hemos explicado al parser que es muy poco probable que el interlector quiera abrir una tinaja que ya está abierta. Probadlo. Magia negra, ¿eh? Inform 7 tiene cosas realmente maravillosas en su interior. Podemos hacer lo mismo a la hora de examinar tinajas, para que 'ex tinaja' no nos de el mismo resultado una y otra vez.

Chapter 6 - Examinar tinaja

A tinaja can be examined. A tinaja is usually not examined.

Does the player mean examining a tinaja which is examined: it is very unlikely.

After examining or opening a tinaja:
 now the noun is examined.

Fijaos lo fácil que resulta añadir una cualidad nueva a cualquier objeto o clase de objeto, darle un valor inicial y hacer que dicha cualidad cambie tras una acción o varias. Daos cuenta que podría haber puesto el cambio de la propiedad en la anterior sección, ya que ahí hemos definido lo que pasa 'después de abrir una tinaja', pero me ha parecido más fácil de entender si lo ponía aquí y funciona. Inform 7 os permite añadir el código cerca de la sección que determina un comportamiento, y eso en obras grandes es realmente útil. Por supuesto podemos hacer lo mismo con las tapas, de esta forma:

Chapter 7 - Examinar tapa

A tapa can be examined. A tapa is usually not examined.

Does the player mean examining a tapa which is examined: it is very unlikely.

After examining or opening a tapa:
 now the noun is examined.

¡Pero es el mismo código! Mejor hacerlo de forma algo más general:

Chapter 6 - Examinar rotativo

A thing can be examined. A thing is usually not examined.

Does the player mean examining a thing which is examined: it is very unlikely.

After examining or opening a thing:
 now the noun is examined.

Mucho mejor. En Inform 7 si veis la forma de hacer algo de forma general, hacedla de forma general, e incluso os diría que si no veis como hacerlo de forma general pasaos por textualiza o por el caad y preguntadnos. Muy pocas veces implementar el caso concreto en lugar del general sale rentable, y el caso general os dará un rico y, a veces, agradablemente sorprendente resultado cuando interactuéis con la obra por hilos raros de la historia.

Pero seamos un poco críticos. ¿Queremos realmente este comportamiento en el caso de examinar? Está genial para ir examinando tinajas cerradas y ver un poco todo lo que hay, pero si el interlector está haciendo de la anciana que acaba de abrir una tinaja concreta, ¿el comando examina no debería referirse a esa tinaja? Desde luego el comando vaciar debería hacerlo. ¿O tal vez deberíamos tener un comportamiento diferente con las tinajas abiertas o cerradas? ¿O es que deberíamos distinguir entre la propia tinaja abierta y su contenido? Uff... habrá que escoger y no es una elección obvia. Al final tendréis que escoger en vuestras obras una interacción que os parezca la más lógica e intuitiva para el interlector, y eso no es algo que sea independiente de la obra misma.

En la próxima entrega os explicaré cuál ha sido mi decisión a ese respecto y cómo lo he implementado. ¡Por cierto nos olvidamos en la anterior entrega que la anciana también lleva un saco! ¿Sabríais incluirlo? Venga incluidlo vosotros mismos y si no siempre podéis mirar cómo lo he dejado yo aquí.

13.6.18

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

Vamos a redondear algunas cosillas básicas antes de meternos con lo que queda de narrativa principal -nos queda el bucle de ir abriendo vasijas hasta que encontramos al sacerdote, apagamos la linterna que se cae en la oscuridad, miedo, etc...

Ya teníamos una lámpara, un entorno oscuro y ya se podía encender y apagar la lámpara, pero la verdad es que lo hemos simulado todo de una forma muy superficial. Para encender fuego es necesario un yesquero que normalmente está compuesto por algo 'metálico', un pedernal que produce chispas al chocarlo con el metal y algo de yesca o que prenda con facilidad. Todo eso estaba en el relato original y en la versión de Squiffy, así que deberíamos incluirlo en el inventario inicial de la protagonista. No es muy difícil ver como sería:

Section 5 - Objetos para encender la lámpara

A piedra de chispa (f) is a thing carried by the player.
The description of piedra chispa is "Gris oscura con vetas casi blancas. De bordes duros, cortantes, 
fácil de afilar. Los hombres del sur las usaban para crear sus armas en tiempos remotos. Es la que 
crea el fuego cuando se la golpea contra la piedra del sol, como si la piedra del sol le prestase 
el calor.".

A piedra de sol (f) is a thing carried by the player.
The description of piedra sol is "Dorada sin ser oro.  Dicen que cayeron del sol en el lejano norte.".

A yesca (f) is a thing carried by the player.  The indefinite article of yesca is "algo de".
Understand "algo de yesca" or "poco de" as yesca.
The description of yesca is "Hilos de sus mejores vestidos viejos, mezclado con hongo de árbol seco. 
Recibe la semilla del fuego y crea la llama.".

Algo interesante que podemos ver en se código es cómo tratar incontables (algo de yesca, un montón de harina, un poco de agua...). La parte importante es que es muy incorrecto que se refieran a ellos como 'un/una' algo al describirlo, por eso le decimos al compilador que su artículo indefinido es otro diferente: "algo de".

Con esos tres objetos creados ya podemos enriquecer la regla del encendido requiriendo los tres objetos para poder encender la lámpara. Una primera aproximación sería:

Instead of switching on the lampara when lampara is carried and piedra de chispa is carried 
      and piedra de sol is carried and yesca is carried:
 say "Con dificultad tus viejos dedos entre chocan las dos piedras para hacer una pequeña 
             llama en la yesca con la que  enciendes la lámpara.";
 now the lampara is lit.
 
Instead of switching on the lampara:
 say "Necesitas la piedra de sol y la piedra de chispa, así como algo de yesca para enceder 
             la lámpara.";
 stop the action.

Aquí podemos ver en funcionamiento la magia de las reglas que se ejecutan según orden de 'especificidad'. La primera regla requiere que se cumpla una condición así que se ejecutará primero, la segunda, sin embargo, se considerará después. Si lo probáis veréis que funciona estupendamente y en esta clase de cosas está la magia y dificultad de I7. El que las reglas tengan prioridad según como de concretas sean es lo que nos permite separar nuestro código en pequeños fragmentos manejables, distribuidos incluso entre extensiones y que todo funcione.

Pero la verdad es que nuestra aproximación es un poco horrible con todos esos 'and' tras el 'when', habría que organizar esto un poco mejor. Para empezar encapsulemos esas condiciones en una sola de esta forma:

To decide if the player can lit a fire:
 if piedra de chispa is carried and piedra de sol is carried and yesca is carried:
  yes;
 otherwise:
  no.

Instead of switching on the lampara when the player can lit a fire and lampara is carried:
 say "Con dificultad tus viejos dedos entre chocan las dos piedras para hacer una 
             pequeña llama en la yesca con la que  enciendes la lámpara.";
 now the lampara is lit.

Con lo que hemos aprendido como 'definir nuevas condiciones' en I7 usando 'To decide if'. Este procedimiento permite utilizar parámetros de esta forma:

To decide if (actor - a person) can lit a fire:
 if piedra de chispa is carried by actor and piedra de sol is carried by actor and yesca is carried by actor:
  yes;
 otherwise:
  no.

No está mal y para esta historia es más que suficiente, pero ya que nos hemos puesto a generalizar, ¿podríamos cambiar el código para que cualquier cosa que se pueda encender con fuego pueda ser encendido por cualquier PNJ además del interlector? ¡Sí! Tenéis que definir adecuadamente las cualidades de esos objetos o la 'clase' a la que pertenecen... y os lo voy a dejar como ejercicio.

Hablando de la protagonista. Inform 7 permite examinarte a tí mismo con comandos como 'examináme' ó 'exme' y la respuesta por defecto no puede ser más inadecuada para una anciana, ¡probadlo! (hay que probar todo lo que se os vaya ocurriendo). ¿Cómo se cambia esto? Es fácil el jugador no es diferente a cualquier otro objeto de la obra así que:

Chapter 4 - El interlector

The description of the player is "Los años han hecho mella en tí, pero aún mantienes cierta compostura.".

Y vamos a dejarlo aquí por hoy. El estado actual de la obra podéis descargarla aquí.


8.6.18

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

Para poder avanzar un poco más tenemos que buscar una manera de incluir la variabilidad que conseguimos en Squiffy a la hora de ir abriendo tinajas en el relato. En aquella versión hicimos que los enlaces que implicaban una nueva tinaja fuesen apuntando a alguna de los posibles textos válidos hasta que, con un número mínimo de abiertas, se permitía que pudiese escogerse la tinaja del sacerdote e iniciar así la secuencia final. 

En realidad en el caso de una herramienta para ficción interactiva de parser como es la escogida (Inform 7), se podría hacer de una manera conceptualmente igual, es decir, ir capturando la secuencia de 'abrir tinaja' que el interlector vaya tecleando y escoger el siguiente mensaje de descripción aleatoriamente y seguir avanzado. Esta sería la forma natural de hacerlo en tiempos antiguos cuando lo habitual eran cosas como PAWS, o el DAAD, que parece que ahora insisten en resucitar. A fin de cuentas estas herramientas estaban fuertemente orientadas al tratamiento del comando tecleado, haciendo bastante más difícil montar una lógica del mundo más general y más robusta. Los herederos de primera generación (SINTAC, NMP, CAECHO?, SKC), segunda (Paguaplús,Superglús, AttoPAWS) y actuales (NgPAWS) de estas herramientas, no han cambiado en nada esto. Los sistemas de parser orientados a objeto (como el Inform 6 o el AGE) cambian la situación pero no del todo, ya que el modelado por clases permite montar el modelo de mundo necesario, e incluir la aleatoriedad de una forma no necesariamente orientado al comando. Sin embargo, en ambos casos el hecho de que el tratamiento de los comandos está incluido en la definición de los objetos hace que siga siendo más natural orientar la solución a 'contar las veces que se usa abrir tinaja' e incluir respuestas aleatorias. Pero esta aproximación, que parece la más natural y sencilla de hacer, tiene en realidad muchos problemas de coherencia cuando se va más allá de la secuencia de comandos que se espera que el interlector use. Es fácil que el interlector acabe viendo las 'bambalinas' porque la respuesta que se le da a 'abrir la siguiente tinaja' simplemente no está del todo alineada con el modelo de mundo que de verdad está manejando el parser.

La aproximación de reglas propuesta por Inform 7 (aún estoy esperando a que salga alguna otra herramienta con esta aproximación) permite, por fin, desligar totalmente el modelado del mundo del tratamiento del comando y de hecho lo natural en esta herramienta es hacerlo así. Veamos cómo...

Lo primero es que vamos a rellenar las tinajas con 'contenidos' de verdad, o sea, cada tinaja va a tener un objeto (thing en I7) en su interior cuya descripción es el equivalente al mensaje aleatorio que teníamos en Squiffy. Como vamos a hacer muchas cosas generales con estos objetos lo natural en I7 es crear una clase de objetos para ellos, de esta forma:

A contenido is a kind of thing.  The plural of contenido is contenidos.

Una vez definida la clase podemos usar la capacidad que tiene I7 de crear múltiples objetos usando tablas de esta forma (véase sección en el manual):

Some contenidos are defined by the Table of Contenidos Tinajas. 

Table of Contenidos Tinajas
contenido description
a contenido Belaiska "El olor es aún intenso dentro de la tinaja pero el cuerpo  ya sólo 
era un pequeño montón de huesos.  Esta es la tinaja donde enterrásteis a Belaiska, la mujer de tu hermano, muerta de parto."
a contenido guerrero "Entre otros huesos de tamaño considerable, una calavera enorme 
te mira con resplandecientes dientes blancos."
a contenido niños "Varias calaveras, pequeñas, tal vez de niños acompañadas por sus 
huesesillos. Eso te hace pensar en todos los niños que morían durante el nacimiento o poco 
después de nacer, sin haber disfrutado si quiera de una breve vida con sus padres y familiares."
a contenido campesino "Huesos de un campesino, o una campesina, no muy diferente a tí. 
Ningún adorno, ni siquiera un minúsculo ídolo de los dioses que le acompañe y guie por 
las turbulenta noche del más allá. Sólo huesos cansados y desgastados."
a contenido polvo "Nada más que polvo. Es triste. Hasta ese polvo amarillento 
merece acompañaros al sur, pero no puede meterse en los sacos. Si hubieses traído 
sacos para harina... pero son caros y están todos ocupados con alimentos, son necesarios 
para los vivos."
a contenido antiguo "Esta tinaja debe ser muy antigua, pero los huesos debieron 
ser de alguien fuerte y resistentee porque aún quedan bastantes fragmentos entre el 
polvo."
a contenido reina "Debe ser el cuerpo de una princesa o de una reina, o tal 
vez de un cacique. Entre los huesos y el polvo sobre salen joyas. Pura vanidad 
envasada en barro."
a contenido sacerdote "¡No puede ser! Huesos teñidos de ocre, cuentas de piedra 
de bosque, el jade tosco pero sagrado y restos de tejido rojo. ¡Un sacerdote! 
¡Pero eso es imposible!"

Cuando quieres hacer  una obra con muchos objetos que sean de diversas clases, lo que acabamos de hacer es una forma estupenda de organizarlo y de que queden claros. Es compacta, fácil de mantener y la capacidad de I7 de extender/repartir tablas a lo largo de tu obra te simplificará aún más el trabajo (véase en el manual).

Cómo hacemos ahora que los contenidos estén en distintas tinajas, pues primero vamos a definir que una tinaja está vacía si no tiene contenido (lo que nos resultará seguro muy útil más adelante) de esta forma:

Definition: a tinaja is empty if there is no contenido in it.

Y ahora aprovechándonos de ello haremos:

When play begins:
 repeat with content running through contenidos:
  move content to a random empty tinaja.

'Definition:' es la forma que tiene Inform 7 de definir nuevos 'adjetivos' para las clases, condiciones que se pueden usar en otras frases del lenguaje, y 'random' permite escoger en un conjunto de números, objetos, etc... de forma tan general por eso es posible escribir algo tan simple y comprensible como 'a random empty tinaja'.

Como hemos creado ocho contenidos diferentes tendréis que subir el número de tinajas presentes hasta ocho, ya podéis imaginar que es con:

There are eight tapas.
There are eight tinajas.

Si corréis la obra y tecleáis 'tree' veréis las tinajas y cómo cada contenido ha acabado dentro de una de ellas. ¡Bien! Hemos creado casi todo lo que necesitamos para poder hacer funcionar nuestro relato.

Un par de cosas antes de continuar: primero, como habréis visto, hemos cambiado considerablemente los textos del contenido de las tinajas entre la versión de Squiffy y esta. Es lo normal. No sólo es el cambio necesario de tiempo verbal para hacer al interlector el protagonista (aunque esto en realidad podríais escoger no hacerlo en segunda del presente, pero no lo hagáis hasta que seáis expertos), además es que hay que ser cuidadosos con el texto de respuesta y reservar cosas para los examinar posteriores que ya veremos en otro capítulo. (Por cierto, un ejemplo de que podéis 'documentaros' incluso sobre la marcha en estos tiempos: he necesitado casi crear la descripción de la tinaja del sacerdote, he pensado en ponerle unos abalorios de piedras y no de oro, buscando sobre la época he llegado a esto, y rápidamente he visto que no hay nombre común para la variscita, así que he decidido crear uno).

Antes de despedirnos por el momento, ¿lo que hemos hecho con los contenidos no podríamos aprovecharlo para hacer que la descripción de las tinajas y sus tapas sea más coherente y así incrementar la credibilidad del modelo del mundo? Sí, de esta forma:

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

Table of Description Tapa
text
"Envejecida, pero aún se reconoce la madera de los árboles locales, 
los mismos que os proveen de madera para cuencos o para cocinar."
"De madera vieja. Algo carcomida por el tiempo, 
pero aún reconocible como de los árboles locales."
"Madera envejecida por el tiempo aunque aún resistente, 
capaz de proteger los restos de los antepasados."

A tinaja is a kind of closed openable container. A tinaja is usually fixed in place.
All the tinajas are part of conjunto tinajas.
The grammatical gender of a tinaja is usually feminine gender.

Table of Description Tinaja
text
"Arcilla amarilla con algunos toques de rojo muy 
pálido cocida en el horno comunitario."
"Barro cocido a fuego lento para ser duradero."
"Amasado por manos expertas y cocido 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 adecuada."
 
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;
  choose a random row in Table of Description Tinaja;
  now the description of jar is text entry;
 repeat with tapa running through tapas:
  choose a random row in Table of Description Tapa;
  now the description of tapa is text entry. 

Podéis ver que la forma de escoger un texto aleatorio de una tabla es algo diferente, pero eso también lo podéis leer con detalle en el manual.

El estado en este punto de la obra lo podéis descargar aquí.

16.5.18

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

Retomemos el tutorial. En la última entrega teníamos definidas varias tinajas (seis) con sus tapas y sus textos de descripción variables. Pero si lo habéis probado habréis visto un efecto bastante desagradable con el  comando más básico de todos 'examinar'. Si examináis una tinaja todo funciona como esperamos, pero si intentamos 'ex tinajas' nos encontramos con una respuesta muy inadecuada: "No puedes especificar objetos múltiples con ese verbo." Si probáis con otros comandos como coger veréis que sí que acepta múltiples objetos. 

Algunos comandos de Inform 7 simplemente no funcionan por defecto con múltiples objetos, y los que lo hacen generan una lista de respuestas, una por cada objeto con el nombre del objeto delante, y eso tampoco nos viene muy bien.

Siempre hay más de una forma de resolver los problemas cuando trabajas con un parser, por ejemplo se nos puede ocurrir resolver esto interceptando el mensaje de error que está saliendo. Esto se puede hacer incluyendo una regla como esta:
Rule for printing a parser error when the player's command includes "ex tinajas":
    say "Amontonadas unas sobre otras esperan ser rescatadas. 
         [if the number of open tinajas is 1]Hay una tinaja abierta.
         [otherwise if the number of open tinajas is  0]Ninguna está abierta aún.
         [otherwise]Hay [the number of open tinajas in words] abiertas.[end if]". 

Aquí vemos cómo siempre podemos interceptar el comando del jugador tal cual y comprobar su contenido (leer la sección del manual de 'Advanced Text'), también podemos ver que el texto se puede hacer variables con condicionales [if <condición>]...[end if], así como vemos que I7 nos permite calcular números de conjuntos definidos por una propiedad 'the number of open tinajas', e incluso permite que ese número se escriba con palabras 'in words'.

Pero esta no es una manera muy apropiada de resolver esto, ¿no sería posible simplemente indicarle a I7 que examinar soporta una lista de objetos múltiples? Sí, basta con añadirle una nueva regla sintáctica de acción sobre objetos múltiples para examining, de esta forma:
Understand "examina [things]" as examining.

Instead of examining conjunto tinajas:
 say "Amontonadas unas sobre otras esperan ser rescatadas. 
             [if the number of open tinajas is 1]Hay una tinaja abierta.
             [otherwise if the number of open tinajas is  0]Ninguna está abierta aún.
             [otherwise]Hay [the number of open tinajas in words] abiertas.[end if]".  
Esto mismo lo podéis hacer para el resto de los verbos comunes, como romper:

Understand "rompe [things]" as attacking.

Instead of attacking conjunto tinajas:
 say "Tendríamos que ser mucho más respetuosos con 
             los restos de nuestros antepasados. Abrirlas con cuidado.".  
 
Instead of attacking tinaja:
 try attacking conjunto tinajas. 
De paso hemos aprendido cómo se puede redirigir en I7 una acción hacia otra con 'try'.

Seguimos en la siguiente entrega.

2.4.18

Dudas

Hoy he visto comentarios de Textualiza y Rubén sobre este concurso y me he dicho, ¿porqué no? Así que venga, ahí va mi primer relato para el concurso.


Dudas

A veces tengo dudas. No son dudas grandes, son dudas pequeñas. Dudas que a apenas merecen ese nombre, pero que están ahí. Dudas que poco a poco erosionan mi seguridad, Dudas que minan mi felicidad. Y, la verdad, eso no me lo puedo permitir. Mi carácter nunca ha sido fuerte —¿Cómo lo llaman? Ah, sí, resiliente─, más bien todo lo contrario, todo lo que pasa me afecta demasiado, incluso me deprime. Así que... no, no puedo permitirme que las dudas me menoscaben. Sobre todo si son dudas absurdas, ridículas.

Y es que las dudas que me asaltan son tonterías, menudencias. A ver, para que se me entienda; ayer mismo, por ejemplo, frente al espejo, me quedé mirando la barba ─por las canas, sobre todo; me tiene preocupado lo de las canas─ y, repentinamente, me surgió una duda: ¿no estaba demasiado larga?, ¿cuántos días habían pasado desde que me la había rasurado por última vez?. A ver, no es que me afeite precisamente a diario. Ni siquiera tengo una rutina clara, ya sabéis, del tipo: los martes y los jueves toca pasarse la máquina. No, nada de eso, de hecho la mayor parte de las veces ni me apuro de verdad, me limito a pasarme el recorta patillas sobre la piel. Sí, sí, ya, ya, ya sé; es un horror, eso no es ni afeitarse ni nada, pero es cómodo y tampoco es que en mi situación sea muy importante, ya sabéis. La cosa, es que, como véis, en realidad, lo de que la barba estuviese algo larga podía ser perfectamente normal. Y, sin embargo, la duda caló rápidamente en mi mente y se quedó ahí, primero como un runrún y luego empezó a oler mal, como una herida infectada.

No podía dejar de pensar en ello. ¿No sería que se me pasaban los días demasiado rápido? Ya sabéis, a veces se nos pasa la vida, así, sin darnos cuenta. Como si los días, de tan aburridos, se mezclasen unos con otros y, así, amalgamados, se saltasen semanas enteras. Semanas robadas a nuestras vidas. Y, claro, esa idea me aterrorizó. Podéis imaginarlo. Semanas perdidas, semanas enteras desperdiciadas, a las que sólo echas de menos porque, de pronto, la barba te parece demasiado crecida.

¿Qué hace falta para pasar desde ese pensamiento al de que todo está fallando? ¿Al de que todo esto está mal? Nada. Muy pronto te puede asaltar la duda de si esas semanas realmente han sido aburridas o simplemente nunca han estado ahí. Y esa duda sí que no me la puedo permitir. Esa no. El procedimiento no es reversible. Una vez que entras en la máquina ya no hay marcha atrás, la ley lo prohíbe. Tus engramas o están el Almacén o en tu cabeza, no pueden estar a la vez en los dos sitios. Es una cuestión de la ética de la transferencia; así que la máquina no deja ni un engrama en tu cabeza —tal vez, ni deja cabeza. Y si uno empieza a dudar de la perfección del Almacén, entonces podría llegar a pensar de que en realidad ha cometido suicidio.


31.12.17

Despidiendo 2017


El año pasado dije que iba a hacer que el 2017 fuese el 'año del fuego' y que le daría a Shamsia la atención que se merece, pero al final no ha podido ser. Mi intención era tanto revisar y publicar la primera novela del universo Akaram, como crear por fin una obra interactiva que es el inicio de una saga y que lleva demasiado tiempo en notas y en mi cabeza. Es cierto que empecé el año bastante bien y le di un empujón a 'Fuego en el amanecer', pero muy pronto el año se me empezó a complicar y perdí algo de interés en la obra. Por otra parte la novela también tuvo un par de lecturas, pero, en realidad, no logré ponerme en serio a reescribir.

¿Qué he hecho este año entonces? Como siempre me parece poca cosa, pero hagamos una lista:

  1. Han caído unas cuantas Sillyberrys, incluyendo alguna muy gamberra y, para finalizar el año, una improvisada que ya está hecha pero que aún no hemos sacado a la luz.
  2. El año empezó a plantearse más en serio con la 'jam del mar', donde cogí una canción de mi querida Värttinä y quise hacer un relato continental de mi universo de 'Hierro y pólvora'. No logré ir demasiado lejos, pero he de reconocer que en la jam salieron cosas interesantes, y al menos improvisé un P&P, KALA, que se ha descargado bastante desde mi cuenta de itchio. Sobre todo lo más importante es que en esa jam se creó la primera versión de Tuuli, que ha acabado siendo una gran clasificada en la competición anglo con excelentes comentarios sobre su calidad literaria, algo que es la primera vez que nos pasa con una obra traducida. Me gustaría pensar que ayudé algo si le descubrí Trä a Rubén, pero la verdad es que no lo sé.
  3. Durante el verano estuve revisando varias obras, tanto interactivas como de ficción lineal, pero sin llegar a ninguna parte con ellas.
  4. Luego llegó la publicación de una novela compuesta por cuentos escritos a dos manos con Pablo -Depresiv- que parece que a gustado bastante a los que la han podido leer, y aproveché el momento para montar una versión en papel del resto de mis obras publicadas en Amazon, así que ya las podéis disfrutar tanto en papel como en electrónico a unos precios de risa.
  5. He estado por ahí también con Pablo en el proyecto de un juego de mesa, que tenía buena pinta, pero no sé si irá mucho más lejos.
  6. Y cuando llegó la Ectocomp, decidí intentar dos obras interactivas, una corta en tres horas y una mucho más ambiciosa, retomando el relato interactivo abandonado durante la jam del mar. Logré hacer la corta, claro, pero no avancé casi nada en la otra.
  7. Lo interesante de los dos intentos de hacer 'La Torre y el Mar', es que me obligaron a revisar mi material sobre el universo extraño de 'Hierro y pólvora', así que decidí intentar hacer este año una nano titulada 'El Cielo sobre La Vieja', pero mi vida se ha complicado desde Noviembre y no he logrado ni hacer las primeras 50.000 palabras.
  8. Y mi último proyecto, también ha sido de literatura lineal, una novela a tres voces de algo parecido a ciencia ficción con el título provisional de 'En el mar de hierba'.
Este año he intentado, muchas cosas diferentes, pero no he producido demasiado como podéis ver, así que creo que este año no voy a poner propósitos nuevos, creo que va a ser mejor seguir el espíritu de esta jam de itchio que vi el otro día y que me hecho gracia.