En la sección anterior, hemos visto algunos conceptos básicos de PUCK y hemos definido un mundo rudimentario con un par de habitaciones y caminos. Por el momento, lo único que este mundo permite hacer al jugador es desplazarse de una habitación a otra a través de los caminos; pero la interacción con el mundo no va mucho más allá. Por ejemplo:
> mirar
Te encuentras al este del gran río Pecos. Hay muchos árboles bajos a tu alrededor. Un precario puente de madera lo atraviesa, hacia el oeste.
> mirar los árboles
¿Qué pretendes mirar?
> mirar el puente
¿Qué pretendes mirar?
Parece que una primera característica deseable para mejorar la interacción del jugador con el mundo sería que se pudiesen mirar los objetos que aparecen mencionados en las descripciones. Así, nos gustaría que cuando el jugador pusiese “mirar los árboles”, apareciese una descripción de los mismos para dar ambientación. La forma más sencilla de conseguir esto en AGE mediante las llamadas descripciones de componentes o descripciones extra. Las descripciones de componentes pueden añadirse a casi cualquier objeto del mundo (incluyendo habitaciones, personajes, cosas, etc.) y siguen siempre el mismo sistema, que es una extensión del que seguían las descripciones convencionales que hemos visto.
Así, si en la sección anterior veíamos que las descripciones convencionales eran realmente listas de descripciones, cada una de las cuales tenía asociada una condición (que por el momento habíamos dejado en blanco para que se mostraran siempre) y un texto; las descripciones extra también serán listas de descripciones; pero cada una tendrá asociada una serie de nombres, una condición y un texto. Si añadimos una descripción extra a una localidad y el jugador teclea “mirar <algo>” (o alguna frase sinónima) en ella, entonces se mostrará la descripción si ese <algo> coincide con uno de los nombres y además la condición asociada se cumple.
Vamos a hacer que el jugador pueda mirar los árboles y el puente desde la localidad oeste. Para ello, hacemos click sobre esta localidad en el editor gráfico, y nos aparece su panel de objetos. Debajo de la sección de descripciones convencionales que ya tenemos cubierta, vemos la sección “Descripciones de componente”. En el campo “Nombres de ref. sep. por comas” tecleamos, sin las comillas: “árbol,árboles”; y en el campo “Descripción” ponemos lo que queremos que le aparezca al jugador cuando mire los árboles, como puede ser “Son unos árboles muy verdes y muy bonitos.” Como en ocasiones anteriores, dejamos el campo “Condición” vacío, ya que esta descripción no dependerá de ninguna condición externa, y pulsamos el botón “Añadir”. En la lista de descripciones extra veremos algo como “árbol,árboles: Siempre: Son unos árboles muy verdes y muy bonitos”, donde se muestran los nombres y la descripción; y la palabra “Siempre” indica que la descripción va a mostrarse siempre que el jugador mire, sin depender de ningún otro factor.
Lo mismo podemos hacer con el puente si añadimos una descripción extra con nombre “puente” y descripción “Es un precario puente de madera.” o cualquier texto similar. Si queremos que el puente se vea desde las dos localidades, como sería lógico, tenemos que poner su descripción extra en ambas.
Las descripciones de componentes proporcionan una primera manera de hacer el mundo más interesante y llegar un poco más allá de las habitaciones y caminos; pero tienen sus limitaciones. Las descripciones de componentes nos permiten definir elementos del mundo que los jugadores pueden mirar; pero la posible interacción con ellos se reduce sólo a eso: a mirar.
A la hora de crear un juego decente, esto seguramente no sea suficiente. Nos interesan objetos físicos con los que los jugadores puedan interactuar de más maneras: cogerlos, llevarlos en su inventario, dejarlos en alguna otra parte, y seguramente hacer más cosas dependiendo del tipo de objeto que sea. Este tipo de objetos físicos son lo que en AGE denominamos “cosas”.
Para probar las cosas, vamos a crear una piedra que el jugador pueda al menos coger, llevar y dejar. En capítulos posteriores del tutorial veremos cómo hacer cosas más complejas (por ejemplo que puedan abrirse y cerrarse, llevar otras cosas dentro, etc.); pero por el momento empezaremos por lo básico.
Al contrario que las descripciones extra, las cosas son objetos de pleno derecho en AGE, y tienen una representación gráfica en el editor del PUCK. Para añadir una cosa, utilizamos la herramienta “añadir cosa”:
A la hora de utilizar esta herramienta, procedemos de manera análoga a cuando habíamos añadido un personaje al mundo: hacemos click sobre el icono de “añadir cosa”, movemos el cursor por el editor gráfico hasta dejarlo en la ubicación deseada para el objeto (que no debe coincidir con la habitación en la que queremos ponerlo; aunque sí es conveniente que esté cerca), y hacemos click sobre esa ubicación.
Para colocar la cosa en una localidad, igual que habíamos hecho con el personaje, creamos una relación estructural: hacemos click en la herramienta “crear relación estructural”
y a continuación en la habitación y en la cosa, por ese orden. Esto creará una relación “contiene” entre habitación y cosa que indica que la cosa está situada en dicha habitación.
Una vez que tenemos nuestra cosa creada y vinculada a una habitación, hacemos click en su icono del editor gráfico para ver su panel de objeto. Los paneles de objeto de las cosas son algo más complicados que los de las habitaciones; pero algunos de sus componentes nos resultarán familiares, y otros los aprenderemos fácilmente.
En primer lugar podemos ver el campo para el nombre único, que funciona igual que el de las habitaciones, sirviendo para distinguir internamente el objeto. En este punto es conveniente aclarar que los nombres únicos deben ser realmente únicos, es decir, no debe haber en un mundo dos objetos con el mismo nombre único, ni siquiera si son objetos de tipos completamente distintos. Esto quiere decir que no debes ponerle a una cosa un nombre que hayas utilizado para, por ejemplo, una habitación. A nuestro objeto podemos llamarle “Piedra”.
Bajo el nombre único, debajo de unos campos “Heredar de:” y “Ejemplo de:” que no veremos por el momento, podemos ver un campo de “Género”, que nos da a elegir entre masculino y femenino. El género de una cosa es el género que tiene en castellano el nombre de esa cosa, y se utiliza para construir los textos del juego. Si pusiésemos que la piedra es “Masculino”, podríamos obtener textos en el juego como “aquí hay un piedra” o “coges el piedra del suelo”, así que es importante cubrir bien este campo si queremos un mundo que hable decentemente el idioma.
Debajo del género, podemos ver unos campos para el “Peso” y el “Volumen” de la cosa que, como es imaginable, representan el peso y el volumen que tiene el objeto en el mundo virtual que estamos creando. Aunque se pueden utilizar para más cosas, la consecuencia más inmediata de estos valores es que un personaje no podrá llevar consigo objetos que superen el máximo peso y volumen que pueda acarrear. Si en tu juego no quieres prestar atención a esos detalles, simplemente puedes dejar el peso y el volumen de todos los objetos a cero. En este caso podemos poner, por ejemplo, peso y volumen 5.
Después de los campos correspondientes al peso y el volumen, hay en el formulario dos opciones llamadas “Contenedor” y “Fijo en el sitio”. La opción “Contenedor” puede marcarse para representar cosas que puedan tener otras cosas dentro, como una bolsa o un baúl. 1) La opción “Fijo en el sitio” denota un objeto que no se puede coger, como una farola o una montaña; todas las cosas que no tengan esta opción marcada serán por defecto susceptibles de ser cogidas por los jugadores. En el caso de la piedra, lo lógico será no marcar ninguna de las dos opciones, ya que una piedra no puede contener otras cosas en su interior, y queremos que el jugador la pueda coger.
A continuación están las descripciones y las descripciones de componentes, que se rellenan de la misma manera que en las habitaciones. Las descripciones en este caso aparecerán cuando un jugador ponga “mirar <nuestra cosa>”, y funcionarán tanto si el jugador lleva consigo la cosa como si simplemente está en la misma localidad. Las descripciones de componentes se pueden usar para describir partes o características de los objetos: por ejemplo, si nuestro objeto es una linterna, podemos usar una descripción extra para describir el botón de encendido de la linterna. Si ponemos como nombre para la descripción de componente “botón”, y nuestra linterna respondía al nombre “linterna”, el jugador podrá ver la descripción extra tecleando “mirar el botón de la linterna”. Nosotros nos limitaremos a añadir una descripción convencional para la piedra, algo como: “Es una piedra estándar, de las de toda la vida. Podrías abrir cabezas con ella.”
Todo lo mencionado está en la ficha “General” del panel de objeto, que es la que hemos visto hasta ahora en todos los objetos que hemos creado. Sin embargo, puede que ya te hayas fijado en que algunos de ellos tienen más fichas aparte de ésta, y es el caso de nuestra recién creada piedra. Ahora vamos a ir a la segunda ficha, llamada “Nombres”. Cubrir esta ficha es esencial para crear una cosa, porque nos permite definir el nombre o nombres de dicha cosa.
Hasta ahora, en la ficha “General” del panel habíamos visto el “Nombre único” de la cosa, que nos servía para identificarla. Pero, como ya mencionamos al hablar de habitaciones, los nombres únicos de los objetos sólo se usan para que los distinga el creador del juego y el propio juego; sin que se muestren en ningún caso al jugador. Por lo tanto, tendremos que definir otros nombres (que pueden coincidir o no con el nombre único) para mostrar al jugador y para que el jugador pueda interactuar con la piedra.
En la ficha “Nombres” podemos ver espacio para poner cuatro tipos de nombres: “Nombres singulares para mostrar”, “Nombres plurales para mostrar”, “Nombres singulares de referencia” y “Nombres plurales de referencia”.
Los dos primeros tipos son los nombres que se mostrarán al jugador, y funcionan exactamente igual que las descripciones. Si queremos que el objeto se llame siempre de una manera determinada y ya está, basta con que tecleemos su nombre en el campo “Nombre:” de “Nombres singulares para mostrar” y pulsemos “Añadir”. En nuestro caso, si añadimos de esta manera el nombre “piedra”, esto se traducirá en el juego a textos como “aquí puedes ver una piedra”, “coges la piedra”, “dejas la piedra”, “llevas una piedra”… Si quisiésemos que el nombre de un objeto cambiase según circunstancias del juego (por ejemplo, la piedra podría convertirse en una “piedra mojada” si le echásemos agua por encima), tendríamos que añadirle más nombres singulares y asociarles diferentes condiciones. Nosotros nos conformaremos con un nombre estático, así que añadimos “piedra” sin especificar condición alguna.
Los “Nombres plurales para mostrar” se utilizan para mostrar al jugador si hay varios objetos iguales en un mismo sitio. Por ejemplo, para que el juego pudiese construir frases como “llevas dos piedras” o “aquí hay tres piedras”, tendríamos que añadir “piedras” como nombre plural. Si no va a haber varios objetos iguales en el juego que se puedan agrupar de esta manera, como es nuestro caso, podemos dejar los nombres plurales en blanco. Más adelante veremos cómo se pueden crear varios objetos idénticos que se puedan agrupar, y utilizaremos estos nombres plurales.
Los “Nombres singulares de referencia” son aquellos nombres por los cuales el jugador se puede referir al objeto. Estos nombres no se muestran en la aventura; pero serán los que el sistema utilice para saber que el jugador se ha referido en su orden a un objeto dado. Como al jugador puede ocurrírsele referirse a una cosa usando una palabra que no sea el nombre que se le muestra en pantalla, suele ser recomendable incluir sinónimos en los nombres de referencia. Por ejemplo, en este caso podemos añadir los siguientes nombres de referencia para la piedra: “piedra”, “roca” y “pedrusco”. Después de teclear cada nombre en el campo “Nombre”, pulsamos el botón “Añadir” para colocarlos en la lista, o podemos pulsar “Cambiar” para modificar alguno si nos hemos equivocado. De este modo, el jugador podrá referirse a la piedra mediante comandos como “coger piedra”, “dejar roca” o “mirar pedrusco”, y todos serán entendidos como referidos a nuestro objeto piedra.
En los “Nombres plurales de referencia” pondremos los nombres por los cuales el jugador se puede referir a un conjunto de objetos que incluya éste. Normalmente, tendremos aquí las versiones de los nombres singulares de referencia: en este caso “piedras”, “rocas” y “pedruscos”. De esta forma, si hay varias piedras (todas con esos nombres de referencia) y el jugador pone “coger las piedras” o “coger todas las rocas”, su orden se ejecutará sobre todas ellas. Un truco que suele venir bien, y podemos hacer en este caso, es poner como último nombre plural de referencia “todo”. De esta manera, cuando el jugador ponga “coger todo”, su orden actuará sobre todos los objetos que tengan ese nombre plural de referencia.
Una vez rellenados de este modo los nombres para mostrar y de referencia de nuestra piedra, podemos utilizar la herramienta “Ejecutar mundo” para probar el objeto que hemos creado. Deberíamos ser capaces de hacer estas cosas:
> mirar
Te encuentras al este del gran río Pecos. Hay muchos árboles bajos a tu alrededor. Un precario puente de madera lo atraviesa, hacia el oeste.
Aquí hay una piedra.
> mirar los árboles
Son unos árboles muy verdes y muy bonitos.
> mirar la piedra
Es una piedra estándar, de las de toda la vida. Podrías abrir cabezas con ella.
> coger la roca
Coges la piedra.
Es una piedra estándar, de las de toda la vida. Podrías abrir cabezas con ella.
> inventario
Tienes una piedra.
> dejar todo
Dejas la piedra.
> inventario
No tienes nada.
> mirar
Te encuentras al este del gran río Pecos. Hay muchos árboles bajos a tu alrededor. Un precario puente de madera lo atraviesa, hacia el oeste.
Aquí hay una piedra.
Como hemos visto, los nombres de referencia nos determinan cómo el jugador se puede referir a una cosa. Pero a veces podría darse el caso de que varias cosas compartan un mismo nombre de referencia. Por ejemplo, supongamos que hemos definido las siguientes dos cosas:
En este ejemplo, hemos puesto “piedra” como nombre de referencia de ambas piedras para que cuando el jugador encuentre una de ellas pueda simplemente teclear comandos como “coger piedra” y funcionen, sin especificar el color:
Aquí hay una piedra blanca.
> coger la piedra
Coges la piedra blanca.
Sin embargo, ¿qué pasará si el jugador teclea “coger la piedra” en una habitación donde está tanto la piedra blanca como la negra? ¿Cuál de ellas cogerá?
La respuesta es que los nombres de referencia tienen una prioridad correspondiente a la posición que ocupan en la lista de nombres de referencia de PUCK (posición más alta quiere decir mayor prioridad). Cuando un jugador teclea una orden, las palabras que siguen al verbo se comparan con los nombres de referencia de los objetos que están al alcance del jugador, seleccionándose aquellos nombres de referencia que aparezcan mencionados en las palabras tecleadas. En el caso de que haya un único nombre de referencia seleccionado de este modo (o varios, pero todos pertenecientes a la misma cosa), la acción se ejecuta sobre la cosa que tiene ese nombre. En el caso de que se seleccionen nombres de referencia de diferentes cosas, la acción se ejecuta sobre aquélla a la que perteneza el nombre de referencia de mayor prioridad (es decir, el que aparece más arriba en la lista) de entre los seleccionados. En el caso de que haya un empate a prioridades, se ejecuta sobre un objeto cualquiera.
Por ejemplo, si en el caso de las piedras blanca y negra hemos introducido los nombres de referencia en el orden especificado arriba, las prioridades para la piedra blanca serían:
Y para la piedra negra serían:
Si el jugador teclea “coger la piedra blanca”, en la orden tecleada aparecen nombres de prioridad 1 y 3 de la piedra blanca (aparece “piedra blanca”, de prioridad 1, pero también aparece “piedra”, de prioridad 3, como parte de la cadena). Sin embargo, de la piedra negra, sólo aparece un nombre de prioridad 3 (“piedra”). Como la prioridad 1 le gana a la prioridad 3, el jugador cogerá la piedra blanca.
Si el jugador teclea “coger el pedrusco negro”, en la orden aparece un nombre de prioridad 4 de la piedra blanca (“pedrusco”) y nombres de prioridad 2 y 4 de la piedra negra (“pedrusco negro” y “pedrusco”). Como la prioridad 2 es mayor que la prioridad 4, el jugador cogerá la piedra negra.
¿Qué pasa si el jugador teclea simplemente “coger una piedra”? En este caso para ambos objetos se seleccionaría un nombre de prioridad 3 (“piedra”). Como hay empate a prioridades, el jugador cogería una piedra cualquiera: se supone que ambas se ajustan por igual a la orden dada por el jugador, así que si sólo ha especificado “coger una piedra”, debería servirle cualquiera de los dos. Si por algún motivo quisiéramos asegurarnos de que con esta orden el jugador siempre cogiese una piedra dada (por ejemplo, la blanca); tendríamos que hacer que el nombre de referencia “piedra” tuviese más prioridad en esa piedra que en la otra.
En general, para que este sistema de prioridades para los nombres de referencia nos conduzca a una interpretación natural de las órdenes de los jugadores, lo único que tendremos que hacer es poner los nombres más específicos por encima de los más genéricos (tal y como hemos hecho en el ejemplo de la piedra). Entrando más en detalle, lo que necesitamos es que si un nombre de referencia es específico de un objeto, tenga más prioridad que los nombres más genéricos de otros objetos que puedan entrar en conflicto con ese nombre específico. Por ejemplo, si el nombre específico “piedra blanca” tuviera prioridad 3 en la piedra blanca y el nombre genérico “piedra” tuviera prioridad 1 en la piedra negra, tendríamos problemas, porque al “coger la piedra blanca” ganaría la piedra negra al tener el nombre genérico “piedra” con más prioridad que el nombre específico “piedra blanca” de la piedra blanca. Sin embargo, casos como éste prácticamente nunca se podrán dar si seguimos la norma general de que, dentro de cada cosa, los nombres específicos aparecen antes que los genéricos. Siguiendo esta simple regla, normalmente no hará falta acordarse de cómo funciona el sistema de prioridades salvo para casos avanzados en los que se quiera tener un control muy detallado de las maneras de referirse a cada objeto.
Nótese que, si en lugar de nombres singulares de referencia hablamos de nombres plurales de referencia, con estos últimos la acción no se ejecutará sobre un solo objeto, sino con todos los que tengan un nombre plural de referencia seleccionado. Es decir, si las dos piedras del ejemplo tienen como nombre plural de referencia la palabra “piedras”, entonces la orden “coger las piedras” hará que el jugador coja ambas, independientemente de las prioridades.