Primero, dejar claro que nunca he usado Quest, ni su entorno de desarrollo, pero como hacer un buen
testeo (¡gracias!) es de las tareas más importantes, intentaré poner mi granito de arena.
educacion74 escribió:
Uso quest 5.6.2 Según creaba el juego, me daba cuenta de que cada vez que quería probar si algo había funcionado o no, tenía que volver a pasarme todo hasta ese punto. ¿Hay alguna forma de empezar a jugar en el punto en el que me había quedado sin tener que "grabar" la partida y luego tener que meterme otra vez en el menú del disco C: para cargar de nuevo la partida? No sé. Algo así como colocar el objeto "jugador" en esa habitación y que continúe desde ahí.
El comando para grabar es "salvar", pero ¿hay comando para cargar sin tener que recurrir al menú para cargar el archivo?
Mover al jugador (como habrás ya intuido) puede no ser suficiente, tendrías que reestablecer todo el estado del juego. Si tienes poco estado es una opción viable, pero no sabría decirte cómo se hace a nivel de código, aunque básicamente consistiría en establecer las variables relevantes (de la misma forma que haces durante el juego normal) tras reinicializar todas ellas. La técnica sería similar a la de crear
checkpoints para los jugadores (de forma que puedan continuar en puntos concretos del juego diseñados específicamente para ello)... pero me estoy yendo por las ramas y es un poco reinventar el sistema de save/load integrado. De hecho, los
checkpoints se pueden implementar en base a partidas grabadas, en juegos con un diseño que no presente puntos con estado bien definido.
Posibles herramientas para las necesidades de pruebas durante el desarrollo:
- Que haya una función en el lenguaje de Quest que permita cargar una partida desde fichero dado [y que tú crearas varios comandos/verbos de depuración, uno para cada punto clave, en plan ">avanzar_hasta_escena_3", donde tú ejecutarías un supuesto System.loadSavedPlay("escena3.sav")]. Los juegos no suelen tener acceso directo a los ficheros del usuario, pero igual Quest no tiene estos controles de acceso. Esto parece básicamente lo que buscas... Habría que bucear un poco en la API de Quest... ¿La has mirado? Si tienes un enlace (aunque sea en inglés), compártelo.
- Que exista un modo de depuración integrado, como el skein de Inform7.
- Que el intérprete admita más de un comando a la vez, cosa habitual... por ejemplo, justo tras comenzar una partida:
Código:
>ir al norte. coger piedra. sur. lanzar piedra a orco.
... con lo que podrías, en vez de teclear todas las órdenes, hacer copiar-pegar.
- Que puedas ejecutar comandos de jugador desde el código, lo que te permitiría hacer algo equivalente a lo mencionado en el punto anterior (unido, de nuevo, a crear verbos de depuración) con menos esfuerzo. Aquí habría que mirar tambien la API de Quest.
- A veces los intérpretes tienen una opción de línea de comandos para indicar una partida que cargar, pero no sé si Quest tiene algo similar (de existir, idealmente debería estar documentado). Sería algo como (inventado):
Código:
quest -game mi_juego -load escena_3.sav
- Otra opción del estilo a las anteriores, habitual en otros intérpretes, es la de poder indicar un fichero que contenga comandos a ejecutar automáticamente, uno por línea. De nuevo inventado:
Código:
quest -game mi_juego -log fichero_con_comandos_hasta_escena_3.txt
- A falta de esas opciones... si existiera algún intérprete que acepte comandos desde stdin (a veces se les llama intérpretes dumb ó cheap), se pueden usar técnicas de inyección de comandos. En otros entornos, con el tipo de intérpretes mencionados (los hay, al menos, para z-machine, glulx, AGE y TADS), he usado http://eblong.com/zarf/plotex/regtest.html y es el método de pruebas que más he utilizado, porque permite automatizar (en mi opinión, lo más importante de las pruebas: poder automatizar lo más posible) varias ramificaciones.
Bueno, al final me he vuelto a ir por las ramas (y varias de las técnicas mencionadas se pueden combinar), espero haberme hecho entender. Igual en el foro anglo de Quest puedes encontrar algo sobre
debug,
debugging,
test,
testing... Seguro que no eres el primero en esta situación. Dinos si encuentras algo. Si el inglés se te hace muy cuesta arriba, dínoslo y vemos qué podemos hacer.
educacion74 escribió:
una vez cargado el tecla "esc" deja de tener validez para salir al menú de edición. Hay que parar el juego desde el menú "archivo" porque los iconos de "stop" etc. han desaparecido.
Esto suena a
bug, digno de reportar al autor. ¿Es éste el motivo principal de que no quieras usar grabar/cargar?
educacion74 escribió:
¿no habrá por ahí alguna aventurilla hecha en Quest que al darle a "parar juego", me muestre cómo está hecho por dentro para, si quiero, poder ver cómo lo ha hecho; qué scripts ha usado etc.etc.etc."
Me suena que el código fuente forma parte del propio juego. ¿Has probado a abrir alguno? Si directamente no lo abre, creo que en realidad son ficheros
zip que se pueden descomprimir y ver los ficheros que componen el juego.
PS: No suele ser necesario repetir las preguntas en el foro. Comprendo tu ansiedad por obtener respuestas, pero ten en cuenta que no hay casi usuarios de Quest actualmente y los que hay seguramente no se pasen a diario.