CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 20 Jul 2018 02:37

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 8 mensajes ] 
Autor Mensaje
NotaPublicado: 08 Ene 2011 10:19 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Estoy ahora decidiendo qué verbos añadir a la lista de los que no deben de ser utilizados por el parser robusto y la verdad es que me encuentro algo perdida.
Si lo que más me molesta del parser robusto, son sus intervenciones cuando el jugador se equivoca tecleando un verbo, lo cierto es que no debería usarlo en absoluto, pero dado que al parecer hay casos en los que es verdaderamente útil, me gustaría ver algunos ejemplos más allá de los que siguen:

Citar:
>coge el libro
Coges el libro.

>Y ahora la revista
Coges la revista.

>Canta una nana
Cantas una nana.

>Ahora un himno
Cantas un himno.


Este ejemplo parece que deja claro que el verbo coger o el cantar, pueden ser buenos compañeros del parser robusto ¿qué más acciones hay que puedan ser repetitivas para ser consideradas del mismo modo?
Es que me da la impresión de que no son tantas las situaciones en las que el parser robusto puede ser realmente útil, y en ese caso tal vez me sería más cómodo decidir que verbos lo aceptan en vez de qué verbos no lo aceptan.

Me refiero a que preferiría empezar a programar la aventura con un world.getLanguage().setUnguessable(); general y fuera yo quien marcara con un world.getLanguage().setGuessable(); aquellos que me interesaran.


¿Se podría hacer de algún modo?

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 08 Ene 2011 11:24 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5300
Ubicación: Coruña
Lo que tú dices de marcarlos todos como "unguessable" y luego ir marcando como "guessable" se puede hacer, sí:

Código:
world.getLanguage().setAllUnguessable(); //marca todos como unguessable
world.getLanguage().setGuessable("coger"); //marca coger como guessable
world.getLanguage().setGuessable(...);


De todas formas, déjame que intente convencerte de que no lo hagas :D

Hay una regla muy sencilla y que yo creo que sirve bien para decidir qué es guessable y qué unguessable.

- Si un verbo puede usarse como intransitivo, y además, acepta entradas arbitrarias (por ejemplo un "cantar" al que le puedas poner "cantar una de Bisbal", "cantar una de Bustamante" o "cantar asdasd", y dé igual); entonces deberías ponerlo como unguessable, porque si no puede dar problemas con el parser robusto.

- En todos los demás casos (verbos transitivos, o bien verbos que son intransitivos pero que miran el parámetro args y no tragan con cualquier cosa sin más); guessable.

El motivo es que los verbos intransitivos que aceptan entradas arbitrarias son los que dan los problemas con el parsing robusto.

Por ejemplo, si tenemos un verbo así:

Código:
if ( equals ( verb , "estornudar" ) ) { aCreature.write("Estornudas con fuerza.\n"); end(); }


Puede pasar algo como esto:

Código:
> estornudar
Estornudas con fuerza.
> arbir la puerta -> no reconoce "arbir" como verbo -> se adivina por "estornudar arbir la puerta" -> como estornudar traga con cualquier cosa, pasa esto:
Estornudas con fuerza.


Así pues, este verbo tendrías que marcarlo como unguessable para que no te diese ese tipo de problemas.

Pero si el verbo fuese así:

Código:
if ( equals ( verb , "estornudar" ) )
{
  if ( args.length() == 0 )
  {
    aCreature.write("Estornudas con fuerza.\n");
    end();
  }
  if ( args.contains("fuer") )
  {
    aCreature.write("Estornudas tan fuerte que tu estornudo te propulsa hacia el cielo como un reactor, y encuentras el mundo mágico de encima de las nubes. Has ganado.\n");
    end();
  }
}


Pasaría esto:

Código:
> estornudar
Estornudas con fuerza.
> arbir la puerta -> no reconoce "arbir" como verbo -> se adivina por "estornudar arbir la puerta" -> pero estornudar mira args y no coincide con nada de lo que reconoce, así que:
No entiendo...


Así que este verbo podrías marcarlo como guessable sin miedo a que cause problemas (también es cierto que daría igual marcarlo como unguessable porque nadie va a "estornudar a fulanito y a menganito"); pero con la regla fácil que he puesto caería en el lado guessable).

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 08 Ene 2011 11:45 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Hmmmm.. vale, miraré en la lista de verbos intransitivos que hice.

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 08 Ene 2011 11:54 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5300
Ubicación: Coruña
Es mucho más sencillo que eso, simplemente mira cuáles puedes usar como intransitivos en tu aventura y aceptan entradas arbitrarias.

Es decir, mira:

- En el código del mundo,
- En el código del jugador.

Y ahí mira los verbos para los que tengas

Código:
if ( equals(verb,"talycual") )


y no mires los args, y eso es todo.

No necesitas mirar ninguna lista genérica porque para los verbos que realmente no se puedan usar en tu aventura, tanto da ponerlos como guessable o unguessable. Nunca te dan problemas porque la aventura no los va a entender y no va a hacer nada con ellos, con adivinación del parsing robusto o sin ella.

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 08 Ene 2011 20:19 
Desconectado
Implementador
Implementador

Registrado: 09 Jun 2010 14:50
Mensajes: 1655
Ubicación: Argentina
Algunos verbos que pondría en el parsing robusto serían dejar, examinar, abrir y cerrar.


Arriba
 Perfil  
 
NotaPublicado: 08 Ene 2011 20:27 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Fernando Gregoire escribió:
Algunos verbos que pondría en el parsing robusto serían dejar, examinar, abrir y cerrar.


Fernando, creo que ahora mismo lo que hay que decidir a cuales no se aplica el parser robusto, ya que por defecto todos lo llevan.
De todos modos tengo curiosidad ¿por qué dejarías en esos verbos?

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 09 Ene 2011 08:17 
Desconectado
Implementador
Implementador

Registrado: 09 Jun 2010 14:50
Mensajes: 1655
Ubicación: Argentina
jenesis escribió:
Fernando Gregoire escribió:
Algunos verbos que pondría en el parsing robusto serían dejar, examinar, abrir y cerrar.


Fernando, creo que ahora mismo lo que hay que decidir a cuales no se aplica el parser robusto, ya que por defecto todos lo llevan.
De todos modos tengo curiosidad ¿por qué dejarías en esos verbos?

Esos verbos los parsearía así porque son verbos que comúnmente cuando juego aventuras debo repetir en un mismo escenario y/o de forma consecutiva, por ejemplo para empezar a examinar cosas tras oír la descripción de una localidad. Los otros casos son menos frecuentes, aún así, por ejemplo, he visto situaciones donde uno se pone a dejar cosas de forma seguida, por ejemplo para tener menos peso o para despistar (este último caso lo digo por Niño malo). En cuanto a abrir y cerrar es el caso menos frecuentes de todos, sobretodo cerrar; aún así existe el caso de que por ejemplo haya un armario que al abrirlo se encuentre una caja, que al abrir ésta se encuentre un paquete y así, el parser robusto sería útil para reducir las órdenes del jugador. En Inform, al menos con el parseado convencional a pesar de estar acostumbrado, pasaría algo así:
Código:
>abre armario
Abres el armario, descubriendo una caja.
>y ahora la caja
No conozco ese verbo.
>abre caja
Abres la caja, descubriendo un paquete.
>abre paquete
Abres el paquete.

En cuanto a los verbos a los que no debería aplicársele el parsing robusto, los que ahora se me ocurren son agacharse y sentarse; sentarse me podrás decir que es posible que el jugador quiera sentarse en un lado y luego en otro, pero según el modelo físico del mundo se supone que cuando uno está sentado en un lugar debe levantarse para ir a otro, a no ser que se trate (aunque debe ser raro) de una grada digamos con varios escalones en la que el jugador quiera ir subiendo de a poco. Lo último que se me ocurre siempre y cuando no se quiera usar de formas no convencionales es el verbo esperar.


Arriba
 Perfil  
 
NotaPublicado: 09 Ene 2011 09:21 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Fernando Gregoire escribió:
jenesis escribió:
Fernando Gregoire escribió:
Algunos verbos que pondría en el parsing robusto serían dejar, examinar, abrir y cerrar.


Fernando, creo que ahora mismo lo que hay que decidir a cuales no se aplica el parser robusto, ya que por defecto todos lo llevan.
De todos modos tengo curiosidad ¿por qué dejarías en esos verbos?

Esos verbos los parsearía así porque son verbos que comúnmente cuando juego aventuras debo repetir en un mismo escenario y/o de forma consecutiva, por ejemplo para empezar a examinar cosas tras oír la descripción de una localidad. Los otros casos son menos frecuentes, aún así, por ejemplo, he visto situaciones donde uno se pone a dejar cosas de forma seguida, por ejemplo para tener menos peso o para despistar (este último caso lo digo por Niño malo). En cuanto a abrir y cerrar es el caso menos frecuentes de todos, sobretodo cerrar; aún así existe el caso de que por ejemplo haya un armario que al abrirlo se encuentre una caja, que al abrir ésta se encuentre un paquete y así, el parser robusto sería útil para reducir las órdenes del jugador. En Inform, al menos con el parseado convencional a pesar de estar acostumbrado, pasaría algo así:
Código:
>abre armario
Abres el armario, descubriendo una caja.
>y ahora la caja
No conozco ese verbo.
>abre caja
Abres la caja, descubriendo un paquete.
>abre paquete
Abres el paquete.

En cuanto a los verbos a los que no debería aplicársele el parsing robusto, los que ahora se me ocurren son agacharse y sentarse; sentarse me podrás decir que es posible que el jugador quiera sentarse en un lado y luego en otro, pero según el modelo físico del mundo se supone que cuando uno está sentado en un lugar debe levantarse para ir a otro, a no ser que se trate (aunque debe ser raro) de una grada digamos con varios escalones en la que el jugador quiera ir subiendo de a poco. Lo último que se me ocurre siempre y cuando no se quiera usar de formas no convencionales es el verbo esperar.


Muy lógico e interesante, gracias por la aportación. :)

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 8 mensajes ] 

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
cron
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM