Saltar al contenido
Murray's Lab

Laboratorio · proyecto experimental

D&D Lab · una partida de Dungeons & Dragons jugada por LLMs locales

Cinco modelos de IA corriendo en local —cuatro como personajes, uno como master— se sientan a jugar una campaña real de D&D 5e en español. Tiradas reales, fichas SRD auditadas, escenas ilustradas con Flux, sesiones de máximo una hora y todo publicado en directo en un canal de Telegram. Sin OpenAI, sin servidores externos. Solo una Radeon 8060S y curiosidad.

D&D 5e SRD 100% local Idioma: español Actualizado

El canal es privado por invitación. La web es un espejo automático: lo que pasa en Telegram aparece aquí en segundos, y si se borra allí, también se borra aquí.

El equipo · cinco modelos, cinco personalidades

Cada personaje es un LLM distinto, con su propia ficha 5e nivel 1, su voz narrativa y su memoria personal. Lo más interesante del experimento es ver cómo los modelos divergen aunque varios compartan arquitectura: la personalidad emerge del prompt, no del peso.

Master · DM

Vorgath el Cronista

Modelo: gemma4:31b

El narrador omnisciente del mundo. Tira los dados ocultos cuando hace falta, mueve a los NPCs y abre la "Voz Divina" para que el humano (Alvaro) intervenga puntualmente como guiño del dungeon master.

Sorcerer · Half-Orc

Engong Tres-Dedos

Modelo: gemma4:31b

Media-orca de 44 años y 2,09 m. Hechicera de linaje dracónico. Insulta de forma cariñosa, esconde un huérfano del que cuida en secreto y cojea cuando lleva mucho rato andando.

Fighter · Mountain Dwarf

Kildrak el del Acero

Modelo: qwen3.6:latest

Enano de montaña de 199 años. Espada larga, arco corto y un pasado de criminal que arrastra. Cree que las normas no se aplican a alguien tan listo como él. Suspira mucho.

Wizard · Tiefling

Bryseis el Niño-Lobo

Modelo: gemma4:31b

Tiefling noble de 57 años, mago de la Tradición Arcana. Apuesta más de lo que puede permitirse, busca a un familiar desaparecido hace años y se rasca el cuello cuando miente.

Barbarian · High Elf

Quill del Norte

Modelo: qwen3.6:latest

Elfe alte no binarie de 186 años, bárbare con un Greataxe y juramento de vengar el pueblo natal arrasado. Folk Hero, naturaleza ante todo. Confía demasiado pronto en su primer juicio.

Estado de la campaña

La partida se publica en directo. Lo que ves aquí es el feed real del canal de Telegram, generado por un mirror MTProto que escucha eventos en tiempo casi real.

Ver feed completo en directo →

32

mensajes publicados

1

capítulo en curso

5

personajes activos

13/05/2026, 15:07

última actualización

Cómo funciona por dentro

Para los que disfrutan de mirar bajo el capó: este es el flujo real de cada turno.

  1. 1. El master narra y emite tags. El LLM del master describe la escena. En su salida puede emitir tags estructurados: [TURNO: Kildrak], [ROLL: persuasión], [SAVE: Engong DC 14 CON], [ATTACK], [STATE: Kildrak HP -4], [IMAGEN: prompt EN], [COMBATE: INICIO], [FIN DE SESIÓN].
  2. 2. El orquestador resuelve. Cuando ve un tag, lo ejecuta. [ROLL] lanza una tirada con los bonificadores reales de la ficha. [STATE: ...] aplica daño real a characters.json y publica el cambio en el canal. [IMAGEN: ...] dispara Flux on-demand para generar y publicar la imagen.
  3. 3. El PJ apropiado responde. Cuando aparece [TURNO: X], el orquestador llama al LLM del personaje X. Le pasa su system prompt (personalidad), su ficha, su summary previo, las últimas 5 entradas de su memoria y la narración actual. El PJ responde en su voz. Si necesita recordar algo concreto, emite [RECUERDO: pregunta] y el sistema busca en su memory/<pj>.jsonl, le inyecta los hits y le re-pregunta solo una vez (anti-bucle).
  4. 4. Voz Divina opcional. Alvaro tiene un chat privado con el bot. Cualquier cosa que escriba mientras hay sesión activa entra como intervención narrativa del DM en el siguiente turno del master. Se usa con sutileza: empujones, no decisiones.
  5. 5. Cierre diegético. Cuando llega el hard warn de tiempo, el master sabe que tiene que cerrar y narra un final natural del capítulo (no un corte abrupto). El próximo /play retoma desde ese punto, con todas las memorias actualizadas.
  6. 6. Consolidación al cierre de capítulo. Cada PJ recibe sus entradas del capítulo + su summary previo, y su LLM escribe la versión nueva del summary en primera persona, manteniendo su voz. Esto evita que los modelos se "olviden" entre capítulos y mantiene continuidad real de personajes.

Por qué hago este lab

📐 Probar prompting en presión

Un rol exige memoria, consistencia, decisiones en tiempo real y respeto a reglas. Es el banco de pruebas perfecto para ver hasta dónde llegan los modelos open-weights con buen system prompting.

🎲 Ver emerger personalidad

Dos de los cinco personajes comparten modelo base. Aun así desarrollan formas de hablar y de decidir distintas. Documentar ese surgimiento es la mitad del valor del lab.

🧙 Y porque me apetece

No todo proyecto tiene que tener ROI medible. Este es de los que se hacen porque se quieren hacer, y eso ya es suficiente justificación.

Preguntas frecuentes sobre el D&D Lab

¿Esto es una partida de D&D real, en directo?
Sí. Cada sesión tiene un máximo de una hora y se ejecuta como una partida normal: el master describe la escena, los personajes deciden qué hacer, se tiran dados (los resuelve el orquestador con tags estructurados como [ROLL] y [SAVE]), y los resultados se aplican al estado del personaje (HP, slots, condiciones). Cuando expira el tiempo, el master cierra diegéticamente el capítulo y el siguiente /play arranca donde quedó. Todo lo que pasa en el canal de Telegram se refleja en directo en /dnd-lab/chat/.
¿Quién juega los personajes?
Cinco modelos de IA distintos, cada uno con su personalidad, ficha y memoria propia, corriendo en local sobre Ollama (no es ChatGPT ni OpenAI ni Claude vía API). Vorgath (Master), Engong y Bryseis usan gemma4:31b; Kildrak y Quill usan qwen3.6. Alvaro (el humano del laboratorio) participa solo como "Voz Divina": una intervención narrativa puntual desde el chat privado con el bot, no controla a ningún personaje.
¿Se publican todas las tiradas o están maquilladas?
Se publican todas las tiradas con resultado real. El orquestador detecta los tags [ROLL] y [SAVE] en la narración del master, hace la tirada (incluyendo bonificadores reales de la ficha 5e SRD del personaje) y publica el resultado en el canal. Si el master quiere ocultar una tirada por motivos narrativos (un ataque del que el grupo no debería saber), lo hace explícito con [NPC_ATTACK] y el bot oculta solo el número, no el resultado.
¿Las fichas son D&D 5e oficiales?
Las fichas están construidas sobre el SRD (System Reference Document) de D&D 5e, que es la versión abierta y libre publicada por Wizards of the Coast. Nivel 1 al inicio. Hay un script de validación (bin/validate_sheets.py) que comprueba que HP, modificadores, slots, etc. cuadran con las reglas SRD antes de cada sesión.
¿Por qué LLMs locales y no la API de OpenAI o Claude?
Tres razones. (1) Coste: una hora de sesión consume miles de tokens distribuidos entre 5 modelos, y por API saldría caro mantenerlo a diario. (2) Latencia: corriendo en una Radeon 8060S local los turnos van fluidos sin esperar a una API remota. (3) Experimentación: el objetivo del lab es ver hasta dónde llegan modelos open-weights con prompting cuidado, no demostrar que GPT-4 puede jugar al rol (eso ya se sabe).
¿Puedo unirme al canal?
El canal es privado por invitación. Hay enlace de invitación más arriba en esta página; si lo pulsas, Telegram te pedirá unirte. Aceptamos lecturas pasivas (puedes leer pero no escribir, los canales de Telegram son unidireccionales). Si en algún momento abrimos un grupo de discusión paralelo, lo anunciaremos aquí.
¿Cómo gestionáis la memoria entre sesiones?
Cada personaje tiene un fichero memory/<pj>.jsonl donde se acumulan sus entradas relevantes turno a turno, y un memory/<pj>.summary.md que su propio LLM consolida al cierre de cada capítulo escribiéndolo en primera persona. Al inicio de la siguiente sesión, cada personaje recibe ese resumen + las últimas 5 entradas como contexto. Si necesita recordar algo concreto, emite el tag [RECUERDO: pregunta] y el orquestador busca en su histórico, le inyecta los resultados y le re-pregunta. Sin esto, los modelos serían amnésicos y el rol no funcionaría.
¿Y las imágenes de los personajes?
Los retratos se generaron una sola vez con Flux (modelo open-weights de Black Forest Labs) corriendo en local, y se cachean para que no haya que regenerarlos cada sesión. Algunas escenas concretas se ilustran al vuelo durante la partida cuando el master emite el tag [IMAGEN: prompt en inglés]; eso lanza una generación con Flux y publica la imagen junto a la narración. Para no quemar VRAM constantemente, ComfyUI con Flux solo se carga cuando hace falta y se descarga al terminar el ciclo.

Únete

¿Quieres ver al ghoul morir (o ganar)?

El canal es público pero por invitación. Si te interesa la combinación D&D + IA local + español, entra y léelo en directo. Sin spoilers en redes, por favor.