CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 20 Jun 2018 12:54

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 8 mensajes ] 
Autor Mensaje
NotaPublicado: 06 Ago 2017 12:49 
Desconectado
Grafista
Grafista
Avatar de Usuario

Registrado: 04 Sep 2008 17:23
Mensajes: 713
Hola.

Estoy aprovechando las vacaciones para trabajar un poco en obras que tenía empezadas. En todas suelo incluir una rutina LanguageLM personalizada que permite modificar el tiempo verbal y la persona de los mensajes en tiempo de ejecución, y que modifica algunos de los mensajes de INFSP por otros que considero más adecuados para cada obra ---variaciones de algunos pocos mensajes como por ejemplo: No <es/era/será> necesario emprenderla a golpes con <el objeto>." en lugar del original: "La violencia no es la solución."; y diferenciación clara de los mensajes que podrían considerarse del narrador de la obra, como el anterior, de aquellos que son notificaciones de la aplicación, por ejemplo: "[No se pudo determinar a qué objetos te has referido]." en lugar del original: "¡No sé a qué objetos te refieres!"---.

Estos últimos días he intentado generalizar esa rutina LanguageLM y crear una única extensión que pueda compartir entre diferentes obras (luego siempre se puede utilizar el objeto LibraryMessages para incluir aquellos mensajes por defecto personalizados para cada obra en sí).

Esta extensión define una nueva rutina SetGrammaticalInflection(), que acepta un código numérico especificando el tiempo verbal y la persona que se desean utilizar para los mensajes de la librería. He definido además 9 constantes con los 9 posibles códigos:

  • FIRST_PERSON_PRESENT = 1
  • SECOND_PERSON_PRESENT = 2
  • THIRD_PERSON_PRESENT = 3
  • FIRST_PERSON_PAST = 4
  • SECOND_PERSON_PAST = 5
  • THIRD_PERSON_PAST = 6
  • FIRST_PERSON_FUTURE = 7
  • SECOND_PERSON_FUTURE = 8
  • THIRD_PERSON_FUTURE = 9

De forma que para cambiar la flexión gramatical de los mensajes de la librería (originalmente en segunda persona presente) a la tercera persona en pasado, por ejemplo, basta con invocar a esta función en cualquier punto de la obra:

Código:
SetGrammaticalInflection(THIRD_PERSON_PAST);

Y, por supuesto, se puede volver de nuevo a la segunda persona presente con: SetGrammaticalInflection(SECOND_PERSON_PRESENT);.

Estoy terminando de modificar la extensión para que además se utilice la definición del objeto player (para comprobar si está definido como masculino/femenino o singular/plural) para imprimir los mensajes ---"No <lo> <tengo/tenemos/tienes/tenéis/.../tendrán/tendrá> <conmigo/con nosotras/con nosotros/contigo/.../con ella/con él>"---. Y aunque estoy tratando de ser lo más metódico posible, seguramente existan errores que se me hayan escapado.

Si alguien pudiese estar interesado en la extensión, está disponible en mi repositorio de extensiones en GitHub: https://github.com/jomali/I6-Extensiones/blob/master/SpanishLM.h


Arriba
 Perfil  
 
NotaPublicado: 07 Ago 2017 00:58 
Desconectado
Implementador
Implementador

Registrado: 09 Jun 2010 14:50
Mensajes: 1655
Ubicación: Argentina
Interesante trabajo.
Pregunto, desde mi ignorancia, qué tan factible y conveniente sería portar a I6 el código que hay al respecto en I7, ya oficializado y que, hasta donde sé, en el pasado diferencia los pretéritos posibles.


Arriba
 Perfil  
 
NotaPublicado: 07 Ago 2017 07:00 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 27 Ene 2010 20:38
Mensajes: 1308
Eso ya lo trae TADS de serie.

Aprovecho este inciso que no ayuda a nada para congratularme con la idea de verte por aquí de nuevo y en activo, Makinaimo :lol:


Arriba
 Perfil  
 
NotaPublicado: 07 Ago 2017 12:25 
Desconectado
Grafista
Grafista
Avatar de Usuario

Registrado: 04 Sep 2008 17:23
Mensajes: 713
No se me ha ocurrido mirar TADS. Le echaré un ojo a ver si puedo aprovechar alguna idea de cómo hace eso. ¡Gracias Comely! (por señalarlo, y también por el inciso :) . A ver si soy capaz de finalizar y compartir con vosotros en el medio plazo algo de lo que tengo más avanzado).

Para hacer la extensión sólo he intentado generalizar y ampliar una rutina que he ido modificando y reutilizando desde hace años. No he estudiado mucho otras extensiones o sistemas, así que lo mismo he creado algo que ya estaba hecho mejor. Y más probado.

Pero sí que he consultado un poco una versión de la librería INFSP6 parcheada por Ricardo Pérez que ya tenía implementado algo parecido ---inflexiones que contemplan diferente persona, género y número---. Y otra de la librería Inform 6, en inglés, de David Griffith ---mensajes que contemplan diferente persona, género, número y tiempos verbales presente y pasado---.


Arriba
 Perfil  
 
NotaPublicado: 07 Ago 2017 12:32 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 27 Ene 2010 20:38
Mensajes: 1308
Nada, nada. Si ya has encontrado eso en Inform no te metas en TADS o acabas en el psiquiátrico :D

Lo dicho, encantado de verte y con ganas de probar lo que tengas entre manos.


Arriba
 Perfil  
 
NotaPublicado: 07 Ago 2017 14:32 
Desconectado
Grafista
Grafista
Avatar de Usuario

Registrado: 04 Sep 2008 17:23
Mensajes: 713
Quizá se trata de algo tangencial al tema del hilo, pero ojeando un poco acerca de alternativas a los mensajes por defecto de la librería Inform me he encontrado con esta extensión de Aaron A. Reed para Inform 7: Neutral Library Messages. No estoy puesto al día en lo relativo a Inform7 (ni al 6 ahora mismo, la verdad), así que puede que el enfoque de Aaron haya quedado desfasado por alguna otra extensión más nueva. En cualquier caso, presenta un puñado de ideas interesantes sobre posibles pegas de los mensajes por defecto de la librería Inform original (sé que hay algún hilo del foro en el que se ha discutido al respecto también).

Citar:
The main complaints levied against the standard library messages are:

They sometimes imply a certain tone of wry amusement which descends from the Infocom/text adventure era, and which is not always appropriate to modern works of IF.

There is not a clear distinction between messages narrating story world events and those giving parser refusals, leading to a muddying of the difference between the author's voice and the default system messages.

Error messages often do not contain information instructing players how to better restate their command.

They can sometimes contradict the story world, as in the assumption "That's plainly inedible," or mislead the player about a course of action, as in "This dangerous act would achieve little."

Inconsistencies in style, such as whether command examples are given in CAPS or 'quotes', or which messages are wrapped in square brackets and what that signifies.

En mi extensión 'SpanishLM.h', además del tema de las inflexiones, intento atacar al menos esas dos primeras pegas.


Arriba
 Perfil  
 
NotaPublicado: 14 Sep 2017 15:25 
Desconectado
Grafista
Grafista
Avatar de Usuario

Registrado: 04 Sep 2008 17:23
Mensajes: 713
A falta de hacer más pruebas para corregir erratas que se me hayan escapado en los mensajes, la extensión ya es funcional. He intentado documentarlo todo lo mejor posible para que sea fácil utilizarla. Para incluirla en una obra (los pasos están también en la documentación):

1) Declarar la constante SIN_MENSAJES para omitir los mensajes por defecto
de la librería Inform (antes de incluir librerías y extensiones):

Constant SIN_MENSAJES;

2) Declarar el siguiente conjunto de variables (antes de incluir librerías
y extensiones):

Global FORMER__TX = "tu antiguo ~yo~";
Global YOURSELF__TX = "ti mismo";
Global CANTGO__TX = "No puedes ir por ahí.";
Global IS__TX = " ves";
Global ARE__TX = " ves";
Global IS2__TX = "ves ";
Global ARE2__TX = "ves ";
Global YOU__TX = "Tú";
Global PARTICULA_TE = "te";

3) Declarar el reemplazo de la rutina 'ChangePlayer' definida en
'parserm.h' (antes de incluir librerías y extensiones):

Replace ChangePlayer;

Una vez instalada, se puede modificar la flexión gramatical utilizada en los mensajes por defecto invocando a la rutina 'SetGrammaticalInflection()'. Por ejemplo, para pasar a utilizar un narrador en pasado y tercera persona:

SetGrammaticalInflection(THIRD_PERSON_PAST);

Incluye además una nueva meta-acción de depuración (sólo está definida si la obra se compila con la opción DEBUG activada); 'gramatica [opción]', que permite consultar la flexión gramatical actual de los mensajes de la librería (cuando se invoca sin indicar ninguna opción), o si se especifica una opción [1-9], modifica la flexión gramatical utilizada.


Arriba
 Perfil  
 
NotaPublicado: 30 Sep 2017 06:19 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 24 Ago 2007 00:41
Mensajes: 2023
Ubicación: Chile
Makinaimo escribió:
No se me ha ocurrido mirar TADS. Le echaré un ojo a ver si puedo aprovechar alguna idea de cómo hace eso. ¡Gracias Comely! (por señalarlo, y también por el inciso :) . A ver si soy capaz de finalizar y compartir con vosotros en el medio plazo algo de lo que tengo más avanzado).

Para hacer la extensión sólo he intentado generalizar y ampliar una rutina que he ido modificando y reutilizando desde hace años. No he estudiado mucho otras extensiones o sistemas, así que lo mismo he creado algo que ya estaba hecho mejor. Y más probado.

Pero sí que he consultado un poco una versión de la librería INFSP6 parcheada por Ricardo Pérez que ya tenía implementado algo parecido ---inflexiones que contemplan diferente persona, género y número---. Y otra de la librería Inform 6, en inglés, de David Griffith ---mensajes que contemplan diferente persona, género, número y tiempos verbales presente y pasado---.


También hice una yo, pero nunca la liberé. Está ahí acumulando polvo junto con las otras programadas, pero tampoco liberadas... xD Pero sí, hice una, hace unos años, para INFSP6.

_________________
Eliuk Blau
eliukblau (AT) gmail.com
http://www.caad.es/eliukblau/


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: Google [Bot] y 3 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:  
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM