Planeta Aventurero

Distribuir contenido
Planeta aventurero de CAAD (en pruebas)
Actualizado: hace 8 horas 49 mins

Silueta

Hace 8 horas 50 mins

Subo las imágenes completas de la silueta de Dass Jennir utilizada en el tráiler de EL ULTIMO JEDI, ya que en el vídeo no se ven enteras.



Un saludo,
Joru.

Categorías: Planeta

027: La isla misteriosa (juego de texto)

Hace 8 horas 50 mins
Recientemente he publicado mi última obra de ficción interactiva, para la V Minicomp convocada por el CAAD. Se trata de un cuento interactivo en el que empezamos siendo Hernán Cortés, pero pronto se convierte en una pequeña crítica a diversas cuestiones que me preocupan.
El relato se puede acabar en unos diez minutos, dependiendo de la pericia de cada uno, y se puede descargar de aquí o jugar on-line (recomendado). Si eliges la descarga deberás tener algún programa para ejecutar ficheros en formato Zcode, por lo que recomiendo jugar on-line, ya que no necesitas nada más que el navegador para jugar.


¿Como se juega?
Mediante el teclado, deberás teclear las órdenes y comandos adecuados para avanzar en la trama. Deberás pulsar Enter para hacer avanzar el texto o tras una nueva orden (similar a usar un chat). Algunas de las órdenes iniciales para empezar más útiles son "ayuda", "mírate", "inventario" y "examinar". Deberás observar bien todo lo que te rodea, por ejemplo con un "examinar serpiente" o "mirar la montaña". También será útil "coger" o "tomar" cosas, por ejemplo "coger piedra", para después hacer cosas como "lanzar piedra a serpiente". Puedes probar multitud de cosas, como por ejemplo moverte con "ir al norte", "norte" o más simple aún, "n". Puedes tratar de "nadar", si hay agua suficiente. O puedes decir algo, si alguien puede escucharte, como por ejemplo un "di hola".

Tienes todo un pequeño mundo para explorar. Y si se te queda demasiado pequeño y quieres más, puedes jugar al resto de obras presentadas a concurso, disponibles aquí. ¿Necesitas ayuda? Dime tus dudas en los comentarios y trataré de ayudarte. Te advierto, eso sí, que no es fácil dar con los dos finales.
Categorías: Planeta

Veo, leo, escribo

Hace 8 horas 50 mins

Abro este blog para preservar y promocionar mis trabajos de ficción interactiva, tras haber eliminado mi anterior web, donde publicaba mis trabajos. Aquí voy a hablar sobre las cosas que hago, de lo que veo, leo y juego. Intentaré hacer críticas y dar opiniones de todo lo que me llame la atención y considere digno de destacar. No quiere decir esto que todo lo que se quede sin criticar ni comentar carezca de interés, solo que mi tiempo es limitado. Aunque en la primera frase de éste párrafo se haga hincapié en lo de promocionar la ficción interactiva, mucho me temo que no voy a hablar demasiado sobre el tema, porque últimamente la cosa está muy parada en éste campo. Pero vamos, que si sale algo digno de destacar, es muy probable que lo juegue y critique.

La razón por la cual eliminé mi web y los anteriores blogs es porque en mi web se hacía mención de "mi marca" fallida de Yonostudio, que tenía que ser el nombre de mi estudio de diseño, hallá por el 2005, cuando todavía era joven y tenía la cabeza llena de pájaros. Lo de la página web de Literactiva no fue mucho mejor; tras enemistarme con mis colaboradores decidí cerrarla por falta de mantenimiento. Mis antiguos blogs también los cerré, por la misma razón. Eso me hizo pensar... ¿porqué mis páginas webs y blogs los acabo cerrando? Porque lo que me motivó a abrirlos en su día ya no me motiva; y porque todo comienzo tiene un final. Sé que este blog que hoy abro tendrá un final, pero hoy estoy motivado a abrirlo porque de lo que voy a hablar en él es sobre lo que veo, leo y escribo. No de lo que se supone que debería ver, leer y escribir. Esto que es tan sencillo no lo es tanto, puesto que no es lo mismo hablar sobre lo que se quiere que hablar sobre lo que otros quieren. Esta reflexión, tan sencilla, me habría ahorrado mucho trabajo en el pasado, si la hubiera pensado antes. Pero yo nunca he sido de mucho pensar, sino de mucho hacer.

Por ejemplo, cuando escribía en mi antiguo blog sobre ficción interactiva me sentía en la obligación de hablar de todo lo que salía anunciado en el CAAD. Aunque la mitad de las cosas que salían en el CAAD no me interesaran en absoluto, como miembro activo de una comunidad me obligaba a ello para valorar el trabajo de los otros miembros. Incluso aunque el trabajo fuera malo o lo considerara de escaso interés, siempre tenía buenas palabras para todos. No creo que eso fuera malo, pero al final uno prefiere no hablar de lo que no le gusta para no molestar a nadie, y eso conlleva la "falta de mantenimiento" del blog. Para hablar y molestar a alguien siempre nos quedará Mel Hython, como bien saben Adam Cadre y otros/as.

Otro ejemplo, cuando escribía en mi blog de relatos, me obligué a escribir diariamente cuentos de no más de 1000 palabras de extensión. Lógicamente se me secó el poco cerebro que tengo y además me quitó mucho tiempo para escribir mi proyecto de novela, que aún sigue en alguna carpeta del disco duro. Lo que en un momento me pareció tan bueno, obligarme a escribir y a publicarlo inmediatamente, se me antoja ahora un intento pueril por demostrar que podía escribir bien y demostrarlo ante mi gente, algo que queda totalmente en entredicho, como cualquier lector podrá comprobar al ver las veces que se repiten los verbos solo en éste párrafo. ¿Es necesario poner tantas veces "demostrar" o "escribir"? Pues eso, que no es tan buena idea abrirse blogs para obligarse a escribir, y sí lo es escribir para uno mismo, en privado, y publicarlo solo cuando uno esté a gusto con lo que escribe, no para demostrar nada, porque para eso ya están los agentes literarios, y es a ésos a quienes tenemos que deslumbrar con nuestra prosa.

Con Literactiva, pasó que no era posible juntar tanto ego en tan poco espacio. Para empezar, mi colaborador Depresiv tenía que revisar todos los textos, asumiendo que tal vez el resto no sabíamos escribir o que éramos simples escribientes. Un vistazo a su extensa bibliografía acredita su posición en éste aspecto. Con Urbatain, poco queda que decir que otros no hayan dicho ya, siempre se mete como elefante en cacharrería en todo proyecto ajeno hasta hacerlo suyo. Así que Literactiva ofreció lo que pudo durante su corta travesía en la red, y sufrió de "falta de mantenimiento" hasta que decidí retirarla al comprobar que nadie recogía el testigo. Todo el trabajo realizado se puede encontrar ahora en el CAAD, que tuvo un gesto elegante ante una página que intentó hacerle sombra.

Por último, con mi web de Yonostudio puse fin a más de cinco años en la red, con un nombre con el que nunca me sentí del todo a gusto, puesto que era el nombre de un fracaso, de una agencia de publicidad, de un estudio creativo, de mi proyecto como freelance que nunca se pudo realizar. Así que aunque me costó, decidí alejarme de ese nombre, puesto que ya no tenía sentido seguir, y apostar por la sencillez de ser yo mismo, sin nicks a modo de máscaras, que tan bien funcionan en los foros. Y no solo renuncié a "mi marca comercial", sino que además me quité de encima el antiguo nick de "Grendelkhan", que era un homenaje al Grendel de los cómics, creado por Matt Wagner, uno de mis autores favoritos. También me podía haber puesto Orion Assante, pero Grendelkhan me pareció más molón. Ahora, dejemos al Grendel-Khan original en los cómics, y la copia en Google.

En conclusión, abro este blog tras haber tenido un gran bagaje en la apertura y cierre de blogs. No prometo actualizarlo demasiado, pero sí prometo escribir cosas que me motiven. Tampoco puedo decir que no tenga otros blogs abiertos, pues todo el material de la Revista Token se ha recompilado en un blog que sigue abierto y que continúa el proyecto iniciado en Yonostudio. Ahí se irán publicando los nuevos números de esa revista lúdica. Tan solo queda decir que también me podéis seguir en Twitter, y que pronto pondré enlaces a mis antiguos juegos para poder jugarlos on-line.

Nos leemos,
Xavi C.
Categorías: Planeta

Retromadrid 2013

Hace 8 horas 50 mins

Este sábado estuvimos en Retromadrid 2013...


Quiero dar las gracias a todos los que se acercaron al stand, y especialmente a quienes se acercaron a preguntar para interesarse por el lanzamiento de El Último Jedi.

Un saludo.

Categorías: Planeta

[WIP] The Last One

Hace 8 horas 50 mins
Creo que es el último....  Oeee, Oeee, Oeeee!!  :-))
Un saludo,Joru
Categorías: Planeta

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

Vie, 14/12/2018 - 06:08
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í.

Categorías: Planeta

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

Mar, 04/12/2018 - 06:08
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.
Categorías: Planeta

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

Dom, 21/10/2018 - 05:08
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.
Categorías: Planeta

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

Mié, 03/10/2018 - 05:08
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.
Categorías: Planeta

Nuevas versiones de Tuuli y Nómadas, "Canciones de la tormenta, el desierto y el mar".

Mar, 02/10/2018 - 05:08

Baltasar el Arquero, Ruber Eaglenest y Daurmith han actualizado dos de los juegos participantes en la jam "del mar".

Nómadas, la historia del nuevo mundo inspirada por la canción homónima de Franco Battiato creada por Baltasar va por la versión 2 que incluye numerosas mejoras.

https://baltasarq.github.io/Nomadas/

Tuuli, el ritual interactivo de Daurmith y Ruber ha visto surgir su versión 3, realizada a la par que la traducción que van a presentar para la IF Comp 2017.

https://rubereaglenest.itch.io/tuuli

Categorías: Planeta

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

Lun, 17/09/2018 - 05:08
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.
Categorías: Planeta

Documental sobre Infocom producido por Jason Scott

Dom, 02/09/2018 - 05:08

A partir del contenido de Get Lamp, Jason ha producido un nuevo documental sobre la historia de Infocom.

Cuenta la misma historia desgarradora con el mismo final decepcionante que todos conocemos.

https://www.youtube.com/watch?v=OXNLWy7rwH4

Categorías: Planeta

(c)1998-2015 CAAD

Todos los contenidos de esta web son propiedad de CAAD. Las colaboraciones son propiedad de sus respectivos autores.