CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 23 Sep 2020 21:04

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 9 mensajes ] 
Autor Mensaje
NotaPublicado: 14 May 2015 11:56 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 27 Ene 2010 20:38
Mensajes: 1529
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?


Arriba
 Perfil  
 
NotaPublicado: 14 May 2015 12:36 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 27 Ene 2010 20:38
Mensajes: 1529
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é.


Arriba
 Perfil  
 
NotaPublicado: 14 May 2015 17:43 
Desconectado
Aventurero
Aventurero

Registrado: 10 Abr 2015 16:12
Mensajes: 5
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!


Arriba
 Perfil  
 
NotaPublicado: 15 May 2015 08:46 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 27 Ene 2010 20:38
Mensajes: 1529
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.


Arriba
 Perfil  
 
NotaPublicado: 15 May 2015 13:11 
Desconectado
Implementador
Implementador

Registrado: 13 Feb 2005 18:57
Mensajes: 1957
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?


Arriba
 Perfil  
 
NotaPublicado: 15 May 2015 15:20 
Desconectado
Aventurero
Aventurero

Registrado: 10 Abr 2015 16:12
Mensajes: 5
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!


Arriba
 Perfil  
 
NotaPublicado: 15 May 2015 18:18 
Desconectado
Implementador
Implementador

Registrado: 13 Feb 2005 18:57
Mensajes: 1957
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;
];


Arriba
 Perfil  
 
NotaPublicado: 18 May 2015 10:22 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 07 Sep 2004 21:52
Mensajes: 1897
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!

_________________
Ruber "Urbatain" Eaglenest.
------------------------
http://www.indieorama.com/author/rubereaglenest/


Arriba
 Perfil  
 
NotaPublicado: 20 May 2015 07:32 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 27 Ene 2010 20:38
Mensajes: 1529
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.


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 9 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 10 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