Sistema de misiones casi a punto

 Junto con los diálogos, el sistema de misiones es el otro componente esencial que debía terminar para que las mecánicas de juego estuviesen casi completas. El sistema de misiones (o quests) pasó por manos de dos personas, siendo la segunda iteración la más completa, pero mal documentada y bastante compleja, con un uso intensivo de signals. Me tomó un par de horas entender cómo funcionaba, e incluso hasta ayer descubrí cosas que estaba haciendo mal. No ha sido divertido, pero no suele serlo nunca cuando se trata de programar juegos.

A diferencia de mis ideas iniciales, el sistema de misiones acabó siendo una escena autoload (o sea, que Godot la trata como un singleton) y las quests son escenas hijas. Hay que tener en cuenta que para Godot, una escena puede ser cualquier cosa. Lo mismo es un prefab, que una locación del juego, que el modelo de tu personaje con sus scripts adjuntos... Es muy versátil. En fin, que tenemos una jerarquía de nodos con misiones y sus objetivos. Nada original, de hecho GDQuest usa el mismo enfoque en su videotutorial.

Ahora que las bases están sentadas, faltarían detalles como salvar correctamente el estado de objetivos multi (recoger X objetos, matar X NPCs) y encontrar los casos específicos que requieran la implementación de objetivos únicos. Pero estas bases ya permiten cubrir la mayoría de los casos y gracias a eso es posible jugar, con limitaciones, claro, el 90% de la primera escena.

Casi cien líneas de diálogos!

 Se dice fácil, pero no lo es tanto. Cada una de esas líneas debe ser probada, en especial las que dependen de alguna condición. O sea, que el proceso más o menos es: escribir, ejecutar el juego, si hay que cumplir alguna condición asegurarse de hacerlo, llegar hasta el NPC y recorrer el diálogo. A veces, hay que repetir esto en varias ocasiones para una sola línea, hasta que todos los errores queden resueltos, o simplemente para verificar todas las posible bifurcaciones. Luego viene volver a leerse el diálogo y comprobar su coherencia, naturalidad, ortografía, y si cumple con lo que se espera de él, que es proveer información.

En concreto, me resultó muy pesado escribir el diálogo para un personaje, que resulta ser un pedante que habla con un lenguaje rebuscado. Eso, en español y también en inglés. Una hora entera para lograr unas líneas. No había llegado al final y ya le tenía odio al personaje.

Es curioso ver cómo este trabajo va completando y dando forma a la escena. Incluso, el testeo de las misiones en cierta forma "pide" cambios en la distribución y ubicación de los personajes. Por ejemplo: cualquier desplazamiento entre los puntos de una misión que tome menos de treinta segundos prácticamente no aporta tiempo de juego. Si vas del personaje A al B en 20 segundos, te tomas 15-20 segundos en el diálogo, y 20 segundos regresando, apenas has implementado un minuto de tiempo de juego. Obvio, la solución no es tan simple como estirar la escena y alejar los personajes hasta el infinito. Sí, se necesita aumentar el recorrido (anyway, en la vida real los trayectos casi nunca son completamente rectos), pero el diálogo también contribuye a alargar la duración de las misiones (esos diálogos con cinemáticas largas no están ahí por gusto, de hecho, aportan más que el mismo desplazamiento).

Este primer escenario me ha enseñado algunas cosas que pondremos en práctica en el segundo (y probablemente, ese segundo también me enseñará cosas nuevas).