CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 12 Jul 2020 23:55

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 17 mensajes ]  Ir a página 1, 2  Siguiente
Autor Mensaje
NotaPublicado: 12 Jun 2010 20:34 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 13 Mar 2004 12:40
Mensajes: 2439
Podría haber publicado esto en SPAC, pero prefiero hacerlo aquí, de momento, y si acaso dejar para el SPAC una revisión futura. A ver qué os parece.

Introducción

En este artículo explico brevemente las características de un párser mínimo -muy limitado a la hora de crear aventuras, pero también muy fácil e intuitivo de manejar-. Se trata de un programa con el que cualquiera podría ponerse a hacer una aventura sin necesidad no ya de aprender un lenguaje de programación, sino ni siquiera de estudiar un manual de uso.

Los motivos por los que creo necesario un parser así son:

1. Uno de los grandes atractivos de nuestro género siempre ha sido la posibilidad de ser no solo jugadores, sino también autores. Una gran parte de los aficionados confiesan que lo que más les gusta es escribir relatos interactivos, antes que jugarlos.

2. En los años 80 casi todos los usuarios de ordenadores tenían nociones de programación. ¡El “sistema operativo” de las máquinas de 8 bits era un lenguaje de programación! En la época actual los únicos que programan son los programadores, la mayoría de usuarios no han escrito una línea de código en su vida. Nadie entendería que para hacer una animación de video, por ejemplo, hubiese que estudiar un lenguaje de programación. El software actual es intuitivo, se aprende usándolo, incluso hay programas intuitivos para crear otros tipos de juegos más complejos que las aventuras conversacionales. Si no se ha hecho un parser 100% intuitivo, en español, no es porque no sea posible, sino por inercia.

Descripción

Abrimos el programa y lo primero que se nos pide es rellenar una ficha con el Título de la aventura, el nombre del autor, y un texto introductorio. Además podemos incorporar un archivo de sonido, una imagen o una animación. Es lo que aparecerá en la pantalla de presentación.

Nos encontramos con un menú con las siguientes opciones:

Localidades
Objetos
Personajes
Mapa
Eventos
Colores y fuentes

Localidades
Vamos al menú de localiades. Aparece una lista vacía y la opción “añadir localidad”. Se abre una ventana donde podemos incluir el nombre y la descripción de la localidad. Además hay una serie de características de localidad: abierto / cerrada; luz / oscura;
Podemos asociar a cada localidad un dibujo, sonido o animación. Al guardar se suma a la lista. Si pulsamos en el nombre de una localidad ya hecha, podemos modificarla.

Objetos
En el menú de objetos aparece una lista vacía y la opción “añadir objeto”. Al pinchar allí se abre la ventana donde podemos incluir el nombre y la descripción del objeto. Escogemos aquí la localidad o personaje inicial del objeto. Si no se selecciona nada, aparecerá en el inventario del jugador.

Además existen unas “características de objeto” que se pueden completar: contenedor / ¿tiene luz? / puntos de golpe
Podemos asociar a cada objeto un dibujo, animación y sonido que se activaran al examinarlos.

Personajes
Casi igual que el menú de objetos. Cambian las características a escoger: Puntos de vida / ¿se le pueden dar objetos? / ¿personaje de decorado o móvil?
Hay un menú además para establecer rutas de personajes. Se pueden crear distintas rutas seleccionando por qué localidades se quiere que se mueva y en qué turnos. Podemos asociar a cada personaje un dibujo, animación y sonido que se activaran al examinarlos o hablar con ellos.

Mapa
Es donde se crea el mapa de conexiones. A base de pinchar y arrastrar creamos un mapa con las conexiones básicas: N,S,E,O, ARRIBA, ABAJO, ENTRAR y SALIR.

Eventos
Este es el menú más complicado -creo- de plantear. De hecho, hasta aquí todo lo propuesto ya se encontraba en Visual Sintac -y más completo-.
Simplemente hago un esbozo del tipo de acciones que se podrían hacer desde ahí. El menú de eventos es donde se articulan los “puzzles” de la aventura.

Pinchamos en “crear evento” y nos aparecen una serie de opciones:

Localidad
Personaje
Objeto
Turno
Acción

Evento resultante
Texto resultante

En cada condición se pueden seleccionar uno o varios items, al seleccionar esos items se nos abren ventanas donde también seleccionamos las propiedades de los mismos

Ejemplo 1.

Localidad: sala roja (cerrada)
Personaje: jugador
Objeto: llave roja (jugador)
Turno: cualquiera
Acción: abrir puerta con llave

Evento resultante: sala roja (abierta)
Texto resultante: Abres la puerta con la llave roja.

Ejemplo 2.

Localidad: parque
Personaje: jugador, vagabundo
Objeto: manzana (jugador), billete de metro (vagabundo)
Turno: cualquiera
Acción: dar billete a vagabundo

Evento resultante: manzana (vagabundo), billete de metro (jugador)
Texto resultante: El vagabundo toma la manzana agradecido y te da un billete de metro.

Ejemplo 3

Localidad: cualquiera
Personaje: jugador
Objeto: manzana (jugador)
Turno: cualquiera
Acción: comer manzana

Evento resultante: ninguno
Texto resultante: ¡Puaj! Tiene un gusanito.

Ejemplo 4

Localidad: parque
Personaje: jugador
Objeto: bolsa de patatas fritas (jugador)
Turno: cualquiera
Acción: comer patatas

Evento resultante: bolsa de patatas fritas (nadie), vida + 2
Texto resultante: Te encuentras mucho mejor.


Ejemplo 5

Localidad: cualquiera
Personaje: jugador, niña
Objeto: cualquiera
Turno: cualquiera
Acción: hablar con niña

Evento resultante: piruleta (jugador), niña (localidad:ninguna)
Texto resultante: Hablas con la niña. Es muy simpática, te da una piruleta chupeteada y se va.

Ejemplo 6

Localidad: salón
Personaje: jugador, perro
Objeto: hueso (jugador)
Turno: <6
Acción: dar hueso a perro

Evento resultante: hueso (perro), perro (localidad: jardín)
Texto resultante: El perro acaba de comer, así que no parece interesado por tu hueso.

Ejemplo 7

Localidad: salón
Personaje: jugador, perro
Objeto: hueso (jugador)
Turno: >5
Acción: dar hueso a perro

Evento resultante: hueso (perro), perro (localidad: jardín)
Texto resultante: El perro parece coge el hueso y se va al jardín moviendo la cola.

Colores, efectos y fuentes

Aquí es donde se pueden seleccionar opciones generales como colores, fuentes, música de fondo y otras.



Y con esto ya podemos hacer aventuras. Hay muchas cosas que no se pueden hacer, pero seguro que habría muchos autores que podrían sacar un gran partido a algo así y que, sin embargo, no están por la labor de aprender a programar un parser. Y también es cierto que el parser básico se podría ir mejorando con nuevas opciones, como conversaciones más complejas, combates, etc.


Arriba
 Perfil  
 
NotaPublicado: 13 Jun 2010 05:05 
Desconectado
Dragón
Dragón
Avatar de Usuario

Registrado: 02 Abr 2010 17:03
Mensajes: 124
Pues me recuerda mucho a ADRIFT, excepto por lo del lenguaje Español.


Arriba
 Perfil  
 
NotaPublicado: 13 Jun 2010 10:08 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
Pues desde luego no sería muy difícil crear una versión de PUCK que hiciera esto. Sería cuestión de:

- Añadir la opción de poder asociar un gráfico+sonido a una localidad mediante el formulario (en vez de usando código), que sería una opción interesante para el PUCK en general.
- Añadir el formulario para generar eventos. Sería muy sencillo hacer un formulario como el que has planteado que generara código AGE. La complejidad principal que tiene esto y que hace que no esté metido en PUCK en general es que es complicado gestionar la interacción de estos eventos generados con el código que se introduzca "a mano". Pero si estamos suponiendo que en esta versión modificada no se introduciría código a mano porque la usaría gente con alergia a la programación, sería muy sencillo.
- Quitar un montón de cosas de la interfaz. Por ejemplo, hacer que todos los distintos nombres de los objetos fuesen el mismo, que las descripciones no fueran dinámicas, que las propiedades no tuvieran temporizador, etc. etc.

Con eso ya prácticamente estaría.

_________________
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: 13 Jun 2010 13:10 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 13 Mar 2004 12:40
Mensajes: 2439
Pues yo me animaría a hacerlo, e incluso no descartaría que fuese de pago, visto que los parsers ingleses de este tipo -Adrift, Quest- son todos de pago. Probablemente haya un público potencial mucho mayor del que nos imaginemos y el autor se pueda ganar unas perrillas subiéndolo a softonic :mrgreen:


Arriba
 Perfil  
 
NotaPublicado: 13 Jun 2010 16:23 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
Bueno, puedo desarrollarlo como rama de PUCK y probar a ver qué pasa si cobro (aunque por supuesto seguiría siendo software libre, y a los de CAAD no os cobraría, así que me da que al final no lo comprará ni Dios, pero bueno... igual sí en el mercado guiri, si es multilenguaje) :D

De todas formas aún tardará porque tengo bugs y otros asuntos que resolver en AGE y PUCK y mi tiempo es limitadísimo, así que si mientras tanto otro quiere recoger el guante... :)

_________________
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: 13 Jun 2010 21:25 
Desconectado
Implementador
Implementador

Registrado: 09 Jun 2010 14:50
Mensajes: 1675
Ubicación: Argentina
Planseldon, es verdad lo que has dicho. La mayoría de parsers utilizados requieren la lectura de un gran manual. A veces existen entornos de desarrollo para simplificar el uso, pero es una pena que sean inaccesibles o pertenecientes a parsers ingleses de pago (como el Quest que has citado). La verdad es que me ha interesado la idea porque más de una vez yo he comenzado a leer manuales de I7 e InformATE y entre que el IDE de I7 tiene algunas complicaciones en cuanto al pase por pestañas con el teclado, InformATE y las versiones con núcleo original de I6 requieren aprender código de memoria para teclear en un editor de texto, Jif no es muy usable con el teclado por tratarse de una aplicación Java, etc. nunca he escrito nada digno de publicar. Quest lo encuentro muy accesible e intuitivo, pero además de ser de pago, es muy difícil de implementar en español.
En fin, que me gustaría que este parser que dices sea accesible.

¡Saludos!


Arriba
 Perfil  
 
NotaPublicado: 13 Jun 2010 21:42 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 13 Mar 2004 12:40
Mensajes: 2439
De hecho en la página de Quest anuncian que ya cuenta con traducción al español ¿alguien la ha probado?

http://www.axeuk.com/quest/developer/translations.htm

Edito: acabo de comprobar que lo único que se ha traducido es la interface del jugador, no el creador de aventuras en sí.


Última edición por planseldon el 13 Jun 2010 21:53, editado 1 vez en total

Arriba
 Perfil  
 
NotaPublicado: 13 Jun 2010 21:52 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 23 Mar 2010 20:11
Mensajes: 1141
Ubicación: Valencia
Pues una de las traducciones es de nuestro Fernando Gregoire, miembro del CAAD...

_________________
El humor existe para recordarnos que por muy alto que sea el trono en el que uno se siente, todo el mundo usa su culo para sentarse.


Arriba
 Perfil  
 
NotaPublicado: 17 Jun 2010 03:45 
Desconectado
Implementador
Implementador

Registrado: 09 Jun 2010 14:50
Mensajes: 1675
Ubicación: Argentina
joruiru escribió:
Pues una de las traducciones es de nuestro Fernando Gregoire, miembro del CAAD...

Así es, para la última versión. Es una vergüenza no haberme dado cuenta antes de subirla un error: en la opción del menú Opciones escribí Opcciones. Mi copia local la corregí, pronto la subiré corregida a CAAD y hablaré con Axe Software para mandar la versión arreglada.

¡Saludos!


Arriba
 Perfil  
 
NotaPublicado: 17 Jun 2010 15:49 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 10 Mar 2004 21:40
Mensajes: 1444
Ubicación: Nímgar, Ciudad Lunar
Hola Planseldon,

una especificación del PAPAITO bien merece un breve retorno.

planseldon escribió:
Objetos
En el menú de objetos aparece una lista vacía y la opción “añadir objeto”. Al pinchar allí se abre la ventana donde podemos incluir el nombre y la descripción del objeto. Escogemos aquí la localidad o personaje inicial del objeto. Si no se selecciona nada, aparecerá en el inventario del jugador.


Mala idea, es mejor que siempre haya un objeto llamado 'jugador' al que se pueden asociar cosas y que los objetos sobre los que no se dice nada aparezcan en 'el limbo'.

Los ejemplos de eventos son triviales y lo realmente malo es que tienen una traducción DIRECTA en I7. Veamos:

planseldon escribió:
Ejemplo 1.

Localidad: sala roja (cerrada)
Personaje: jugador
Objeto: llave roja (jugador)
Turno: cualquiera
Acción: abrir puerta con llave

Evento resultante: sala roja (abierta)
Texto resultante: Abres la puerta con la llave roja.


Instead of unlocking puerta with llave roja when location is sala roja:
say "Abres la puerta con la llave roja";
now sala roja is open. [ este evento es rarito pero es lo que has puesto ]

planseldon escribió:
Ejemplo 2.

Localidad: parque
Personaje: jugador, vagabundo
Objeto: manzana (jugador), billete de metro (vagabundo)
Turno: cualquiera
Acción: dar billete a vagabundo

Evento resultante: manzana (vagabundo), billete de metro (jugador)
Texto resultante: El vagabundo toma la manzana agradecido y te da un billete de metro.


Instead of giving billete tovagabundo when location is parque:
say "El vagabundo toma la manzana agradecido y te da un billete de metro.";
now billete is in player;
now manzana is in vagabundo. [ este evento es rarito pero es lo que has puesto ]

planseldon escribió:
Ejemplo 3

Localidad: cualquiera
Personaje: jugador
Objeto: manzana (jugador)
Turno: cualquiera
Acción: comer manzana

Evento resultante: ninguno
Texto resultante: ¡Puaj! Tiene un gusanito.


Instead of eating manzana:
say "¡Puaj! Tiene un gusanito.". [ ¿No quieres comerte la manzana? ]

planseldon escribió:
Ejemplo 4

Localidad: parque
Personaje: jugador
Objeto: bolsa de patatas fritas (jugador)
Turno: cualquiera
Acción: comer patatas

Evento resultante: bolsa de patatas fritas (nadie), vida + 2
Texto resultante: Te encuentras mucho mejor.


Instead of eating bolsa de patatas:
now bolsa de patatas is in Limbo;
increase vida by 2; [ ese +2 lo interpreto como un incremento, ¿no?.
Te faltan muchas cosas como ¿dónde se espefica la variable 'vida' ]
[ Si siempre es 'del jugador' entonces el código I7 sería:
increase vida of player by 2; ]
say "Te encuentras mucho mejor.".

planseldon escribió:
Ejemplo 5

Localidad: cualquiera
Personaje: jugador, niña
Objeto: cualquiera
Turno: cualquiera
Acción: hablar con niña

Evento resultante: piruleta (jugador), niña (localidad:ninguna)
Texto resultante: Hablas con la niña. Es muy simpática, te da una piruleta chupeteada y se va.



Instead of [i]talking nina
: [Por defecto I7 no tiene 'talking' sin más pero es trivial añadirlo]
say "Hablas con la niña. Es muy simpática, te da una piruleta chupeteada y se va.";
now nina is in Limbo;
now piruleta is in player.

planseldon escribió:
Ejemplo 6

Localidad: salón
Personaje: jugador, perro
Objeto: hueso (jugador)
Turno: <6
Acción: dar hueso a perro

Evento resultante: hueso (perro), perro (localidad: jardín)
Texto resultante: El perro acaba de comer, así que no parece interesado por tu hueso.


Instead of giving hueso to perro when turn count is less than 6 and the location is salon:
say "El perro acaba de comer, así que no parece interesado por tu hueso.".
[ Los eventos que has puesto están mal, no?]

planseldon escribió:
Ejemplo 7

Localidad: salón
Personaje: jugador, perro
Objeto: hueso (jugador)
Turno: >5
Acción: dar hueso a perro

Evento resultante: hueso (perro), perro (localidad: jardín)
Texto resultante: El perro parece coge el hueso y se va al jardín moviendo la cola.


Instead of giving hueso to perro when turn count is greater than 5 and the location is salon:
say "El perro coge el hueso y se va al jardín moviendo la cola.";
now perro is in jardín;
now hueso is in perro.



Como se puede ver se trata de un mapeo simplísimo entre el formulario descrito y una plantilla de condición Instead de I7, en donde los 'cualquiera' se transforman en nada en la condición, y donde los eventos se transforman en 'now' de I7 (en casi todos los casos). Así que me parece que PAPAITO es I7 con un recubrimiento en forma de wizards... y... lo está haciendo Jhames.

Hablad con él.

_________________
Mel Hython
------------------
http://mel-hython.blogspot.com/


Arriba
 Perfil  
 
NotaPublicado: 17 Jun 2010 17:28 
Desconectado
Grafista
Grafista
Avatar de Usuario

Registrado: 18 Dic 2007 20:36
Mensajes: 744
Mel Hython escribió:
... Así que me parece que PAPAITO es I7 con un recubrimiento en forma de wizards... y... lo está haciendo Jhames.
Hablad con él.


En realidad, no es que lo esté haciendo.
Lo hice hace casi un año.
Aquí está el video.

http://rapidshare.com/files/177503701/I ... m.avi.html

Pero, abandoné la idea.

Luego, hice un JhamesGlus.
(Sí. Sé que los nombres de mis programas no son originales. Pero es que yo soy así).

No sé. Tampoco terminó de gustarme. Y también abandoné la idea.

De modo, que dos vaporwares.

Ahora.. estoy intentando retomar la idea.
He bautizado el proyecto como JHINFORM, reescribiendo todo el código desde el principio.

(Vale, vale, podéis abuchearme :? )

Estoy en la fase inicial. Y supongo que tardará bastante tiempo en ver la luz, porque no estoy, digamos, muy entusiasmado con el proyecto, por falta de motivación personal.

En principio, únicamente hará pocas cosas, pero todas serán en un entorno IDE, muy, muy similar al de QUEST. (Que a mí personalmente me parece muy sencillo e intuitivo)
Las virguerías quedarán para más adelante. O, tendrá que meterlas el programador de la aventura a mano.

Lo que tengo previsto hacer:

1.- Configuración inicial de la aventura.
2.- Mapeado automático.
3.- Objetos y propiedades de los mismos.
4.- Creación de PSIs.
5.- Diálogos con PSIs.

INFORM 7 es potentísimo. Pero engorroso, y no apto para no iniciados.
QUEST es sencillo e intuitivo, acto para personas sin conocimientos de programación, pero múchisimo menos potente. (Aunque no sé como será la nueva versión 5 en la que se está trabajando actualmente)

Entonce, ¿Porqué no hacer una mezcla entre los dos sistemas?.

Buenos, pues en eso estoy.

Todo el lenguaje de programación se basará en VISUAL BASIC.NET.

He estado esperando a ver las últimas mejoras de INFORM. Sobre todo el IDE, pero en este aspecto todo sigue igual.

De modo que intentaré terminarlo. Si es con ayuda o colaboración, mejor que mejor.
Para mí sería inestimable. Al menos, como motivación personal para seguir en ello.
Y si no, al menos me servirá como aprendizaje en el lenguaje de programación VB.NET.

Abriré un hilo con el proyecto, y si hay gente interesada se podría subir el código a google.code para su desarrollo en común, ya que será un proyecto con código abierto.


Arriba
 Perfil  
 
NotaPublicado: 17 Jun 2010 17:34 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 13 Mar 2004 12:40
Mensajes: 2439
Sí, ya me ha comentado Jhames algo, ojalá que salga algo bueno.

Y perdón por los despistes en los ejemplos, se trataba sólo de dar una idea rápida de a qué me refiero con "editor de eventos".


Arriba
 Perfil  
 
NotaPublicado: 17 Jun 2010 17:41 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
Jhames escribió:
Abriré un hilo con el proyecto, y si hay gente interesada se podría subir el código a google.code para su desarrollo en común, ya que será un proyecto con código abierto.


Ojalá encuentres colaboraciones; pero aunque no se dé el caso, te sugiero que lo subas a Google Code igual. Es muy útil.

Yo en el AGE no tengo colaboraciones, lo hago todo yo, pero en el Google Code me pueden reportar errores y sugerencias y lo uso como lista de cosas por hacer (aparte de como servidor de control de versiones): http://code.google.com/p/aetheria/

_________________
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: 18 Jun 2010 16:51 
Desconectado
Grafista
Grafista
Avatar de Usuario

Registrado: 18 Dic 2007 20:36
Mensajes: 744
Al-Khwarizmi escribió:
Jhames escribió:
Abriré un hilo con el proyecto, y si hay gente interesada se podría subir el código a google.code para su desarrollo en común, ya que será un proyecto con código abierto.


Ojalá encuentres colaboraciones; pero aunque no se dé el caso, te sugiero que lo subas a Google Code igual. Es muy útil.

Yo en el AGE no tengo colaboraciones, lo hago todo yo, pero en el Google Code me pueden reportar errores y sugerencias y lo uso como lista de cosas por hacer (aparte de como servidor de control de versiones): http://code.google.com/p/aetheria/


Gracias Al.
Sí. Seguramente haré eso.
Al menos, quedará para las generaciones venideras !!!.


Arriba
 Perfil  
 
NotaPublicado: 19 Jun 2010 00:25 
Desconectado
Implementador
Implementador

Registrado: 09 Jun 2010 14:50
Mensajes: 1675
Ubicación: Argentina
Bueno, por más que no sea muy potente, podría estar la posibilidad de hacer librerías. Aunque Inform es muy potente, la mayoría de los juegos tienen librerías que no vienen por defecto, para hacer cosas nuevas o simplificar las complicadas.
Estaría bueno que sea algo como Quest; éste creo que su problema no es la potencia, sino la falta de una especificación LDF para que los juegos entiendan mejor español. Como muchos ya saben, actualmente sólo se puede traducir la interfaz del intérprete.

¡Saludos!


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 17 mensajes ]  Ir a página 1, 2  Siguiente

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 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