Open paravaariar opened 1 year ago
He creado la acción "transcript" con los sinónimos "transcribo", "transcribir", "transcribe", que guarda todo el histórico de comandos hasta el momento, en un archivo llamado transcript.txt. Faltaría transcribir además todo lo mostrado al usuario, tanto mediante ctrl.print() como simplemente las descripciones de las localidades y el resultado de las acciones.
aparte de los textos, la versión actual no guarda comandos de acciones que no están registradas. Por ejemplo, si pones un verbo no reconocido, no se guarda.
Esto sucede así por cómo funciona el parser. No es algo que pueda añadirse fácilmente, pues depende de la arquitectura del reconocimiento del comando. Si lo que quieres es que los jugadores puedan dejar mensajes al desarrollador, lo único que se me ocurre es añadir un comando como "rem" o "rec" o incluso "msg"... cualquier posibilidad serviría.
He hecho un workaround que no se si creará nuevos problemas... en load o save por ejemplo... Es en la función parse de fi.js. Como ves antes solo guardaba si sentence.act era diferente de null, ahora la guarda siempre...
// Execute action
identifyObjects();
// paravaariar guardar todo en history, incluso verbos que no existen
ctrl.addToHistory( cmd );
if ( sentence.act != null ) {
// paravaariar guardar todo en history, incluso verbos que no existen
// ctrl.addToHistory( cmd );
const playerAnswer = player.preAction();
luego no borro el hecho que haya escrito transcript al guardar el transcript... porque cuando habías puesto transcript varias veces en una partida te lo intentaba ejecutar
function saveTranscript()
{
// Prepare history
let transcript = history
// paravaariar no borrar la última
// let lastLinePos = transcript.trim().lastIndexOf( "\n" );
// if ( lastLinePos > 0 ) {
// transcript = transcript.substring( 0, lastLinePos );
//}
para que funcione bien el load sin intentar bajar los transcripts, cambié esto en el "load"
for(var i = 0; i < cmds.length; ++i) {
var cmd = cmds[ i ];
var s = { "verb": cmd };
if ( !saveAction.match( s )
&& !loadAction.match( s )
// paravaariar transcript tampoco la lanzamos
&& !transcriptAction.match (s))
{
parser.parse( cmd );
}
}
Lo siento, pero no voy a implementar esto. Como te dije, puedo pensar en un verbo o incluso un caracter especial, pero cambiar el comportamiento del parser a estas alturas, no. No sé qué posibilidades de efectos laterales pueden suceder con los juegos que ya existen. Por supuesto, en tu juego puedes modificar lo que quieras. Eso sí, tu juego permanecerá "anclado" a esa versión que modifiques.
Entiendo. De todas maneras esto es un workaround porque para hacer un transcript bien que guarde todo tendría que ser con otra cosa que no fuese el history directamente, quizás así sea menos intrusivo a lo que ya existe. Le daré una vuelta a ver si se me ocurre :)
Una manera que me gusta bastante para depurar juegos es decirle al jugador o al tester que guarde una transcripción de los comandos que fue introduciendo. Creo que es también más o menos habitual que la transcripción también vaya guardando lo que aparece en la descripción y en el texto de resultado de acciones. Está disponible o sería posible un comando para guardar este histórico de las partidas y que lo descargase en un archivo de texto plano?