Wiki / API Reference / Resources

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.

Tip: Los Resources se guardan como archivos .tres y se pueden crear desde el menú New Resource en Godot, o desde el FileSystem haciendo click derecho.

🔷 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
Punto de entrada del grafo
END
Termina la ejecución del diálogo
AI_RESPONSE
Genera respuesta dinámica con LLM
STATIC_RESPONSE
Muestra texto pre-escrito
PLAYER_CHOICE
Presenta opciones al jugador
CONDITION
Bifurcación basada en condición
EVENT
Emite un signal/evento al juego
SET_VARIABLE
Modifica una variable de diálogo
JUMP
Salta a otro grafo o nodo
JUMP_TO_FREE
Escapa a modo conversación libre
RETURN_TO_GRAPH
Retorna del modo libre al grafo

Métodos

func validate() -> Array[String]

Valida los datos del nodo. Retorna array de errores (vacío si es válido).

func to_dict() -> Dictionary

Serializa el nodo a un Dictionary para almacenamiento JSON.

static func from_dict(dict: Dictionary) -> DialogueNodeData

Crea un DialogueNodeData desde un Dictionary.

static func get_type_name(type: NodeType) -> String

Retorna el nombre legible del tipo de nodo.

static func get_type_color(type: NodeType) -> Color

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

func to_context_prompt() -> String

Genera el contexto del mundo para inyectar en prompts del LLM.

func set_state(key: String, value: Variant) -> void

Actualiza una variable de estado dinámico.

func get_state(key: String, default: Variant = null) -> Variant

Obtiene una variable de estado.

func add_event(event: String) -> void

Agrega un evento actual al mundo.

func remove_event(event: String) -> void

Elimina un evento del mundo.

func set_location(location_id: String) -> void

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

func add_node(node: DialogueNodeData) -> String

Agrega un nodo al grafo. Retorna el node_id.

func create_node(type: NodeType, position: Vector2) -> Node

Crea y agrega un nuevo nodo del tipo especificado.

func remove_node(node_id: String) -> void

Elimina un nodo y todas sus conexiones.

func connect_nodes(from, from_slot, to, to_slot) -> bool

Crea una conexión entre dos nodos. Retorna true si tuvo éxito.

func validate() -> Array[String]

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

func apply_to(llama: Object) -> void

Aplica los parámetros del preset a una instancia de LlamaInterface.

static func create_creative() -> AIPreset

Crea preset creativo.

static func create_balanced() -> AIPreset

Crea preset balanceado.

static func create_roleplay() -> AIPreset

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
Volver a Home