DialogueManager
GDScript Core
Orquestador principal del sistema de diálogos. Gestiona la ejecución de conversaciones en múltiples modos, integrando grafos de diálogo con generación de IA.
// Herencia
Node → DialogueManager
// Descripcion
DialogueManager es el componente central que coordina todos los aspectos del sistema de diálogos:
- Ejecución de grafos: Navega por nodos de diálogo definidos visualmente
- Generación de IA: Integra con LlamaInterface para respuestas dinámicas
- Gestión de contexto: Mantiene variables, historial y estado de conversación
- Sistema de consultas: Permite que la lógica del juego responda a condiciones y acciones
Modos de Diálogo
- Free Conversación abierta con IA, sin estructura de grafo
- Scripted Ejecución estricta del grafo de diálogo
- Hybrid Combina ambos, permitiendo transiciones entre grafo y conversación libre
// Propiedades
Propiedades Exportadas
| Tipo | Propiedad | Default | Descripcion |
|---|---|---|---|
| CharacterIdentity | default_character | null | Personaje interactivo por defecto |
| WorldContext | world_context | null | Contexto mundial compartido |
| bool | streaming_enabled | true | Habilitar respuestas en streaming |
| int | max_context_tokens | 4096 | Tokens máximos de contexto |
| int | response_reserve_tokens | 512 | Tokens reservados para respuesta |
Propiedades de Solo Lectura
| Tipo | Propiedad | Descripcion |
|---|---|---|
| DialogueMode | current_mode | Modo actual (FREE/SCRIPTED/HYBRID) |
| DialogueGraph | current_graph | Grafo activo |
| CharacterIdentity | active_character | Personaje activo actual |
// Metodos
Control de Dialogo
| Retorno | Metodo |
|---|---|
| void | start_dialogue(graph, mode) |
| void | end_dialogue(reason) |
| bool | is_active() const |
Interaccion del Jugador
| Retorno | Metodo |
|---|---|
| void | send_player_message(text) |
| void | select_choice(index) |
Configuracion
| Retorno | Metodo |
|---|---|
| void | set_character(character) |
| void | set_world_context(context) |
| void | set_streaming_enabled(enabled) |
Variables y Contexto
| Retorno | Metodo |
|---|---|
| Variant | get_variable(name, default) |
| void | set_variable(name, value, scope) |
| bool | evaluate_condition(expression) |
Query System
| Retorno | Metodo |
|---|---|
| bool | query_condition(key, expected, default) |
| bool | query_action(key, value) |
| Variant | query_value(key, default) |
Utilidades
| Retorno | Metodo |
|---|---|
| History | get_conversation_history() |
| Context | get_context_manager() |
| void | clear_history() |
| Dictionary | get_debug_info() |
// Señales
Ciclo de Vida
| Señal | Descripción |
|---|---|
| dialogue_started(graph) | Emitida cuando inicia una sesión de diálogo |
| dialogue_ended(reason) | Emitida cuando termina el diálogo |
| mode_changed(old, new) | Emitida cuando cambia el modo de diálogo |
Respuestas del NPC
| Señal | Descripción |
|---|---|
| npc_speaking(speaker, text, stream) | Emitida cuando el NPC comienza a hablar. |
| npc_response_token(token) | Emitida para cada token durante streaming |
| npc_response_completed(text) | Emitida cuando la respuesta está completa |
Interaccion del Jugador
| Señal | Descripción |
|---|---|
| player_choices_available(choices) | Emitida cuando hay opciones disponibles. |
| waiting_for_player_input | Emitida cuando se espera entrada del jugador |
Eventos y Variables
| Señal | Descripción |
|---|---|
| event_triggered(name, data) | Emitida cuando un nodo de evento se ejecuta |
| variable_changed(name, old, new) | Emitida cuando una variable cambia |
Carga de Modelo
| Señal | Descripción |
|---|---|
| model_loading_started(path) | Emitida cuando comienza la carga de IA |
| model_loading_completed() | Emitida cuando el modelo está listo |
Query System
| Señal | Descripción |
|---|---|
| condition_query_requested(key, ...) | Verificar condición: callback.call(bool) |
| action_query_requested(key, ...) | Ejecutar acción: callback.call() |
| value_query_requested(key, ...) | Obtener valor: callback.call(value) |
Errores
| Señal | Descripción |
|---|---|
| error_occurred(message) | Emitida cuando ocurre un error |
Descripciones de Metodos
start_dialogue
void start_dialogue(graph: DialogueGraph = null, mode: DialogueMode = HYBRID)
Inicia una nueva sesión de diálogo. Si hay un diálogo activo, lo termina primero.
- Carga automáticamente el modelo de IA si el grafo especifica
model_path - Aplica el
AIPresetdel grafo si está definido - Inicializa variables locales desde el grafo
send_player_message
void send_player_message(text: String)
Envía un mensaje del jugador al sistema. En modo FREE genera respuesta IA, en SCRIPTED pasa al grafo.
get_variable
Variant get_variable(name: String, default: Variant = null)
Obtiene una variable del contexto de diálogo.
query_condition
bool query_condition(key: String, expected: Variant = true, default: bool = false)
Consulta una condición al código del juego. Emite condition_query_requested y espera respuesta.
get_debug_info
Dictionary get_debug_info()
Retorna información de debug sobre el estado actual del diálogo.