SPAC
Portada > Webzine > Sección objetiva > A. técnicos > Un acercamiento a Inform 7

Un acercamiento a Inform 7

Nociones básicas de su entorno - NIVEL: NOVATO

Miércoles 26 de diciembre de 2007, por Sarganar


Bueno, ¿qué es Inform 7? ¿Qué quieres, la respuesta larga o la respuesta corta? ¿Respuesta larga? ¿Bromeas? Inform 7 (I7) es un sistema de autoría para escribir aventuras conversacionales. Listo. Comenzó allá por 1993 y evolucionó siguiendo los mandatos de su amo: Graham Nelson. Cuando lo instalas y lo ejecutas, descubrirás un IDE minimalista partido al medio (me refiero al entorno gráfico). De un lado escribes tu aventura, y del otro puedes jugarla y testearla (verás unas pestañas para acceder a sus diferentes paneles).

Inform 7 IDE Inform 7 IDE – Versión para Windows

Básicamente Inform lee y procesa el texto (source) que describe tu juego, le agrega la librería interna Inform, compila el resultado y te lo muestra en la pestaña Game. Allí puedes jugar un rato, testear su comportamiento y cuando estás conforme, publicar tu juego. El resultado final es un binario (de extensión .z5 por ejemplo) que puede ejecutarse en cualquier ordenador mediante un intérprete (¿la analogía con un mp3 y su ‘intérprete’ te vale?)

El IDE de I7 está disponible en los principales sistemas operativos (Windows, Linux, Mac OS). Ten siempre a mano su página web oficial y la web de INFSP (librerías hispanas de I7).

Las herramientas

En el proceso creativo, tus grandes aliados serán:

1- La pestaña Index, casi no podrías programar nada sin ella. Ay perdón, ¿no eres programador? No importa, I7 intenta ser amigable para los escritores. Por eso el IDE que tiene, y el código escrito en una especie de lenguaje cercano al humano. Y si eres programador de pura cepa, un consejo: abre tu mente a una forma distinta de programar. No intentes aplicar tus estructuras y nombres de variables endiablados aquí.

Las subpestañas de Index son, a grosso modo:
- Actions: Las acciones soportadas, clasificadas por categorías, más las acciones aportadas por las extensiones y tu propio código.
- Contents: Un índice del contenido de tu código, si es que trabajas con las cabeceras Part, Chapter, etc. Un listado de variables globales (named values).
- Kinds: Listado de clases, objetos y tipo de valores soportados.
- Phrasebook: Todas las phrases disponibles (las por defecto, las agregadas por extensiones y las definidas en el mismo código del juego). Los comparativos, superlativos autogenerados, etc. Listado de adjetivos, artículos, sustantivos, verbos soportados por el compilador (todo el lexicon, vamos)
- Rules: Listado de los Rulebook y sus reglas asociadas.
- Scenes: Listado de las escenas usadas en el código.
- World: Mapa de localidades y sus contenidos.

Aunque tu no hayas descrito más que una simple localidad en tu código, I7 ya consta con una inmensa batería de reglas y clases que te ayudarán a modelar el mundo que imaginas.

2- El Skein y Transcript, elementos que sirven de soporte para el betatesteo. Un árbol de acciones que se ramifica según tú pruebas diferentes comandos en tu juego (el Skein), más un seguimiento a las respuestas del juego (el Transcript), para ir chequeado la experiencia del relato.

3- El panel Errors, entablarás una relación de amor/odio con él. La pestaña Problems te dirá los problemas que encontró I7, mientras que la pestaña Progress se encarga de problemas más técnicos de capas inferiores. Concentrate en Problems. I7 intentará hacerse entender en su pacato inglés británico.

4- La Documentation, de I7. Sí, es cierto que está en inglés. Pero, en conjunto con los comandos de búsqueda, son el arma definitiva para sacarte las dudas. En el mismo IDE tienes acceso a dos grandes ayudas: Writing with Inform, explicándote cada entresijo del lenguaje y The Inform Recipe Book, un completa colección de ejemplos listos para usar, ordenados por temas.

5- La búsqueda, no de placeres sino de palabras en tu código (F2) o en la ayuda en línea (F3).

6- Comandos de depuración, mientras juegas; tales como SHOWME, ACTIONS y RULES, que te darán jugosa información para afinar tu aventura.

7- La toolbox, con acceso rápido a un par de comandos…

Puedes ver seis botones redondos en la toolbox: I7 IDE - Botones

- Go!, para compilar tu proyecto
- Replay re-compila y ejecuta la ultima sesión de comandos de jugador.
- Stop, detiene la compilación
- Release, para publicar tu juego, o sea obtener el binario y algunas cosas más, si acaso definiste las opciones de publicar con pagina web, solucion, cover art, etc.
- Refresh, solo actualiza la información del Index.
- Help.

Y cuando te trabes, ya sabes, en el foro CAAD te estamos esperando (sección Inform).

El código y el testeo

Ok, concentrémonos en tu actividad como escritor de la historia en formato I7. Veamos… (lo siguiente es una traducción libre del help de I7)

1. El texto-código del juego (source)

(a) Afirmaciones Una afirmación es una oración que describe el estado inicial del mundo del juego. Las siguientes son afirmaciones:


The Twinkie is a thing.
The description of the Twinkie is "A confection made of gelatin and preservatives."
Two hands are part of every person.
The prevailing wind is a direction that varies.

Con ellas podremos realizar el mapeado inicial del juego, colocaremos los objetos y personajes (con sus características), definiremos variables, etc.

(b) Reglas Las reglas le dicen a Inform cómo se comportará el juego bajo ciertas circunstancias. Una regla puede ser tan breve como


        When play begins, say "Welcome aboard, Mr Bond."

o puede contener una secuencia extensa de instrucciones (llamadas frases), como


Instead of attacking the donkey:
   remove the donkey from play;
   if the donkey carries something, now everything carried by the donkey is in the location;
   say "The donkey bolts, of course."

Toma nota de la puntuación: Luego de la definición de la regla (tenga nombre o no) deben ir los dos puntos (a veces puedes poner coma, si la frase que sigue es una sola). Y cada frase termina con punto y coma, excepto la última. La regla termina con el punto final de esa última frase. La frase condiciononal “if…” (“if the donkey carries something…”) solo puede usarse dentro de una regla, donde Inform sabe con certeza cuándo usarla. Por ejemplo, “Instead of attacking the monkey” le dice a Inform cuándo aplicar la regla. Lo siguiente NO está permitido:


        The Rain Forest is a room. If the player is in the Rain Forest, say "Rain falls steadily on your hat and rucksack."

La frase condicional (como cualquier otra frase) no puede estar ‘suelta’ en el código. Debe alojarse en el contexto de un regla. En este ejemplo concreto, si quisiéramos aplicar esa comprobación todo el tiempo, sería necesario acomodarla en una regla adecuada: Algo como “Every turn: if the player is...". Tienes acceso a todas las frases disponibles en la pestaña Index>>Phrases (luego de compilar el código).

Extendámonos más en las reglas. Compila en tu I7 lo siguiente:


"Test"

Test is a room.

Solo una habitación vacía (que I7 compilará en inglés). Ahora dirígete a la pestaña Index>Rules. ¿Qué ves allí? Nombres como When play begins, Every turn, Before, Reaching inside , Instead of, After y muchas más. Esas son las llamadas rulebooks, que agruparan todas las reglas posibles de I7. Por ejemplo la rulebook Every turn, agrupará todas las reglas que definamos en nuestro código que comiencen con ese nombre. Y las veremos allí, en esa pestaña, al compilar. Se completa el panorama con las Check, Carry Out y Report rulebooks aplicadas a todas las acciones de jugador soportadas. Por conveniencia están listadas en la pestaña Index>>Actions.

Las rules pueden tener nombre o no, por ejemplo:


Instead of attacking the donkey:

Es una rule sin nombre que se agrupará en la Rulebook ‘Instead of’. No tiene nombe pero está bien definido el momento de aplicación (cuando ocurra la accion attacking aplicada al donkey).

Compila el siguiente ejemplo (deberás tener instalado infsp):


"Test"

Include Spanish Localization by Sarganar.

Test is a room.
A donkey is here.

Instead of attacking the donkey:
   remove the donkey from play;
   say "El burrito grita y se escapa."

Ahora, busca en la pestaña Index>>Actions, la accion Attacking (con CTRL+F puedes buscar). ¿Puedes ver la entrada para Instead… attacking the donkey ? A su lado está el icono de la flechita, que te linkea con el lugar de tu código donde se la menciona. También puedes ver un regla check…an actor attacking, que tiene nombre (se llama la block attacking rule). Tu no la agregaste, ya viene de fábrica (junto con otras cientos de reglas). Tambien puedes observar el orden en que se ejecutarán las reglas.

Si quieres ponerle nombre a tu regla:


Instead of attacking the donkey (this is the bad boys rule):
   remove the donkey from play;
   say "El burrito grita y se escapa."

Esto puede serte útil para operaciones mas avanzadas, donde debes mencionar la regla como parámetro. I7 también dará prioridad a las reglas con nombre frente a otras de igual ranking pero sin nombre. En el juego, puedes ver a tu regla en acción (junto con cualquier otra que se aplique también) con el comando de debug RULES, por ejemplo:


>rules
Rules tracing now switched on. Type "rules off" to switch it off again, or "rules all" to include even rules which do not apply.

>ataca el donkey
   [Rule "bad boys rule" applies.]
El burrito grita y se escapa.

(c) Títulos Los títulos (Headings) se escriben como frases separadas (con salto de línea antes y después) y comienzan con la palabra Volume, Book, Part, Chapter o Section. Al escribirse, inmediatamente se marcan en negrita. Los títulos son muy útiles para organizarnos y ayudarnos a encontrar las cosas en nuestro código (un texto normalmente largo). Con el botón Contents de la pestaña Source, puedes acceder a ellos. Una pequeña barrita da mayor o menor zoom o profundidad de títulos y subtítulos. También hacen más claro los mensajes sobre problemas al compilar. Por ejemplo, fíjate en la estructura que pensó Urbatain para su juego-tutorial:


"El Lobo en la Puerta" by El Clérigo Urbatain.

Part 1 - Inicializaciones

Chapter 1 - Intro e inicialización del juego
Chapter 2 - Tamaños y contenedores
Chapter 3 - Objetos fuera de alcance (cielo, techo, etc)
Chapter 4 - Comida y sus sabores
Chapter 5 - Inventario doble
Chapter 6 - Cosas peligrosas
Chapter 7 - La bartola

Part 2 - El juego en si

Chapter 1 - La familia y el lobo en la puerta
Section 1 - Planta baja
Section 2 - La familia
Section 3 - ¡A desayunar!
Section 4 - Segunda planta de la casa de los cabritillos
Chapter 2 - Un tratado de Micología
Section 1 - Un libro sobre setas
Section 2 - La clase seta
Chapter 3 - Las andanzas del lobo
Section 1 - Exteriores de la casa
Section 2 - Los caminos de la región
Section 4 - El rio
Section 5 - El poblado
Chapter 4 - El rescate y la venganza

Part 4 - Testeos y otras hierbas - Not for release

Y todo su código está repartido entre esos títulos.

d) Comentarios Los comentarios van encerrados entre corchetes [como esto] y nos permiten hacer nuestras propias aclaraciones sobre el texto. Pueden ser multilínea, con tal que empiecen y terminen con corchetes. Inform los ignora: son solo para nuestros ojos.

(e) Tablas Parecidas a las tablas que vienen en los libros. Serán el objeto de próximos artículos.

(f) Algunas oraciones especiales Un puñado de oraciones son entendidas por Inform como instrucciones para que setee ciertas opciones o respecto a cómo queremos que el texto sea interpretado. Por ejemplo, podemos decir “Use American dialect.” o “Use Dialecto Sudamericano.” o "Include Locksmith by Emily Short" (para incluir la extensión [librería I7] mencionada). También mencionamos las oraciones referentes a la información bibliográfica del juego (autor, año, género, etc) y las opciones de publicación (con cover art, con página web, con archivo de solución, etc), entre otras.

2. Testeo y Resolución de Problemas

(a)¿Dónde está? A veces, durante el juego, puede que queramos ver dónde esta un determinado objeto, más cierta información relacionada con él. Inform posee algunos comandos que nos permiten curiosear detrás de escena: uno de ellos es SHOWME. Por ejemplo, si existe un casco en alguna parte, SHOWME CASCO nos lo dirá, más información sobre sus propiedades actuales. Poniendo SHOWME a secas nos dará información de la localidad actual.


>showme casco
casco - thing
location: in TestRoom
unlit; inedible; opaque; portable; singular-named; improper-named
printed name: casco

(b) Haciendo nuestros propios comandos de testeo

Podemos escribir, por ejemplo:


Test casco with "ponte casco / escucha / x casco / quitate el casco".

Esto crea una breve secuencia automática de comandos (llamada ‘test casco’) que pueden reproducirse en cualquier momento en el juego para probar si el casco hace lo que queremos.


>>test casco

>> ponte casco
Te pones el casco.

>>escucha
Solo un sonido de interferencia.

>>x casco
Un casco negro, como el de los mineros.

>>quitate el casco
Te quitas el casco.

Como es comando de prueba, será omitido en el juego final creado con el botón de Release. También podemos excluir otro material solo-para-pruebas si colocamos en su título las palabras “not for release”, como en:


Part 4 - Testeos y otras hierbas - Not for release

(c) Límites. Existen varios formatos en los que podemos publicar un juego: Zcódigo (z5, z8, zblorb) y Glulx(ulx, blb, gblorb), empaquetados o sin empaquetar. La mayor ventaja de estos formatos es su alta portabilidad y jugabilidad en un vasto número de dispositivos, incluyendo ordenadores de mano. Inform utiliza dicho formato para todo nuevo proyecto que se comience. Si nos pasamos de espacio o queremos usar sonidos o gráficos, Inform nos avisará y mostrará las opciones, reduciéndose el asunto a cambiar a un formato mayor en el panel de Settings.

2 Comentarios

  • Un acercamiento a Inform 7

    26 de diciembre de 2007 10:22, por Incanus
    Brutal: muy aclarador y sucinto a la vez. Excelente... ¿Y para cuándo el Taller Creativo, o el Tutorial La Torre, en I7?
    • Un acercamiento a Inform 7 26 de diciembre de 2007 13:06, por Sarganar

      grazie.

      Estoy trabajando en un tutorial basado en el cursillo básico de Zak sobre el diamante en una caja de cristal. Es más corto que La Torre y va a los bifes en menos rounds. :-)

      La Torre vendrá después.


Seguir la vida del sitio  RSS 2.0: Artículos, Comentarios | Mapa del sitio | SPIP
CC Some rights reserved El contenido está disponible bajo los términos de Atribuir - Compartir bajo la misma licencia 3.0 ó 2.5 de Creative Commons.