NPC con LLM local y memoria en Godot
Un NPC con IA no necesita ser infinito. Necesita personaje, lore, memoria pequeña, límites claros y una salida segura cuando el modelo tarda o inventa demasiado.
Objetivos de aprendizaje
- Diseñar un NPC que responde con lore y estado de misión.
- Conectar Godot a un servidor local compatible con HTTP.
- Evitar diálogos lentos, contradictorios o fuera de tono.
En cristiano: memoria de NPC. No es guardar todo el chat. Es conservar hechos útiles: nombre del jugador, misión activa, promesas hechas y relación con el personaje.
Terminal
npc_memory:
npc_id: "herrera_lina"
player_name: "Ada"
facts:
- "Ada encontró la llave del molino"
- "Lina no confía en el alcalde"
quest_state: "buscar_mapa"
tone: "directa, rural, algo seca"
forbidden:
- "revelar final"
- "inventar ubicaciones fuera del mapa" Idea clave. Para juegos pequeños, un prompt bien limitado y 10 hechos persistentes suelen funcionar mejor que una memoria vectorial compleja.
Cuidado. Nunca bloquees el hilo principal esperando al modelo. Si tarda, muestra una respuesta fallback o una animación breve y recupera después.
Terminal
Prompt de sistema para el NPC: Eres Lina, herrera de Puerto Bruma. Responde en máximo 2 frases. Solo conoces lugares del mapa: molino, puerto, mina y plaza. Si el jugador pregunta algo fuera del lore, redirige a la misión activa. No reveles soluciones completas; da una pista verificable.
Comprueba que funciona. Haz 20 preguntas raras: fuera del mapa, repetidas, intentando saltarse la misión y pidiendo secretos. El NPC debe mantener tono, límites y estado.
Guardar y reabrir el proyecto.
Guarda el contrato del NPC como archivo de diseño: personalidad, lore permitido, estado, fallbacks y pruebas. Así podrás regenerar código sin perder coherencia.