Resources
Los Resources son objetos de datos serializables de Godot que almacenan configuración reutilizable. OhMyDialogSystem usa Resources para definir personajes, mundos, grafos de diálogo y más.
🔷 DialogueNodeData
Representa los datos de un nodo individual en un grafo de diálogo. Es la unidad básica del sistema de diálogos.
Archivo: addons/ohmydialog/resources/dialogue_node_data.gd
Propiedades
| Propiedad | Tipo | Descripción |
|---|---|---|
| node_id | String | Identificador único UUID del nodo. Se genera automáticamente. |
| node_type | NodeType | Tipo de nodo que determina su comportamiento. Ver enum abajo. |
| editor_position | Vector2 | Posición del nodo en el editor visual GraphEdit. |
| data | Dictionary | Datos específicos del tipo de nodo. La estructura varía según node_type. |
| output_count | int | Número de slots de salida. Calculado automáticamente según el tipo. |
Enum: NodeType
START
END
AI_RESPONSE
STATIC_RESPONSE
PLAYER_CHOICE
CONDITION
EVENT
SET_VARIABLE
JUMP
JUMP_TO_FREE
RETURN_TO_GRAPH
Métodos
Valida los datos del nodo. Retorna array de errores (vacío si es válido).
Serializa el nodo a un Dictionary para almacenamiento JSON.
Crea un DialogueNodeData desde un Dictionary.
Retorna el nombre legible del tipo de nodo.
Retorna el color sugerido para el nodo en el editor.
👤 CharacterIdentity
Define la identidad y personalidad de un NPC. Se usa para generar el system prompt que instruye al LLM cómo interpretar al personaje.
Archivo: addons/ohmydialog/resources/character_identity.gd
Propiedades
| Grupo | Propiedad | Tipo | Descripción |
|---|---|---|---|
| Identity | character_id | String | ID único para referencias y guardados |
| character_name | String | Nombre mostrado en diálogos | |
| portrait | Texture2D | Imagen de avatar para UI | |
| Personality | personality | String | Rasgos de personalidad y tendencias |
| background | String | Historia y experiencias del personaje | |
| speech_style | SpeechStyle | Estilo de habla (casual, formal, medieval...) | |
| speech_patterns | String | Muletillas o tics verbales | |
| Knowledge | knowledge | Array[String] | Temas que el personaje conoce |
| secrets | Array[String] | Información que oculta | |
| Motivation | goals | Array[String] | Objetivos del personaje |
| fears | Array[String] | Miedos y aversiones | |
| Relationships | relationships | Dictionary | character_id → descripción de relación |
| Examples | example_dialogues | Array[String] | Líneas de ejemplo que demuestran la voz |
🌍 WorldContext
Define el contexto del mundo para la generación de diálogos. Incluye setting, lore, eventos actuales y estado dinámico que puede cambiar durante el juego.
Archivo: addons/ohmydialog/resources/world_context.gd
Propiedades
| Grupo | Propiedad | Tipo | Descripción |
|---|---|---|---|
| World Identity | world_id | String | ID único del contexto |
| world_name | String | Nombre del mundo/setting | |
| setting | String | Descripción breve del escenario | |
| time_period | TimePeriod | Era tecnológica y cultural | |
| Lore & History | lore | String | Historia profunda del mundo |
| factions | Dictionary | faction_id → descripción | |
| Geography | locations | Dictionary | location_id → descripción |
| current_location | String | Ubicación actual (dinámico) | |
| Characters | important_npcs | Dictionary | NPCs importantes del mundo |
| Current State | current_events | Array[String] | Eventos actuales (dinámico) |
| rules | Array[String] | Reglas del mundo para la IA | |
| dynamic_state | Dictionary | Variables de estado (dinámico) | |
| Tone & Style | tone | String | Tono general del mundo |
| forbidden_topics | Array[String] | Temas a evitar |
Métodos
Genera el contexto del mundo para inyectar en prompts del LLM.
Actualiza una variable de estado dinámico.
Obtiene una variable de estado.
Agrega un evento actual al mundo.
Elimina un evento del mundo.
Cambia la ubicación actual.
🔗 DialogueGraph
Contiene un grafo completo de diálogo con todos los nodos, conexiones y contexto. Es el recurso principal que se carga para ejecutar una conversación.
Archivo: addons/ohmydialog/resources/dialogue_graph.gd
Propiedades
| Grupo | Propiedad | Tipo | Descripción |
|---|---|---|---|
| Graph Identity | graph_id | String | ID único del grafo |
| display_name | String | Nombre mostrado en el editor | |
| description | String | Descripción del diálogo | |
| Context | default_character | CharacterIdentity | Personaje por defecto para respuestas IA |
| world_context | WorldContext | Contexto del mundo | |
| Graph Data | nodes | Dictionary | node_id → DialogueNodeData |
| connections | Array[Dictionary] | Conexiones entre nodos | |
| start_node_id | String | ID del nodo de inicio | |
| Variables | local_variables | Dictionary | Variables locales del diálogo |
| Editor | editor_metadata | Dictionary | Metadatos del editor visual |
Signals
| Signal | Parámetros | Descripción |
|---|---|---|
| node_added | node: DialogueNodeData | Emitido al agregar un nodo |
| node_removed | node_id: String | Emitido al eliminar un nodo |
| connection_added | from, from_slot, to, to_slot | Emitido al crear conexión |
| connection_removed | from, from_slot, to, to_slot | Emitido al eliminar conexión |
Métodos Principales
Agrega un nodo al grafo. Retorna el node_id.
Crea y agrega un nuevo nodo del tipo especificado.
Elimina un nodo y todas sus conexiones.
Crea una conexión entre dos nodos. Retorna true si tuvo éxito.
Valida la estructura del grafo. Retorna array de errores.
⚙️ AIPreset
Almacena parámetros de generación LLM como presets reutilizables.
Archivo: addons/ohmydialog/resources/ai_preset.gd
Propiedades
| Grupo | Propiedad | Descripción |
|---|---|---|
| Identity | preset_name | Nombre legible del preset |
| description | Descripción de cuándo usar este preset | |
| preset_type | Tipo de preset (ver enum) | |
| Sampling | temperature | Aleatoriedad (0 = greedy, 2 = muy aleatorio) |
| top_p | Nucleus sampling threshold | |
| top_k | Considerar solo los K tokens más probables | |
| min_p | Probabilidad mínima para considerar token | |
| typical_p | Typical sampling (1.0 = deshabilitado) | |
| Output | max_tokens | Máximo de tokens por respuesta |
| stop_sequences | Secuencias que detienen la generación | |
| Repetition | repeat_penalty | Penalización por repetición |
| repeat_last_n | Tokens recientes a considerar | |
| frequency_penalty | Penaliza por frecuencia (estilo OpenAI) | |
| presence_penalty | Penaliza si apareció (estilo OpenAI) | |
| Context | context_size | Tamaño máximo de contexto en tokens |
Métodos
Aplica los parámetros del preset a una instancia de LlamaInterface.
Crea preset creativo.
Crea preset balanceado.
Crea preset roleplay.
🤖 ModelConfig
Configuración para un modelo GGUF. Almacena metadatos del modelo, URL de descarga y parámetros de carga.
Archivo: addons/ohmydialog/resources/model_config.gd
Propiedades
| Grupo | Propiedad | Descripción |
|---|---|---|
| Model Info | id | ID único del modelo |
| display_name | Nombre legible | |
| model_path | Ruta al archivo GGUF | |
| download_url | URL de HuggingFace para descarga | |
| size_mb | Tamaño estimado en MB | |
| Defaults | default_temperature | Temperatura por defecto (0.7) |
| n_ctx | Tamaño de contexto en tokens (2048) | |
| n_gpu_layers | Capas GPU (-1 = todas) | |
| Metadata | architecture | Arquitectura (llama, qwen2...) |
Próximamente
Estos Resources están planificados pero aún no implementados:
| Resource | Descripción | Issue |
|---|---|---|
| VoiceProfile | Configuración de voz TTS por personaje | #132 |