CAAD
https://foro.caad.es/

Problemas con Parchment y "Por la Necedad Humana"
https://foro.caad.es/viewtopic.php?f=16&t=5824
Página 1 de 1

Autor:  Comely [ 14 May 2015 11:56 ]
Asunto:  Problemas con Parchment y "Por la Necedad Humana"

Revisando y corrigiendo las fichas del portal (una ocupación que tengo en mis ratos libres) me he encontrado con que la ficha de "Por la Necedad Humana" estaba bastante incompleta. Como es un archivo muy pequeñito y no tenía activada la posibilidad del juego online, la he extraído y le he dado esa opción via Parchment.

Carga bien, pero el problema aparece tras el segundo párrafo del texto, en el que la aventura espera que el jugador pulse una tecla para pasar a la pantalla de inicio, que ahí se queda. No hace caso a las pulsaciones de teclado en los 3 navegadores en los que lo he probado.

¿Alguien ha tenido ese problema con Parchment? ¿Algo de "inside info" de lo que podría estar pasando, Urba?

Autor:  Comely [ 14 May 2015 12:36 ]
Asunto:  Re: Problemas con Parchment y "Por la Necedad Humana"

Reviso el código fuente que viene incluído en el paquete, pero no veo nada fuera de lo normal. Como no sea el modo debug en el que dice Urba que está compilado, no sé.

Autor:  delacannon [ 14 May 2015 17:43 ]
Asunto:  Re: Problemas con Parchment y "Por la Necedad Humana"

Hola!

Por alguna razón, la ventana de inicio del juego queda sin definir al terminar la intro. Para que funcione, se tiene que modificar el opcode del refresco de ventana ( erase_window ) de la librería de parchment. En "zvm.debug.js" o bien directamente en el archivo de "opcodes.js" y cambiar por esto:

Código:
 
237: opcode_builder(Opcode, function(win) {
        if (win === undefined) {
            return 'e.ui.erase_window(' + win + ')';
        } else {
            return 'e.ui.erase_window(' + win.U2S() + ')';
        }
    }),


Me temo que este problema, solo se podrá solventar montando una versión customizada del parchment. Lo que implica no poder enlazar directamente el juego desde el repositorio de iplayif.com.

Te dejo aquí una prueba del juego funcionando con la modificación: https://necedad-parchment-delacannon.c9.io
y el código fuente: https://preview.c9.io/delacannon/necedad-parchment/

Un saludo!

Autor:  Comely [ 15 May 2015 08:46 ]
Asunto:  Re: Problemas con Parchment y "Por la Necedad Humana"

Pues parece que tienes razón, seas quién seas :D

Como siempre, dejo la decisión en manos de los admins, mientras elimino el método online de la ficha de la aventura.

Autor:  dddddd [ 15 May 2015 13:11 ]
Asunto:  Re: Problemas con Parchment y "Por la Necedad Humana"

Hola delacannon, ¡bienvenida/o!

Gracias por la aportación.

¿Consideras definitivamente que es un bug del intérprete o cabe la posibilidad de ser uno de la aventura?

¿Cuál sería el bug y qué hace exactamente tu parche para corregirlo? ¿Corrige la causa de fondo?

Autor:  delacannon [ 15 May 2015 15:20 ]
Asunto:  Re: Problemas con Parchment y "Por la Necedad Humana"

Es un bug del intérprete online, porque el juego funciona normalmente en Gargoyle y en otros intérpretes de escritorio.

Hace poco que he empezado a programar en Inform 7 y no conozco muy bien el funcionamiento de las versiones anteriores, pero he notado que, al final del código, en el archivo "necedad.inf" donde pone @erase_window la constante no tiene ningún valor asignado. Los intérpretes de escritorio parecen ignorar esto, pero parchment no. Si el código se cambia a @erase_window 1; y se vuelve a compilar, el archivo funciona porque @erase_window ya no esta "undefined".

Con este cambio no hace falta tocar nada del parchment y se puede jugar desde iplayif.com sin problemas.
http://iplayif.com/?story=https://previ ... necedad.z5
Aquí está el archivo modificado:
https://preview.c9.io/delacannon/neceda ... necedad.z5

Un saludo!

Autor:  dddddd [ 15 May 2015 18:18 ]
Asunto:  Re: Problemas con Parchment y "Por la Necedad Humana"

Esto es muy raro, porque según entiendo la especificación de la máquina Z, el argumento de @erase_window es obligatorio, así que no estoy muy seguro de dónde está el bug, para reportarlo (¿parchment, el compilador, los otros intérpretes por aceptar algo (supuestamente) no válido?)

Así que la mejor solución que veo ahora mismo es recompilar indicando la ventana que se quiere realmente borrar, más o menos como ha hecho delacannon.

Citar:
VAR:237 D 4 erase_window window

Erases window with given number (to background colour); or if -1 it unsplits the screen and clears the lot; or if -2 it clears the screen without unsplitting it. In cases -1 and -2, the cursor may move (see S 8 for precise details).


He hecho alguna prueba e incluso gargoyle tiene problemas (muestra un error en tiempo de ejecución) con llamadas sueltas, pero con algo similar al código que hay en la aventura parece funcionar. Lo dicho: raro; algo se nos escapa (intuyo que nos hemos topado con un caso de undefined behaviour).

Por referencia, el código en la aventura es:
Código:
[ dibujarlineaestado ;
   @split_window 2;
   @set_window 1;
   @set_cursor 1 1;
   @erase_window;
   style reverse;
   print "                            Por la Necedad Humana                               ";
   style roman;
   @set_window 0;
];

Autor:  Urbatain [ 18 May 2015 10:22 ]
Asunto:  Re: Problemas con Parchment y "Por la Necedad Humana"

Está claro que es culpa del código. Esa modificación era una modificación estandar para cambiar la linea de estado, pero claro, luego se actualizó las especificaciones y por eso esa linea de código peta.

Así que os agradezco la investigación. Si queréis actualizar el tema vosotros mismos os lo agradezco, sino, cuando tenga tiempo de revisitar mis obras (planeado para este año pero no se para cuando) pues lo haré yo mismo.

¡Gracias!

Autor:  Comely [ 20 May 2015 07:32 ]
Asunto:  Re: Problemas con Parchment y "Por la Necedad Humana"

Como das tu permiso, he modificado la versión del portal con la nueva versión sin el bug y ahora es jugable online.

Gracias por el trabajo, chicos.

Página 1 de 1 Todos los horarios son UTC + 1 hora
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/