FemCode v0.2 - Sistemas de diálogos en juegos

Ithildin
2,481 views

This is a preview

This playground version isn't public and is work in progress.

Previous: Retos

Introducción

The legend of Zelda: BOTW The legend of Zelda: BOTW El secreto de Isla Moncloa

Muchos juegos hoy en día incluyen algún tipo de conversación entre el jugador y un NPC. Típicamente, el NPC interpela al jugador, al que en un momento dado se le presentan diversas opciones posibles para continuar la conversación. El NPC reacciona a esa respuesta y el diálogo prosigue hasta llegar a un punto que le ponga fin, bien porque se despiden, o porque vamos a pasar a un combate, o etcétera. En otros casos el jugador tiene un mayor grado de control y puede personalizar algo más lo que quiere decir. Para esto, algunos juegos recurren a plantillas de preguntas y palabras clave, y otros van más allá y los NPCs son básicamente chatbots que permiten formular preguntas o respuestas en lenguaje natural.

Para el reto podéis elegir cualquiera de estos sistemas (o algún otro que conozcáis o que se os ocurra) y tendréis que implementar la lógica de elección de respuestas e interacción con el jugador. Además necesitaréis mostrar la conversación de alguna manera. Se proporcionan algunos ejemplos más adelante.

Si necesitáis algún contexto de partida como ejemplo, podéis utilizar algún juego ya existente que tengáis a mano: buscad alguna conversación al azar, intentad explorar todas las opciones disponibles y luego tratad de reproducir ese comportamiento en la demo. Situaciones cotidianas también son perfectamente válidas (Por ejemplo...pedir un café), y si tenéis algo de vuestra cosecha también sirve, por supuesto, pero para el reto es secundario, no perdáis mucho tiempo en esto.

Referencias de juegos

Recursos

Tened en cuenta que varios de estos artículos están más orientados a diseño. Sin embargo, os pueden ayudar a orientaros a la hora de elegir el tipo de sistema que queráis implementar. Si encontráis algún otro no dudéis en compartirlo, la lista se irá actualizando.

Duda: ¿cómo guardo los datos de entrada?

Esto seguramente dependa bastante de la implementación que persigáis. En principio, para el reto no es necesario crear un editor de diálogos, así que en líneas generales recomendaría mantener los datos en un formato que podáis manipular fácilmente. Por ejemplo:

  • ¡Hardcodeado! Bien como constantes o arrays. Esta es una solución MUY poco flexible, pero os puede ayudar en un primer momento a centraros en la lógica.
  • Ficheros de texto con formato propio: con esta opción podéis tener mucho control sobre la información que necesitéis, pero tiene el coste extra de tener que implementar la funcionalidad de procesarlo, que puede complicarse fácilmente.
  • JSON Existen librerías para parsear JSON en casi cualquier lenguaje, y además es un formato bastante legible.
  • XML Puede ser algo más embarullado que un JSON, pero también existen librerías en casi cualquier lenguaje y es relativamente fácil de editar y entender.

Otros:

  • SQLite o algún otro sistema de bases de datos.
  • Blueprints?
  • Lenguajes de script? Salvo que ya tengáis un sistema listo para ello, seguramente lo desaconsejaría por la cantidad de curro que podría implicar desarrollar la interfaz entre la tecnología principal y el lenguaje de scripting)

¿Como visualizo la conversación?

Esto dependería mucho de la plataforma y tecnología que utilicéis. Como irnos a visualizaciones en 3D con animación facial, audio y demás se nos escaparía "un poco" de las manos, lo más probable será recurrir a texto.

Algunos ejemplos:

  • Texto por consola.
  • Interfaz gráfica de propósito general (Swing, QT, etc)
  • Gráficos + texto más integrados con tecnología más cercana a videojuegos (Aquí podéis elegir el motor y/o librería que os interese)
  • HTML + CSS
  • Audio: Sintetizadores text-to-speech

Ampliaciones

  • Experimentos con la visualización. Por ejemplo, el Dragon Age abandonó la lista de respuestas más clásica en RPGs del estilo en favor de la rueda de los Mass Effect (además de conversaciones habladas).
  • Localización a otros idiomas. La adaptación de un juego a distintos lenguajes o culturas puede ser un apartado mucho más complejo, ya que podria abarcar desde cambios en los ficheros de audio para cada idioma a gráficos, pasando por cambios en la dirección y sentido de escritura que podrían implicar cambios radicales en el diseño de la interfaz gráfica para dos regiones diferentes, por no hablar de adaptaciones culturales. Para el reto todo esto sería innecesario, así que podemos limitar esto a poder mostrar el diálogo en distintos idiomas (que también podría tener su complicación).
  • Diálogos con estado. En muchos juegos las opciones a elegir en una conversación pueden depender del estado del juego en ese momento. Por ejemplo, las estadísticas del jugador (un ejemplo muy bueno lo tenía el Arcanum, donde en función de la inteligencia del personaje era más o menos elocuente), las interacciones anteriores del jugador con ese NPC u otros, etc.
Open Source Your Knowledge: become a Contributor and help others learn. Create New Content