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:
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:
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:
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:
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.
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.
No hay comentarios:
Publicar un comentario