FemCode v2.0: Sistemas de Diálogo

En muchísimos juegos, salvo en aquellos con un enfoque centrado exclusivamente en las mecánicas, la narrativa es un componente fundamental. Para transmitirla al jugador existen múltiples posibilidades, algunas de ellas exclusivas del medio y otras compartidas con otros como la literatura o el cine. El diálogo es una de ellas.

Una de las implementaciones más frecuentes que se puede encontrar es la basada en árboles (o grafos) de conversación. A partir de un nodo inicial se van presentando diversas opciones al jugador, que elegiría una. Su elección a su vez desencadenaría una respuesta por parte de un NPC (o, en juegos como el Divinity: Original Sin con otro jugador), que puede limitarse a continuar o terminar la conversación, o bien generar algún tipo de cambio en el estado del mundo (obtener información, por supuesto; cambios en la afinidad de un NPC hacia el jugador, obtener/perder items, completar/desbloquear misiones, etc).

En otros ejemplos más complejos el jugador tiene mayor flexibilidad a la hora de interactuar, pudiendo formar preguntas a base de combinar bloques para formar oraciones simples (Por ejemplo, “¿Quién es…[PERSONAJE]?”) y otros juegos llegan a utilizar intérpretes de lenguaje natural para interactuar directamente con NPCs. Un ejemplo reciente de esto último lo podemos ver en Event[0] (Por si tenéis curiosidad, su desarrollador dio una charla sobre cómo incorporar chatbots a un juego).

Para el segundo reto de código las programadoras de la comunidad de FemDevs escogieron como tema investigar la arquitectura que hay detrás de un sistema de diálogos. Como meta había que implementar la lógica de uno de ellos en una demo que permitiera mostrar una conversación y dar al jugador la posibilidad de interactuar.

Por simplicidad, diálogo hablado, localización y formatos elaborados de control o interfaz de usuario (por ejemplo, las ruedas de diálogo del Mass Effect) quedaban fuera del ámbito del reto.

(más…)

FEMCODE v0.1: Generación Procedimental de Mapas

Del 16 al 2 de julio tuvo lugar, de manera informal, el primer reto de programación de la comunidad de FemDevs. El objetivo consistía en escoger alguna mecánica o técnica utilizada en videojuegos, investigar bibliografía o juegos donde la utilizaran e implementarla, con plena libertad en cuanto a la elección de la tecnología o plataforma de distribución. A más alto nivel, la misión principal era practicar, aprender y divertirse.

Tras unos días de votación, el tema ganador fue la generación procedimental de mapas, por encima de otros como la implementación de cámaras 2D, sistemas de diálogos o lógica de combate por turnos a lo JRPG.

La creación automatizada de contenido es un área del desarrollo que suele resultar muy atrayente y se utiliza en un número cada vez mayor de juegos por una serie de razones. En primer lugar, por el reto que supone para los desarrolladores la lógica de generación en sí (ya sea un nivel de un plataformas como el Spelunky, un área en el Diablo 2 o un planeta completo como en No Man’s Sky), así como el ajuste y pulido de esa lógica de manera que ese contenido se sienta variado, nuevo y desafiante tanto mecánica como estéticamente. Si tenemos éxito aplicando este tipo de técnicas, podemos dotar a nuestros juegos de una rejugabilidad inmensa con un esfuerzo menor del que requeriría crear todo ese contenido de manera manual (dichos esfuerzos se centrarían en cambio en definir y revisar las reglas de los generadores).

Un ejemplo de cómo se ha generado un nivel en Spelunky (fuente)

Aunque la generación procedimental puede aplicarse a muchos tipos de contenido, en esta ocasión nos centramos exclusivamente en la creación de niveles. Inicialmente se había puesto el foco en la obtención de mapas más orgánicos, como sistemas de cavernas o islas pero decidimos abrirlo a otros tipos de niveles, como laberintos, o mazmorras con salas regulares, lo que ofrecía más posibilidades a la hora de explorar algoritmos.

A continuación enlazamos a las demos de las participantes, junto a un breve resumen de las mismas por parte de sus autoras. Desde los enlaces, además, puede accederse al código fuente y/o explicaciones más detalladas. (más…)