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:
startSession({ world, variables }): abre una sesión y obtiene el estado inicial y el saludoapplyVariables(world, state, values): escribe los datos del juego en las variables degame.inputsbuildTurnPrompt({ world, state, history, userText, model }): obtiene los mensajes para el modelo y los envía con la clave del jugadorfinishTurn({ world, state, userText, rawText }): interpreta la respuesta del modelo, obtiene la frase limpia y el estado nuevo, y lee destate.variableslas variables degame.outputs
En el JSON de la tarjeta, game se ve así:
"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.
