manuales:codegen:generador_de_puzzles [Superglús]
 Superglús   Sistema de autoría de aventuras conversacionales Inicio



Generador de Puzzles

Este mini-manual pretende ilustrar cómo conseguir, por medio del Generador de Código de Superglús, programar puzzles para nuestra aventura, sin programar. Para ello pondremos dos ejemplos en dos capítulos: como extraer un refresco de una máquina de refrescos, y como abrir una trampilla que está cerrada con llave.

El puzzle del refresco

Bien, lo primero que necesitamos es decidir como va a funcionar el puzzle, y esta es la definición: “El jugador deberá introducir o meter una moneda en la ranura de la maquina, por lo cual, el modo de resolver el puzzle será [METER MONEDA EN RANURA]. “. Bien, esto es la definición del puzzle, pero hay determinadas cosas que están implícitas que conviene detallar:

1)Debemos llevar la moneda 2)Debemos estar en la misma localidad de la máquina para poder usarla

Bien, vamos a dar por supuesto que las palabras necesarias ya existen en el vocabulario (meter, introducir, ranura, moneda, refresco), que “meter” es sinónimo de “introducir”, y que estamos usando indentificadores de txtpaws para los objetos, por lo que podremos referirnos a la moneda por “oMoneda”, al refresco como “oRefresco” y a la localidad de la maquina como “lMaquina”.

El generador de código de Superglús está disponible únicamente para Windows, bien incluido en la última versión (menú herramientas), bien descargándolo como aplicación externa de la página de Superglús (http://www.caad.es/superglus). Los usuarios de linux pueden usar la versión linux, disponible en la misma pagina, o bien la versión Windows externa mediante wine. La versión de linux nativa require las librerías de Kylix, lo cual lo hace complicado así que quizá sea mejor usar la de Windows con wine.

Nota: Las capturas de pantalla de este documento han sido tomadas de una futura versión de linux no ligada a Kylix, pueden variar por tanto ligeramente de lo que podáis ver en la versión actual de linux o Windows.

Al abrir el Generador de Código nos encontramos con una ventana que tiene tres solapas (con las paginas en el lado izquierdo):

1)Condiciones: en esta solapa se marcan las condiciones necesarias para que l puzzle pueda ser realizado con éxito por el jugador. 2)Acciones: acciones que van a ocurrir cuando el jugador realice el puzzle con éxito. 3)Generar: aquí están los datos finales del puzzle y la ventana donde aparecerá el código que se generará solo.

Pues bien, vamos allá, abrimos el Generador de Código y nos encontramos con esta pantalla:

Veamos como rellenamos esta primera pantalla: hemos quedado que el puzzle requiere que escribamos “METER MONEDA EN RANURA”, por lo cual vamos a rellenar el campo “Verbo” con “METER”, el campo “Nombre” con “MONEDA”, el campo preposición con “EN” y el campo “Otro nombre” con “RANURA”. Para rellenar las dos últimas opciones hay que marcar primero la casilla de “Require preposición” y “Requiere otro nombre”.

Además, hemos quedado en que es necesario tener la moneda para poder realizar el puzzle, con lo cual vamos a añadir en cualquiera de las condiciones de objeto de la derecha, una restricción de que debamos tener la moneda.

Para ello marcamos la primera casilla de “El objeto”, rellenamos el campo de la derecha con “oMoneda” y en el desplegable elegimos “Lo llevamos”. Además, escribimos el texto que aparecerá en caso de fallo (si no llevamos la moneda). Escribimos “¿Que moneda?”

Por último, dijimos como condición que para poder meter la moneda en la máquina es requisito indispensable que estemos en ella localidad de la máquina, así que añadimos la condición de localidad: marcamos “Ligado a localidad” y ponemos “lMaquina” en el campo “Localidad”. También ponemos “¿Donde quieres meter la moneda?” en el campo “Texto si no se cumple” (que corresponde al texto a mostrar si no estamos en la localidad).

El resultado es algo así:

Obviamente, si no estamos usando identificadores de txtpaws siempre podemos poner el número de localidad en el campo “Localidad” y el número de objeto en el campo de objeto.

Pues bien, ya tenemos todas nuestras condiciones, vamos a pasar a las acciones. Cuando metemos la moneda y por tanto hay éxitoen el puzzle lo que tiene que pasar son dos cosas:

  • La moneda debe desaparecer
  • El refresco debe aparecer

Pasamos a la siguiente solapa (Acciones) y marcamos la primera casilla “El objeto”, escribimos “oMoneda” en el campo vacío, y marcamos “Desaparece”. Después, marcamos la siguiente casilla “El objeto”, escribimos “oRefresco” y marcamos “Aparece”.

Marcando “Aparece” el objeto aparecerá en la habitación, si queremos que el objeto aparezca en el inventario del jugador deberemos marcar “Aparece en la localidad” y escribir “254” en el campo vacío. Obviamente para otros puzzles se puede hacer perfectamente que un objeto aparezca en cualquier otra localidad (por ejemplo en una aventura con escenarios tipo Indiana Jones podemos encontrarnos con una palanca en un pasadizo que al activarla haga aparecer un objeto en otra estancia de las catacumbas).

Bien, tras rellenar esto nos encontraremos con algo como esto:

Pasamos por último a la solapa “Generar”, en la cual sólo tenemos que dar algunos datos finales: El nombre del puzzle (opcional) y el texto que debe salir cuando tenemos éxito.

Ponemos “La maquina de refrescos” en el título, “Metes la moneda en la ranura y tras algunos ruidos internos la maquina deposita un refresco en su bandeja” en el campo de “Texto cuando se tiene éxito”.

Bueno, pues ya lo tenemos todo. Aunque en esta última solapa podemos ver dos opciones más: “Comprobar palabras adicionales para cada opción” y “Comprobar condiciones de flags primero”. Puesto que en este puzzle no tenemos condiciones de flags ni hemos explicado lo que es, de momento ignoramos la segunda, pero vamos a explicar qué significa la primera: Palabras adicionales son aquellas que van más allá de la simple frase VERBO+NOMBRE. Como se puede ver, en nuestro puzzle tenemos como adicional “EN RANURA”. Si marcamos la opción se comprobaran estas palabras también en las opciones de fallo, lo cual quiere decir que sólo llegaremos a decir “¿Que moneda?” o “¿Donde quieres meter la moneda?” en caso de que el jugador haya puesto la frase completa, no solamente “METER MONEDA”. En nuestro nos interesa que esto sea así, así que lo marcamos.

Pues bien, basta ahora con pulsar en el botón con el triángulo verde (dale al play) y obtendremos en la caja de código, el código necesario que podemos cortar y pegar en nuestra tabla de respuestas. Ya tenemos el puzzle sin teclear una sola línea de código:

Nota: En el generador de código externo (en el que va dentro del editor de windows no) existe un bug por el cual el título del puzzle, que debería salir como un comentario (tal y como se en la última imagen) sale como texto normal, porque le faltan los signos de punto y como al principio de línea. La solución es añadir dichos punto y coma, o bien eliminar dichas líneas.

Grabando Puzzles

El generador de código de Superglús permite grabar los puzzles una vez que los tenemos hechos. Esto sirve para poder recuperar los datos que generan el código si en el futuro queremos cambiar algo, puesto que no es posible recuperarlo desde el código ya generado. Por eso, si en el futuro decidierais cambiar la moneda por un billete, es bastante recomendable poder recuperar los formularios rellenados en lugar de tener que escribir todo de nuevo.

Además, existen multitud de puzzles que son muy similares y pueden ser generados con facilidad a partir de otros con solo cambiar algunas cosas, con o cual es posible cargar un puzzle, modificar algunas cosas, y volverlo a grabar con otro nombre (generando además el código de este segundo puzzle).

Otros puzzles más complejos

Pasaremos a explicar ahora como realizar un puzzle en el que hay una trampilla que se abre. Hay ciertas diferencias con el puzzle anterior que conviene remarcar:

  • Al abrir una trampilla damos acceso a una nueva localidad
  • Es necesario mantener el control de si la trampilla esta cerrada o no

El puzzle de la trampilla

Como en el caso anterior, lo primero que necesitamos es decidir como va a funcionar el puzzle, y esta es la definición: “Para abrir la trampilla el jugador necesitará la llave, por lo cual la orden adecuada para abrirla es [ABRIR TRAMPILLA]“. Además, hay determinadas cosas que están implícitas que conviene detallar:

  1. Debemos llevar la llave
  2. Debemos estar en la misma localidad que la trampilla
  3. La trampilla debe estar cerrada para poder abrirla
  4. No vamos a pedir al jugador que escriba “ABRIR TRAMPILLA CON LLAVE”. Podríamos hacerlo, pero en este puzzle no lo haremos, primero para facilitar la jugabilidad, y segundo porque ya explicamos en el capítulo I cómo realizar comprobación de palabras adicionales.

Bien, vamos a dar por supuesto que las palabras necesarias ya existen en el vocabulario (abrir, trampilla) , y que estamos usando indentificadores de txtpaws, por lo que podremos referirnos a la llave por “oLlave” y a la localidad de la trampilla como “lTrampilla”. Por último, la localidad a la que podemos acceder por la trampilla (que esta en el techo), la llamaremos 'lAtico'.

Además, vamos a necesitar un método de comprobar que la trampilla se encuentra cerrada. Para ello en Superglús hay dos maneras:

  1. Comprobar que la salida correspondiente no existe utilizando el condacto GETEXIT
  2. Mantener el estado de la trampilla en un flag o bandera

Nosotros vamos a usar la segunda opción, y para ello usaremos el flag 100, que bautizaremos como “fTrampillaAbierta” con txtpaws, y tendrá los siguientes valores:

  • Valor 0: La trampilla está cerrada
  • Valor 1: La trampilla está abierta

Comencemos…

Al abrir el Generador de Código nos encontramos de nuevo con las tres solapas:

- Condiciones: en esta solapa se marcan las condiciones necesarias para que l puzzle pueda ser realizado con éxito por el jugador.

  1. Acciones: acciones que van a ocurrir cuando el jugador realice el puzzle con éxito.
  2. Generar: aquí están los datos finales del puzzle y la ventana donde aparecerá el código que se generará solo.

Veamos como rellenamos esta primera pantalla: hemos quedado que el puzzle requiere que escribamos “ABRIR TRAMPILLA”, por lo cual vamos a rellenar el campo “Verbo” con “ABRIR”, el campo “Nombre” con “TRAMPILLA”.

Además, hemos quedado en que es necesario tener la llave para poder realizar el puzzle, con lo cual vamos a añadir en cualquiera de las condiciones de objeto de la derecha, una restricción de que debamos tener la llave. Para ello marcamos la primera casilla de “El objeto”, rellenamos el campo de la derecha con “oLlave” y en el desplegable elegimos “Lo llevamos”. Además, escribimos el texto que aparecerá en caso de fallo (si no llevamos la llave). Escribimos “Está cerrada con llave.”

Además, dijimos como condición que para poder abrir la trampillas es que debemos estar en ella localidad de la trampilla, así que añadimos la condición de localidad: marcamos “Ligado a localidad” y ponemos “lTrampilla” en el campo “Localidad”. También ponemos “No veo ninguna trampilla.” en el campo “Texto si no se cumple” (que corresponde al texto a mostrar si no estamos en la localidad).

Por último, vamos a comprobar que la trampilla está cerrada, y para ello vamos a comprobar que el flag oTrampillaAbierta tiene como valor cero.Para ello marcamos una de las casillas “El flag”, escribimos fTrampillaAbierta en el campo contiguo, y seleccionamos “es igual a” y escribimos 0 (cero) en la casilla de la derecha.

Pues bien, ya tenemos todas nuestras condiciones, vamos a pasar a las acciones. Cuando abrimos la trampilla deben pasar dos cosas, siendo la primera bastante obvia y la segunda no tanto:

  1. La trampilla debe abrirse, por lo que la salida desde lTrampilla a lAtico debe aparecer.
  2. La trampilla debe ser marcada como “abierta”, por lo que el valor del flag fTrampillaAbierta debe pasar a valer 1. Esto evitará que podamos abrir la trampilla cuando ya lo está.

Pasamos a la siguiente solapa (Acciones) y marcamos la primera casilla “El flag”, escribimos “fTrampillaAbierta” en el campo vacío, seleccionamos “Asignar”, y escribimos “1” en el campo inferior.

Después, marcamos el primer “La conexión”, escribimos ARRIBA en el campo en blanco, seleccionamos “Crear destino” y escribimos debajo “lAtico”.

Pasamos por último a la solapa “Generar”, en la cual sólo tenemos que dar algunos datos finales: El nombre del puzzle (opcional) y el texto que debe salir cuando tenemos éxito.

Ponemos “La trampilla del Atico” en el título, “Usas la llave para abrir la tampilla, dejando abierta la entrada al ático” en el campo de “Texto cuando se tiene éxito”.

Bueno, pues ya lo tenemos todo. Aunque nos quedan las dos opciones comentadas en el capítulo anterior: “Comprobar palabras adicionales para cada opción” y “Comprobar condiciones de flags primero”.

Al no existir palabras adicionales en este puzzle la primera opción es indiferente, en cuanto a la segunda la vamos a marcar, y explicaré por qué: Si marcamos dicha opción se comprobará que el flag fTrampillaAbierta vale cero antes de comprobar si llevamos o no llevamos la llave. En este caso nos interesa, porque no tiene sentido que le digamos al jugador que no lleva la llave si la trampilla está abierta, así que marcamos la opción y de ese modo se comprobará primero si la trampilla está abierta, que si llevamos la llave.

Nota: la condición de localidad siempre se comprueba primero, independientemente de lo que marquemos en dicha opción, solo afecta al orden de comprobación de condiciones de flag y de objeto.

A partir de aquí basta con generar el codigo usando el botón “PLAY”.

Incluyendo el código generado en nuestro juego

Si estáis usando la versión externa, basta con copiar y pegar. Sin embargo, si estáis usando el editor de Windows podéis pulsar el botón derecho del ratón en el punto donde queráis insertar el código, y os aparecerá una opción que os permite pegar directamente el último código generado.

Importante: El generador de código sólo genera código para la tabla de respuestas, por lo que se supone que todo a lo que hagáis referencia debe existir (vocabulario, defines, objetos, flags, etc.)

Este artículo está sujeto a la licencia “Reconocimiento-Compartir bajo la misma licencia 3.0 ó 2.5” de Creative Commons.

 

manuales/codegen/generador_de_puzzles.txt · Última modificación: 2009/04/10 14:03 por csanchez71