API Reference
Documentacion completa de todas las clases publicas del addon OhMyDialogSystem.
// Clases Principales
🦙
LlamaInterface
Interfaz de bajo nivel para llama.cpp. Carga modelos GGUF y genera texto.
GDExtension💬
DialogueManager
Orquestador principal del sistema de dialogos. Conecta todos los componentes.
Core🧠
MemoryManager
Sistema de memorias persistentes con busqueda semantica.
Memory🔊
TTSManager
Sintesis de voz con Piper TTS. Genera audio para dialogos.
TTS// Resources (Godot Resources)
| Resource | Descripcion | Uso |
|---|---|---|
| DialogueNodeData | Datos de un nodo individual en el grafo de dialogo | Interno, usado por DialogueGraph |
| CharacterIdentity | Define la personalidad, background y estilo de un NPC | Un resource por personaje |
| WorldContext | Contexto del mundo, lore, eventos actuales | Uno o mas por escenario |
| DialogueGraph | Grafo visual de nodos de dialogo | Uno por conversacion/quest |
| AIPreset | Configuracion de generacion (temperature, top_p, etc.) | Presets reutilizables |
| VoiceProfile | Configuracion de voz para TTS | Un profile por personaje |
Ver documentacion completa de Resources →
// Signals Comunes
DialogueManager
| Signal | Parametros | Descripcion |
|---|---|---|
| dialogue_started | graph: DialogueGraph | Emitido al iniciar un dialogo |
| npc_speaking | speaker, text, is_streaming | El NPC comenzo a "pensar" |
| npc_response_token | token: String | Cada token generado (streaming) |
| npc_response_completed | full_text: String | Respuesta completa del NPC |
| player_choices_available | choices: Array[Dictionary] | Opciones disponibles para el jugador |
| event_triggered | event_name, data: Dictionary | Evento del grafo disparado |
| dialogue_ended | reason: String | Conversacion finalizada |
| model_loading_started | model_path: String | Inicio de carga del modelo |
| model_loading_completed | - | Modelo cargado y listo |
LlamaInterface
| Signal | Parametros | Descripcion |
|---|---|---|
| model_loaded | info: Dictionary | Modelo cargado exitosamente |
| generation_started | - | Inicio de generacion |
| token_generated | token: String | Token generado |
| generation_completed | text: String | Generacion completada |
| generation_error | error: String | Error durante generacion |
// Ejemplo de Uso Completo
extends Node
# DialogueManager as child node (recommended) or @onready
@onready var dialogue_manager: DialogueManager = $DialogueManager
# Preloaded resources (or use @export to configure in editor)
var merchant_graph := preload("res://dialogues/merchant.tres")
# Note: merchant.tres has model_path = "user://models/mistral-7b-q4.gguf"
# The model is loaded automatically when start_dialogue() is called
func _ready():
# Configure character and world (or set via @export in editor)
dialogue_manager.default_character = preload("res://npcs/merchant.tres")
dialogue_manager.world_context = preload("res://world/fantasy_world.tres")
# Connect signals
dialogue_manager.npc_response_completed.connect(_on_npc_response)
dialogue_manager.player_choices_available.connect(_on_choices)
dialogue_manager.event_triggered.connect(_on_event)
dialogue_manager.dialogue_ended.connect(_on_dialogue_ended)
# Optional: loading indicators
dialogue_manager.model_loading_started.connect(_on_model_loading)
dialogue_manager.model_loading_completed.connect(_on_model_ready)
func start_conversation():
# Model loads automatically from DialogueGraph.model_path
dialogue_manager.start_dialogue(merchant_graph, DialogueManager.DialogueMode.HYBRID)
func send_message(text: String):
dialogue_manager.send_player_message(text)
func select_choice(index: int):
dialogue_manager.select_choice(index)
func _on_npc_response(response: String):
print("NPC: ", response)
func _on_choices(choices: Array[Dictionary]):
for i in choices.size():
print("[%d] %s" % [i + 1, choices[i].text])
func _on_event(event_name: String, data: Dictionary):
match event_name:
"open_shop":
open_shop_ui()
"give_quest":
add_quest(data["quest_id"])
func _on_dialogue_ended(reason: String):
print("Dialogue ended: ", reason)
func _on_model_loading(path: String):
show_loading_indicator()
func _on_model_ready():
hide_loading_indicator()
←
Volver a Home