feat: add readmes

This commit is contained in:
2025-10-12 23:18:17 +02:00
parent 86e5a7e973
commit 7a35823e8c
32 changed files with 187 additions and 20 deletions

BIN
Content/Art/T_Damage_T1.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Art/T_Damage_T2.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Art/T_Damage_T3.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Art/T_Health_T1.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Art/T_Health_T2.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Art/T_Health_T3.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Art/T_Skill_Damage_T1.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Art/T_Skill_Damage_T2.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Art/T_Skill_Damage_T3.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Art/T_Skill_Health_T1.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Art/T_Skill_Health_T2.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Art/T_Skill_Health_T3.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Art/T_Skill_Speed_T1.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Art/T_Skill_Speed_T2.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Art/T_Skill_Speed_T3.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Art/T_Skill_Start.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Art/T_Speed_T1.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Art/T_Speed_T2.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Art/T_Speed_T3.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Art/T_Start.uasset (Stored with Git LFS)

Binary file not shown.

130
README-es.md Normal file
View File

@@ -0,0 +1,130 @@
# Proyecto UI U-Tad
**[Read in English](README.md)** | **Español**
---
## Implementación del Sistema de Árbol de Habilidades
### Resumen
Un sistema completo de árbol de habilidades con progresión basada en nodos, validación de prerrequisitos, líneas de conexión visuales y configuración orientada a datos.
---
## Arquitectura: Decisión de Blueprint
### Implementación en Blueprint
**Componentes:** `WBP_SkillTree`, `WBP_SkillNode`, `WBP_SkillNodeTooltip`
**Justificación:**
- **Velocidad de iteración**: El diseño y estilización de UI requiere iteración visual rápida
- **Amigable para diseñadores**: Artistas/diseñadores pueden modificar la UI sin conocimientos de C++
---
## Sistemas Principales
### 1. Capa de Datos (`SkillTreeTypes.h`)
**Estructuras:**
- `FSkillNodeData`: Fila de definición de habilidad para la tabla de datos (nombre, coste, prerrequisitos, efectos, bandera de inicio)
- `FSkillNodeRuntime`: Envoltorio de estado en tiempo de ejecución
- `ESkillNodeState`: Enum de estado (Bloqueado, Disponible, Seleccionado, Comprado)
**Decisión**: El diseño basado en Data Table permite a no programadores configurar habilidades sin recompilar.
### 2. Capa de Lógica (`SkillTreeComponent`)
**Responsabilidades:**
- Inicialización del árbol de habilidades desde DataTable
- Gestión de estado (prerrequisitos, comprobaciones de asequibilidad)
- Validación de selección y confirmación de compra
- Auto-compra de habilidades iniciales
- Gestión de puntos de habilidad
- Ganchos de aplicación de efectos
**Características Clave:**
- **Ordenación por orden de compra**: Asegura que los prerrequisitos se compren antes que los dependientes
- **Deselección en cascada**: Eliminar un prerrequisito deselecciona las habilidades dependientes
- **Habilidades iniciales**: Marcadas en DataTable, auto-compradas en init, preservadas en reset
- **Agregación de estadísticas**: Proporciona funciones `GetTotal[Stat]Bonus()` para sumar bonificaciones de todas las habilidades compradas
### 3. Capa de Integración de Estadísticas (`CharacterStatsComponent`)
**Responsabilidades:**
- Cálculo automático de estadísticas desde habilidades compradas
- Gestión de estadísticas del personaje (Salud, Daño, Velocidad)
- Actualizaciones en tiempo real cuando se compran habilidades
- Integración con velocidad de movimiento
**Cómo funciona:**
- Encuentra SkillTreeComponent en el mismo actor en BeginPlay
- Escucha el evento `OnSkillPurchased`
- Itera todas las habilidades compradas, suma bonificaciones planas + porcentuales
- Aplica fórmula: `StatFinal = Base + BonusPlano + (Base * BonusPorcentual / 100)`
- Auto-actualiza la velocidad de CharacterMovementComponent
- Emite eventos de cambio de estadísticas para actualizaciones de UI
**Decisión**: Un componente de estadísticas separado mantiene las responsabilidades separadas - SkillTreeComponent maneja la progresión, CharacterStatsComponent maneja la aplicación de estadísticas. Hace ambos reutilizables independientemente.
### 4. Capa de Visualización (`SkillTreeConnectionsWidget`)
**Responsabilidades:**
- Dibujado automático de líneas entre nodos prerrequisito (¡Solo necesitas colocar los nodos en la UI!)
- Coloreado dinámico de líneas basado en estados de habilidades
- Refresco basado en eventos cuando cambian los estados
**Enfoque Técnico:**
- **Búsqueda genérica**: Funciona con cualquier jerarquía de widgets para que diseñadores/artistas no estén limitados al crear el widget del árbol de habilidades (Canvas, Overlay, Grid)
- **Override de NativePaint**: Renderizado directo con Slate para rendimiento
- **Binding de delegados**: Se refresca automáticamente cuando cambian los estados de las habilidades
**Decisión**: Un único widget auto-contenido elimina la gestión manual de líneas y complejidad de Blueprint.
### 5. Capa de UI (Blueprints)
**WBP_SkillNode & WBP_SkillNodeTooltip:**
- Muestra icono de habilidad, estado, coste
- Maneja eventos de clic (seleccionar/deseleccionar)
- Almacena SkillID para búsqueda en tiempo de ejecución
- Soporte de tooltip personalizado para mostrar detalles de habilidad
- Actualizaciones de estado en tiempo real mediante binding de eventos permiten feedback visual instantáneo
**WBP_SkillTree:**
- Contiene nodos de habilidad colocados manualmente
- Referencia a SkillTreeComponent
- Aloja SkillTreeConnectionsWidget que dibuja líneas entre nodos automáticamente
- Se vincula a eventos del componente para actualizaciones de UI
**Decisión**: La colocación manual de nodos permite diseños personalizados (lineal, radial, ramificado) según preferencia del diseñador.
---
## Decisiones Clave de Diseño
### 1. Prerrequisitos de habilidades en DataTable
**Alternativa**: Hard-coded en C++ o referencias a DataAssets
**Elegido**: Array en DataTable
**Razón**: Los diseñadores pueden modificar dependencias de habilidades sin intervención del programador y sin recompilar
### 2. Componente vs Subsistema
**Alternativa**: Game Instance Subsystem
**Elegido**: Actor Component
**Razón**: Soporta múltiples árboles de habilidades por jugador (ej., árbol de combate, árbol de crafteo) y más fácil integración con guardar/cargar
### 3. Widget de Conexiones Único
**Alternativa**: Widgets de línea individuales por conexión con gestión manual
**Elegido**: Un widget dibuja todas las líneas automáticamente
**Razón**: Elimina gestión de arrays, mejor rendimiento, manejo automático de coordenadas
### 4. Componente de Estadísticas Separado
**Alternativa**: Aplicar estadísticas directamente en SkillTreeComponent
**Elegido**: CharacterStatsComponent separado
**Razón**: Separación de responsabilidades - SkillTreeComponent es reutilizable para cualquier sistema de progresión, CharacterStatsComponent específicamente maneja estadísticas de personaje. Permite árboles de habilidades sin bonificaciones de stats, o stats sin árboles de habilidades.
---
## Aspectos Técnicos Destacados
- **Arquitectura basada en eventos**: El componente emite cambios de estado, la UI responde automáticamente
- **Validación de máquina de estados**: Previene transiciones inválidas (ej., no se pueden seleccionar habilidades bloqueadas)
- **Aplicación automática de estadísticas**: CharacterStatsComponent escucha compras de habilidades, recalcula estadísticas, las aplica al personaje
- **Renderizado consciente de geometría**: Las líneas se adaptan a cualquier sistema de posicionamiento de widgets
- **Configuración orientada a datos**: Cero cambios de código y no necesita compilar para nuevas habilidades o diseños de árbol
- **Funcionalidad de reinicio**: Reembolsa habilidades no iniciales, mantiene puntos de inicio
- **Diseño modular**: Progresión de habilidades, estadísticas y visualización son independientes

View File

@@ -1,5 +1,9 @@
# U-Tad UI Project # U-Tad UI Project
**English** | **[Leer en Español](README-es.md)**
---
## Skill Tree System Implementation ## Skill Tree System Implementation
### Overview ### Overview

BIN
RawContent/T_Skill_Start.png (Stored with Git LFS) Normal file

Binary file not shown.