martes, 19 noviembre

16:08

I7 Build 6F95
[// infsp channel // (Sarganar)]

Ha salido una nueva compilación de I7; de las del tipo "edicion de mantenimiento", corrigiendo los bugs reportados por los usuarios.
Lo destacable:
* Ya trae de fábrica el interprete web para VM Glulx; con lo que la publicacion web del juego será cosa de coser y cantar (ilusos).
* Trae de fábrica la extension Epistemology, que toma nota del metaconocimiento del personaje durante el juego.
*180 bugs fuera.

La extension Spanish que compila con ella, la encontrarán en el repositorio de infsp7.

* En el aspecto Documentación, Ron ha reescrito su Inform 7 Programmer's Manual. Disponibe en PDF.


I7 - Cambiando los mensajes por defecto
[// infsp channel // (Sarganar)]

Los mensajes por defecto del parser...ahh ese texto con que una aventura nos daba la sensación de entender (casi) todo lo tipeado en el prompt. Pero solo se trata de una explicación educada de que "el autor no se le dio la pegada gana de considerar la accion que intentas hacer y por ello te pongo el mensaje por defecto de la libreria". Tendrá sus detractores, pero aun así me resulta agradable que exista.

Inform 7 heredó de I6 la mayoria de los mensajes por defecto para muchas de las acciones que soporta y la extensión Spanish heredó los textos de informATE. Pero, como un apologista martilló una vez, tu aventura debe tener TUS mensajes por defecto, imprimiendo tu sello creativo aun en ese resquicio del juego.

¿Cómo cambiar un mensaje por defecto de la librería?
Veamos un método
Debes saber de qué acción se trata primero.
Para ello, desde el panel Game (es decir, ya has compilado tu juego) debes intentar la accion en cuestión.
Pero antes ejecuta el comando-debug  ACTIONS.


>actions
Actions listing on.


>canta
[singing]
Cantas fatal.
[singing - failed the block singing rule]



Ok, se trata de la accion singing (en nuestro ejemplo)
Aplica entonces la regla Instead en tu codigo y listo:

Instead of singing, say "I got the feeling..... ".

Bravo, ya tienes tu nuevo texto cada vez que cantas.
Pero yo quiero que muestre un texto distinto cada vez.
Ok, Vamos a usar una tabla de mensajes para ello, y una instruccion en el bloque de la regla Instead para que  elija un texto diferente cada vez:


Instead of singing:
 choose a random row in the Table of Msg Sing; 
say "[msg entry][line break]".




Table of Msg Sing
msg
"Oid mortales el grito sagrado....."
"Aqui hay amor, amor, amor, amor...."
"I got a feeling..."
"Sueños que son dolooooooor..."
"No voy en tren, voy en avión..."
"No, mejor no."

(puede ser que si copias y pegas no se copien correctamentes las tabulaciones, ten en cuenta eso)
En el panel Index>Actions verás los nombres de todas las acciones que soporta la libreria Inform, más las que agreguen las extensiones que hayas incluido.

También tienes acceso a las variables I7 que utilizan algunos mensajes, como noun y second noun;que hacen referencias al Objeto1 y Objeto2 asociados a la acción (algunas acciones solo tienen objeto1, como cerrar, otras -como cantar- ninguno). Hay otras variables más que podríamos analizar en otra ocación. Las tienes en la pestaña Index>Contens, seccion List of named values.



Para otros tipos de mensajes, como los mensajes de error del parser, puedes usar la Actividad printing a parser error:

Rule for printing a parser error when the latest parser error is the I beg your pardon error: 
    say "Cómo dices? Habla de una vez!" instead. 
  
Lo anterior reemplaza el >>Perdon? cuando le das intro al prompt sin decir nada.
Consulta la ayuda en Chapter 17 Activities: 17.33. Printing a parser error
Tienes 19 tipos diferentes de mensajes errores para modificar. Cada tipo de error lo pondrás despues del when...

Si husmeas en libro de recetas de la ayuda de I7 (The Inform Recipe Book) seccion 6.16. Alternate Default Messages, encontrarás en un ejemplo otra forma sencilla de alterar algunos mensajes.

¿Cómo cambio muchos mensajes por defecto de un tirón?
Una técnica muy chula es utilizando tablas.
Ah...las tablas resuelven muchas cosas. Ordenan los datos, convierten unidades, resuelven partidas de ajedrez, etc.

Con Inform 7 puedes usar una tabla para colocar los mensajes de manera ordenada.
Pero primero debes bajar e instalar la extension que te permite hacer eso (ya que de fábrica no tiene esa capacidad de poder alterar mensajes mediante tablas).
Te recomiendo la Default Messages by Ron Newcomb; una extension sencilla y compacta; con una documentacion breve que exlica la manera de usarla.

Veamos un ejemplo:

Include Spanish by Sebastian Arg.
Include Default Messages by Ron Newcomb.


Use library message alerts.


The Garden is a room.
A mapa is here.




Table of custom library messages (continued)
library-action library-message-id library-message-text
singing action 1         "La, la, la!!!!"
-- 30 "Lo qué?"



Qué tenemos aqui?
Use library message alerts: Una option use provista por la extension. Imaginalo como un switch que habilita algunas cositas que hará la extension. En este caso, te dirá el library-message-id de la accion asociada que la libreria dispará por defecto. Esto lo necesitas para saber indicar en la tabla qué mensaje vas a reemplazar.
Las acciones normalmente tienen solo un mensaje para mostrar (usaras un library-message-id de 1). Pero hay acciones que tienen varios mensajes, dependiendo del resultado de dicha accion. Por ejemplo, la accion opening tiene 7 mensajes diferentes, dependiendo de si la accion fracasó o tuvo éxito.
Hay una accion interna que Inform genera cuando debe mostrar mensajes de error del parser, mensajes ante algunos metacommandos, o algunos mensajes de librería no relacionados con acción alguna. Se le llama la library message.

Por ejemplo, el fastidioso "No veo eso que dices." corresponde a la library message #30.
Ok, con la opcion library message alerts activada, sabremos los datos para completar la tabla de reemmplazo de mensajes.

> COJE EL MAPA
{ taking action #1 }


Cojido.


> COJE LA LINTERNA
{ library message #30 }


"No veo eso que dices."

Lo que ves entre {} es a lo que me refiero. Esos {avisos} desaparecen en la version final del juego o al efectivamente reemplazarlos en la Tabla. Son solo debugstrativos.

Table of custom library messages: La tabla de reemplazo de mensajes propiemante dicha. Tiene 3 columnas. En la primera pones el nombre de la accion, en la segunda el numero de mensaje a reemplazar (1 si es una accion con un solo mensaje) y en la ulima pones el texto del mensaje que usará tu aventura. Asi que cada FILA de la tabla se usará para cada mensaje que quieras reemlazar. Un tip: si la accion que reemplazas es la library message, solo pon "--" en la columna library-action y el parser te entenderá.


Tamien aqui tienes un puñado de variables que puedes utilizar en el texto de tus mensajes, que se explican en la ayuda de la extension.


Si quieres comentar este articulo, me parece que lo mejor sea en el foro del CAAD, porque la edicion de comentarios de blogspot es bastante cutre.

I7 Build 6E72 - cazando bichos
[// infsp channel // (Sarganar)]

El flamante sistema de bug tracking para Inform7  abierto a la comunidad ya dio su primer resultado: la Build 6E72. Se trata de una edición que recoge una selección de correcciones de bugs informados a través de //inform7.com/bugs; incluida una incidencia denunciada por un servidor. El sistema está montado sobre MantisBT; usados tambien (desde hace un tiempo) por Superglus (y creo que AGE lo usó un tiempo).
Desde Spanish no han habido cambios. Bueno, solo uno interno, relacionado con el checkeo de Build para no andar compilando ediciones anacrónicas.

Gozenlo!

I7 - “end the game” vs. “end the story”
[// infsp channel // (Sarganar)]



Bajar MP3

Nota de voz;  respecto a un cambio en la manera de terminar la aventura desde el código. (Según se lee en el blog de I7)


El siguiente texto te servirá como guía:

Nuevas frases para terminar la aventura (en el código):

Antes:

end the game in death;
end the game in victory;
end the game saying "Has llegado a un callejón sin salida."


Ahora:

end the story;
end the story finally;
end the story saying "You have reached an impasse, a stalemate";
end the story finally saying "You have succeeded.";


Inform 7 Build 6E59 - Nueva versión
[// infsp channel // (Sarganar)]


La nueva edición de I7 ya está en la web disponible para descarga (la version para Linux va a demorarse un par de días).
El changeLog es un poco extenso, pero supongo que puede leerse transverlamente (un apologista me enseñó a usar esa palabara).

De alli destaco:
* Nuevos iconos para Inform
* 250 bugs eliminados
* Win IDE: Menus recargados: Nuevo menu Format, y acceso directos a todos los TABS.
* Puede publicarse la aventura embebida en un html junto con el interprete web parchment. Lista para colgar en la web.
* Elementos y conceptos del lenguaje (como relations, assemblies, adjetives, kinds, etc) se han extendido para abarcar mayores casos (u objetos).
* Agregadas nuevas operaciones con listas (MAP, FILTER AND REDUCE)
* Los juegos por defecto se compilan ahora en modo VERBOSE (referido a la descripcion de localidades), dejando el modo BRIEF a gusto particular del autor (que lo puede vover a poner por código).
* Problem Messages revisionados
* Procedural Rules con sus días contados. Van a eliminarse de I7.
* Cuando da error un codigo de alguna extension, ahora aparece el link correcto a dicha seccion de código.

Muy bien; respecto a la extensión Spanish (que permite que I7 produzca juegos en español) he realizado los cambios minimos para acomodarse a esta nueva Build.
Seguiré revisandola, pero parece que no hay que hacer mucho cambio.
A medida que los autores detecten incosistencias, me iré enterando.

De momento está accesible desde su hosting de GoogleCode. (la version madura se pondrá en el centro de descarga infsp7).

Pueden patalear en el foro inform del CAAD, en su lista de correo.

Y no se olviden de visitar el centro de Documentación infsp7 de vez en cuando.

Rebot-lution
[// infsp channel // (Sarganar)]

bitacora #B10

Acabo de levantar a Rebot desde el servidor del caad. Esto permite que esté online las 24hs; algo genial para organizar quedadas globalizadas.

De momento, esta corriendo el juego multiplayer Lobos y Aldeanos; asi que podeis invitar a tus amigos a quedar en el IRC: freenode #LyA.
El bot es el usuario LyA; y todos los comandos van a él por canal privado.

Gozenlo!

(y piensen en las posibilidades).

Por cierto, mucha gracias a la administracion del caad, que -via Presi- me hizo un lugarcito aventurero en el servidor.

Glk and all the stuff
[// infsp channel // (Sarganar)]

Es (estre|intere)sante darse una vuelta de vez en cuando por la raif . La masa critica guiri con frecuencia produce nuevas herramientas relacionadas con lo conversacional (no puedo ocultar mi tendencia tool-lover).

Este es el turno de (casi) java: GlkJNI es una implementación de la API GLK escrita en C que utiliza JNI (Java Native Interface). (qué diablos es glk linkeado al fondo)

¿Las posibilidades? Con glkJNI, un emulador de la máquina glulx o Z escrito en C (y que use glk) puede utilizar Java como interface I/O, lo que incluye la interfaz gráfica. Ejemplo: se podria conectar el típico intérprete glulxe (glulx+glk) de D Kinder o el correcaminos intérprete Demona (Z+glk) de J McGrew con una interfaz de usuario hecha en java.
¿Es una patada a la portabilidad pregonada por java? Lee mis labios.
De todas maneras, con esto se deja de lado la lentitud de un intérprete escrito puramente en java y se reutiliza el trabajo de los muchachos que vienen puliendo sus emuladores por meses.
Por cierto, esto también pica la curiosidad para ese autor de aventuras que quiere una interfaz de jugador más conectada con la historia que está pergeniando (y que además tiene un amig@ con dotes javaticos).
Otra cosa: el autor de glkJNI (por injerencia aguda de nuestro mapache) tiro la idea de que le gustaría avanzar en el porting de glk para Android....

GlkJNI fue anunciada ayer por Edward McCardell y tiene licencia GNU General Public License v3. Desde su repositorio en gcodes puede bajarse la implementacion en su version actual (0.6) y una minimalista demo.
Nota: Ya existia una implementacion glk-JNI del 2002.


Hablando de implementaciones glk; me preguntaba qué otras implementaciones habrían dando vueltas por alli. Aqui va un listado rápido:

* CocoaGlk, de Andrew Hunter. Implementacion glk para Mac OS X. Usada por Zoom y por el intérprete embebido de I7 para Mac.
* WindowsGlk, de David Kinder. Implementacion glk para Windows. Usada por WinGlulxe y por el intérprete embebido de I7 para Windows.
* GarGlk, de Tor Andersson. Implementacion glk escrita en C para Windows y Linux. Usada por la suite Gargoyle, que la adopta como I/O de todos sus intérpretes (frotz, nitfol, hugo, alan, git, glulxe, etc).
* CheapGlk, de Andrew Plotkin. Implementacion liviana glk escrita en C para Windows y Linux. Es usada por cheapglulxe y por ende -creanlo amigos- Rebot.
* GlkJNI, de Edward McCardell. Escrito en C usando JNI. Permite el core del emulador en C y la I/O en java.
* GlkOte, de Andrew Plotkin. (casi) una implemetacion en Javascript analoga a la api glk, pero adaptado al ambiente de desarrollo web.
* Pocket Glk, de Stark Springs. Implementacion glk para Windows CE (Pocket PC).
* Glk.java, de Jon Zeppieri. Implementación glk en java. Es usada en el intérprete glulx (escrito en java) Zag. La librería es parte del paquete Zag, dentro de la clase org.p2c2e, con licencia tipo BSD.

Al margen del sitio oficial de glk, existe un muy recomendable artículo sobre el tema glk aqui.

La inciativa FyreVM (de la casa TextFyre) reniega de la api glk y utiliza su propia API I/O basada en una filosofia de flujo de datos, o "canales i/o", entre la maquina virtual FyreVM (basada en glulx, pero escrita en C#) y la interface de jugador (cualquier cosa hecha para el framework .Net).

I7 in deutscher Sprache.
[// infsp channel // (Sarganar)]

Recuerdo -no sin cierta malsana envidia- el trabajo desarrollado para la libreria
alemana Infom; la poderosa DEForm. Un tremendo trabajo con una documentacion tecnica-idiomatica impecable (segun yo).

Pues bien, a paso lento pero seguro se está cociendo lo que será la libreria alemana para I7: German.i7x

Desarrollada por Banbury y Christian Bluemke, la misma está basada en el DEform de Martin Oehm.

Nuevamete: la documentacion en linea (la q se instala junto con la extension en el IDE) es copiosa. Inclusive las nuevas entidades del idioma traen su descripcion para mostrar en las pestañas Index.

Es un 50% más extensa que nuestra Spanish, aunque tambien trae incluidas
las extensiones "Locksmith" y "Rideable Vehicles" en sus formas teutónicas, y muchos más hackeos al parser.

El bloque que 'libera' toda la gramatica inglesa de fábrica sigue siendo el mismo que Spanish (parece que a todos les ha beneficiado esa tarde que me queme los ojos buscando los Understands).

Hay un muy elaborado trabajo con los german understand tokens; los casos femenino/masculino/neutros y las declinaciones.

Bueno, al menos es lo que se ve en el codigo de la extension (que yo de aleman no se ni papa).

Me interesa el manejo del genero del objeto, con sus posibles sinonimos multigenero. Es una cosa pendiente que Spanish no pudo importar desde InformATE. ¡Que no Urba, que aún no puedo dormir tranquilo sabiendo que los pronombres no se actualizan segun menciones un sinonimo masculino o uno femenino!!!

Bueno, en realidad si duermo. Pero en ocasiones escucho a mi conciencia y ya ven, googleo un poco y encuentro cosas.

Hilo de la extension German en el foro alemán.

Actualizacion del pack INFSP7
[// infsp channel // (Sarganar)]

Extensiones:

* Decorados
Desde la otra vida El Enano Malauva ha actualizado la extensión Decorados.
'Decorados' es una mini librería que permite algo similar a lo que permitía la librería de decorados de InformATE: incluir niveles de examinado extra sin necesidad de crear objetos adicionales.
Se ha mejorado la extension y corregido algunos bugs. Tambien se actualizo algo la documentacion en linea (todo via susurros melitonianos).

* Adaptive Hints SP
Se ha incluido la version SP (Hispana) de Adaptive Hints SP by Eric Eve, que es un sistema adaptativo de pistas, similar al ZIPI de informATE.

* Poor Man's Mistype Sp
Se ha incluido la version SP de Poor Man's Mistype by Aaron Reed.
Se trata de una extension que hace al parser de I7 a prueba de balas.
Si el jugador escribe mal un objeto o un verbo, tratará de adivinarlo.
Requiere Smarter Parser by Aaron Reed.

* Se ha vuelto a incluir a WATD (Wolf at the Door), la version ejemplo-urbataninana del popular cuentecillo del Lobo y los 7 cabritos. Por alguna razon, se habia quitado de la carpeta Ejemplos (es probable que haya sido por ESTO).

Están en el centro de descarga INFSP7.

Entradas anteriores

Feeds

FeedRSSLast fetchedNext fetched after
// infsp channel // XML 16:08, martes, 26 mayo 2020 15:08, miércoles, 27 mayo 2020
Aventuras Conversacionales 2.0 XML 16:08, martes, 26 mayo 2020 15:08, miércoles, 27 mayo 2020
caad – Xavier Carrascosa XML 16:08, martes, 26 mayo 2020 15:08, miércoles, 27 mayo 2020
CAAD: Club de Aventuras AD - Comunidad de Aventuras Conversacionales y Relatos Interactivos XML 16:08, martes, 26 mayo 2020 15:08, miércoles, 27 mayo 2020
El blog de Morgul XML 16:08, martes, 26 mayo 2020 15:08, miércoles, 27 mayo 2020
El Escritorio de Incanus XML 16:08, martes, 26 mayo 2020 15:08, miércoles, 27 mayo 2020
El interlector >_ XML 16:08, martes, 26 mayo 2020 15:08, miércoles, 27 mayo 2020
Ficción Interactiva – La Línea Dura XML 16:08, martes, 26 mayo 2020 15:08, miércoles, 27 mayo 2020
Fragmentarios XML 16:08, martes, 26 mayo 2020 15:08, miércoles, 27 mayo 2020
Informate tú XML 16:08, martes, 26 mayo 2020 15:08, miércoles, 27 mayo 2020
Interlecturas XML 16:08, martes, 26 mayo 2020 15:08, miércoles, 27 mayo 2020
La mano parlante XML 16:08, martes, 26 mayo 2020 15:08, miércoles, 27 mayo 2020
Las aventuras del arquero XML 16:08, martes, 26 mayo 2020 15:08, miércoles, 27 mayo 2020
Pacificaciones XML 16:08, martes, 26 mayo 2020 15:08, miércoles, 27 mayo 2020
Primavera en los Cárpatos XML 16:08, martes, 26 mayo 2020 15:08, miércoles, 27 mayo 2020