Una breve disquisición aderezada con una sesión de 69,105 Keys, de David Welbourn.
Desambiguar.
La palabra es fea y retorcida, pero más sus consecuencias: un infierno para el creador y un suplicio para el jugador.
El asunto creo que es meridianamente conocido y no necesita explicación alguna. Básicamente: varios objetos con nombres parecidos, todos diferentes, al alcance del jugador. Al actuar sobre ellos el parser debe proveer un mecanismo para que el jugador pueda referirse a uno de ellos individualmente. Un ejemplo típico sería una taza de cristal y otra de cerámica, si tecleamos “coger la taza” habría que especificar de alguna manera si la que queremos es la de cristal o la de cerámica.
La cosa se complica si el elemento común es de un tipo diferente en la estructura sintáctica de los elementos a desambiguar. Caso, por ejemplo, de un muñeco de cera frente a la cera de depilar. Si el parser es lo suficientemente puntilloso sólo aceptará como “cera” la de depilar, pero en los parsers popularizados en los últimos tiempos se admite generalmente referirse a un objeto por cualquiera de las palabras que lo identifican, de modo que “coger cera” nos llevará a un nuevo conflicto de elección.
Lo peor del asunto es que, si bien la mayoría de las herramientas proporcionan mecanismos para detallar la forma de reconocimiento de estos objetos emparentados, el carácter impredecible del relato interactivo puede provocar que varios objetos sin tratar coexistan, por efecto de los manejos del jugador, en el mismo lugar sin haber sido contemplado por el autor. E incluso podría darse el caso de que, por un defecto en el mecanismo del parser para solucionar una ambigüedad (generalmente mediante preguntas al jugador), se caiga en un ciclo sin fin de forma que uno o varios de los objetos sea imposible manipularlos.
>Examina el cuello
¿Te refieres al cuello o al collar en el cuello?
> al cuello
¿Te refieres al cuello o al collar en el cuello?
> al cuello leches!!!
¿Cual es la solución más limpia a este problema? Lo más habitual es que el parser, ante la duda, pregunte por algún aspecto diferenciador. Esto plantea dos problemas: por una parte el riesgo, si no está correctamente implementado, de llegar a la absurda situación anterior. Y por otra (aunque esto va en gustos) puede suponer un atentado contra la inmersión, al exigir el parser de forma intrusiva una información adicional que debería poder obtener bien por el contexto o bien mediante una forma más imaginativa integrada dentro de la propia naturaleza del relato.
Y algo de eso ha hecho David Welbourn en su 69,105 Keys. Aunque más que un relato se trata de una de esas pequeñas aventuras-broma que, al estilo del León de Nemea de Adam Cadre (no perderse el artículo de Ruber Eaglenest en Literactiva), llevan hasta el absurdo algún aspecto del medio, quizá como mero entretenimiento jocoso, pero que pueden tener su utilidad por la conversación que generan.
Después de una serie de aventuras –demasiado insólitas para relatar, en palabras del autor-, nuestro héroe llega a la cámara acorazada del “Conde”. No sabemos de la condición ni los condados que regenta el referido, pero un sutil juego de palabras (conde en inglés es count=contar) nos da una pista de lo que nos vamos a encontrar. El objetivo es más bien sencillo, abrir la puerta de la cámara y acceder a los tesoros que almacena. Por si fuera poco hemos tenido la tremenda suerte de encontrarnos con las llaves en la propia antecámara que da acceso al tesoro. Trabajo sencillo, salvo que… bueno, hay 69,105 llaves para elegir. Para los más fetichistas, aclarar que 69,105 fue una especie de consigna usada por Infocom en muchos de sus juegos para indicar cualquier cantidad grande de cosas, y que tiene algunas propiedades curiosas.
Primer intento (traducción libre):
> abrir la cámara con las llaves
(primero cogiendo las llaves)
No le ves sentido a coger ninguna de esas llaves, excepto la que necesitas: la llave a la puerta de la cámara.
Bueno, vale, examinemos las llaves:
> examinar las llaves
No ves nada especial en las llaves.
Excepto, por supuesto, que las llaves vienen en una amplia gama de colores chillones. Los mangos, esto es, la parte ancha, están pintados en varios colores. Los ejes, por supuesto, no están pintados.
Uhmmm, no sé si me queda claro, quizá sea cosa de probar colores. Examinemos de nuevo:
> examinar las llaves
No ves nada especial en las llaves.
Perdón, es mentira. Mirando los ejes, puedes ver que están hechos de diferentes metales. Hierro, bronce y acero, y más. Montones de metales.
Vaya, otra propiedad. Concretemos:
> examinar las llaves rojas de hierro
No ves nada especial en las llaves rojas con eje de hierro.
Un momento. Acabas de darte cuenta que los mangos de las llaves tienen diferentes formas. Las hay con formas ovales, circulares, cuadradas, etc (Estas llaves fijo que tienen un montón de propiedades diferentes, ¿no?)
¡Aarrggg! Más propiedades. Pues sí, en total 7 propiedades: tamaño, forma, color, marca, tipo de metal, estilo del lomo, y por si fuera poco, si está o no astillada. Cada una con su gama de valores posibles. Total: 69, 105 llaves. No está mal como ejercicio de desambiguación ¿no?
> examinar los metales
¿Quién sabía que las llaves estaban hechas de tantos tipos de metal? Puedes ver llaves de plata, llaves de cobre, llaves de acero, llaves de hierro, llaves de oro, llaves de nickel, llaves de bronce, llaves de latón, llaves de cromo, e incluso de aluminio aquí.
A estas alturas está claro que se trata de un puzzle. Examinando la puerta de la cámara se nos aclara que sólo una llave abre la cámara (eso era de cajón), pero que además se trata de la llave que sólo tiene una copia. Es decir hay una llave, y sólo una, que no tiene en común todas sus propiedades con las demás. Además, se nos informa que podemos contar llaves.
> contar llaves rojas de hierro grandes
Ves 150 llaves grandes con ejes de hierro.
> contar llaves rojas de hierro grandes astilladas planas de la marca Borden cuadradas
Ves 2 llaves rojas de hierro grandes astilladas planas de la marca Borden cuadradas.
Pues esta no vale, ya que hemos indicado las siete propiedades y hay dos copias.
En fin, llegados a este punto no hay mucho más que decir. La aventura no se puede tomar muy en serio, como se ha visto, pero es interesante el ejercicio de implementación. El parser evita la pregunta de desambiguación habitual sustituyéndola por una frase más o menos aclaratoria, en relación al nivel de detalle que se ha introdocido y a los detalles que nos faltan por indicar en dos niveles, el de la propiedad básica y el del valor de esa propiedad. En este caso es obligado, o nos encontraríamos con una pregunta de hasta 69,105 términos, y además el ejemplo es deliberadamente absurdo.
Por cierto, para quien tenga curiosidad por saber si se puede resolver el enigma sin probar miríadas de llaves: la respuesta es sí, entre otras cosas porque ¡el juego hace trampa! ¡No hay una sóla llave única! Cómo revelar la trampa lo dejo como ejercicio al lector, si tiene curiosidad.
La producción comercial tampoco se libraba de este molesto efecto. En esta vetusta aventura de Legend, ni siquiera sus impresionantes efectos multimedia (para la época, claro) consiguen mitigar la frustración de un problema de desambiguación.
Enlaces:
- Información y descarga en IFDB.
- Jugar online via Parchment.

En un artículo como este, hay una ambiguedad (no podía ser de otra forma). Dices:
“la llave que sólo tiene una copia”
Esa frase, en realidad significa que hay 2 llaves iguales que son la solución, cuando lo que querías decir es que
“la llave que es única y no tiene copia”
Y esto no es por ser pijotero, es que no entendía el párrafo correspondiente que contenía la ambiguedad.
Chao.
Touché!
La verdad es que la ambigüedad, en Inform, es un tostón. Puede dar al traste con toda la aventura, romper toda la ambientación, mandar al garete la credibilidad de los personajes… vaya, que es un tema que me es muy cercano y temido. Odio cuando Inform dice eso de, por ejemplo:
“¿A qué te refieres, al cajón o al mesa?
- al cajón
No entiendo eso que dices.
No había dicho nada de este post. ¡Qué buen puzzle!
Uno que merecería la pena resolver.
Aunque hay que recordar una obra-puzzle que tenemos en la comunidad hispana:
Abalánzate
http://wiki.caad.es/Abal%C3%A1nzate
Que en su momento (y me temo que aún hoy en día, visto el revuelo de las cerillas) era un prodigio de calidad del desambiguador. Merece la pena echarle un vistazo, una pena que no parezca existir copia de su código fuente -esta calidad de desambiguación debería formar parte de la librería base de todos los Inform.
El problema de desambiaguación en inform no es tal, si se programa correctamente.
Por un lado ya se publicó una modificación para evitar la característica por defecto (bajo mi punto de vista pésima) de que adjetivos puntuaban igual que nombres e incluso al margen de los nombres. Con esto solucionamos el ejemplo del “cuello” versus el “collar del cuello”.
Por otro lado, Zak proporcionó hace tiempo otra función extra para desambiaguar otorgando prioridad por puntuación a unos objetos sobre otro en caso de empate. Esto solucionaría el caso del “cuello” versus el “cuello de la camisa”.
Entonces, estos problemas de desambiaguación y bucles infinitos no pueden achacársele al parser, porque soluciones hay.
PD: no sé por qué he escrito desambiaguar en lugar de desambiguar, ¡y además tantas veces!
La solución que da el AGE a este tema es que los objetos tienen nombres con distintas prioridades. Por ejemplo, una llave roja y una llave azul tendrían los nombres “llave roja” y “llave azul”, respectivamente, con alta prioridad, y ambas compartirían el nombre “llave” pero con más baja prioridad.
Resultados:
coger la llave roja -> coges la llave roja.
coger la llave azul -> coges la llave azul.
coger las llaves -> coges ambas.
coger la llave -> coges una cualquiera. Si el jugador hubiese querido coger una concreta, habría especificado, ¿no?
Personalmente me gusta más esta solución que las preguntas de desambiguación, que creo que añaden más problemas de los que quitan; pero para gustos colores.
Al, el último punto me parece un tanto controvertido.
En inform eso funciona así cuando los objetos son indistinguibles, pertenecen a una clase de -por ejemplo- balas, flechas o monedas. Coges una cualquiera, da lo mismo.
Pero cuando hay diferencia… imagina que tenemos tres palancas, roja, verde y amarilla, una de las cuales pone en funcionamiento una trampa. Si escribimos “mover palanca” podríamos activar la fatídica. Y qué decir de “dar billete” cuando tenemos un billete de 5 y otro de 100.
Cuando los objetos, pese a compartir nombre, tienen utilidades y consecuencias diferentes, considero apropiado que se lance la pregunta de desambiguación, por el propio interés del jugador.
[...] parsing, Contribuciones A raíz de este post de Mastodon sobre la ambigüedad, voy a escribir dos artículos sobre cómo tratarla en Inform6.Aviso que el güeno güeno es el [...]