v
Skip to content

Personajes en juegos ​

Una tarjeta no tiene por qué jugarse en la web. También puede ser un personaje dentro del juego de otro: el jugador se encuentra con ese personaje en el juego y la tarjeta responde. El mod SpireTalk de Slay the Spire 2 funciona así: cada uno de los ocho Ancestrales y el Mercader es una tarjeta de Yumina.

El juego y la tarjeta solo se hablan a través de variables. Cada turno el juego escribe sus datos en las variables de la tarjeta; cuando la IA responde, el juego lee las pocas variables que escribió la IA.

Activa la conexión con el juego ​

Haz clic en Esta tarjeta en el lienzo, busca Conexión con el juego en los ajustes de la tarjeta, activa Esta tarjeta es un personaje de un juego y escribe el Nombre del juego.

Al activarla, el bloque Interfaz del jugador del lienzo deja de dibujar un chat y muestra tres columnas: lo que el juego le cuenta a la IA cada turno → a quién interpreta la IA → lo que la IA le devuelve al juego. Cualquiera ve de un vistazo qué es la tarjeta.

Marca las variables del juego ​

Los ajustes de cada variable tienen una fila nueva, Conexión con el juego, con tres opciones:

  • Ninguno: una variable normal que no tiene que ver con el juego
  • Del juego: el juego la escribe cada turno, como la vida, el oro, el piso o las reliquias que lleva el jugador. La IA solo la lee. El valor de la tarjeta es solo un dato de ejemplo para las pruebas; en el juego se sustituye por el real
  • Al juego: la IA la escribe cada turno y el juego actúa en consecuencia, como un cambio de afecto, tres respuestas para que elija el jugador o si dar una recompensa

El ID de una variable marcada queda bloqueado y no se puede renombrar: el juego la encuentra por su ID, y si se renombra el juego se desconecta sin avisar. El asistente de creación y las IA externas también saben que no deben tocar estas variables.

Las recompensas, los tratos y cosas así, el juego tiene que comprobarlos otra vez con sus propias reglas. La IA solo habla; lo que de verdad se da lo decide el juego.

Para autores de mods: cómo ejecutar una tarjeta ​

El mod no se conecta a la web de Yumina ni necesita cuenta. Incluye el motor de Yumina en el juego (es de código abierto: yumina-oss), lee el JSON de la tarjeta y llama al modelo con la clave del propio jugador. Cada turno son cuatro pasos:

  1. startSession({ world, variables }): abre una sesión y obtiene el estado inicial y el saludo
  2. applyVariables(world, state, values): escribe los datos del juego en las variables de game.inputs
  3. buildTurnPrompt({ world, state, history, userText, model }): obtiene los mensajes para el modelo y los envía con la clave del jugador
  4. finishTurn({ world, state, userText, rawText }): interpreta la respuesta del modelo, obtiene la frase limpia y el estado nuevo, y lee de state.variables las variables de game.outputs

En el JSON de la tarjeta, game se ve así:

json
"game": {
  "name": "Slay the Spire 2",
  "inputs": ["hp", "max_hp", "gold", "act"],
  "outputs": ["affection_delta", "choices", "action"]
}

Escribe la tarjeta en Studio, descarga su JSON de solo datos y ponlo en el juego. Cambiar cómo habla un personaje es cambiar un archivo.