# Ajedrez Purgatorio — Estado del Proyecto **Fecha**: 17 de agosto de 2026 **Milestone Actual**: Vertical Slice **Estado Global**: Compilation-blocking duplicate classes resolved; URP pipeline assigned; template identifiers fixed; package bloat reduced. Core chess logic merged (GetAttackSquares + castling fixes). --- ## 🔧 Correcciones de Infraestructura (17 Ago 2026) ### CRITICAL: Clases Duplicadas Resueltas - **Problema**: 9 clases con nombres idénticos en `Mono/` y `Mono/Classic/` causaban CS0101 (compilation blocker) - **Solución**: - Fusionada funcionalidad crítica de Classic → Purgatory (`GetAttackSquares` en Piece, Pawn, King) - Corregido enroque del King Purgatory (agregada guardia "rey no en jaque" + simplificación) - Renombrado `BoardManager` → `ClassicBoardManager`, `SquareClick` → `ClassicSquareClick` - Eliminadas 7 piezas Classic duplicadas (Piece, Pawn, King, Queen, Rook, Bishop, Knight) - Actualizadas referencias en Spike y GameManagerClassic ### HIGH: URP Pipeline Asignado - **Problema**: 6 niveles de calidad tenían `customRenderPipeline: {fileID: 0}` (null) - **Solución**: Asignado GUID `f129fa08335309540b185f083eeb490e` (Assets/Settings/UniversalRP.asset) - **También**: Corregido GraphicsSettings para apuntar al asset canónico ### HIGH: Identificadores de Template Corregidos - Company: `DefaultCompany` → `EarthGenesisGames` - App IDs: `com.DefaultCompany.com.unity.template.mobile2D` → `com.earthgenesisgames.ajedrezpurgatorio` ### MEDIUM: Assets Duplicados Limpiados - Eliminado directorio `Assets/Scenes/Settings/` (duplicado de `Assets/Settings/`) - Corregidas referencias cruzadas GUID en UniversalRP.asset y Lit2DSceneTemplate ### MEDIUM: Test Assembly Corregido - `tests/AjedrezPurgatorio.Tests.asmdef`: referencia `Assembly-CSharp` → `AjedrezPurgatorio.Runtime` ### LOW: Limpieza - Eliminado `SampleScene.unity` (huérfana, no en Build Settings) - Eliminado `.gitignore copy` (duplicado) - Eliminados 11 paquetes no utilizados: multiplayer, visualscripting, mobile feature, terrain, vehicles, VR, XR, wind, AI, cloth, adaptiveperformance --- ## 📊 Progreso General ### Sprints Completados: 5/5 | Sprint | Estado | Tareas | Fechas | |--------|--------|--------|--------| | Sprint 1: Foundation | ✅ Complete | 9/9 | 23 Mar - 04 Abr 2026 | | Sprint 2: Chess + AI | ✅ Complete | 11/11 | 07 Abr - 25 Abr 2026 | | Sprint 3: Purgatorio | ✅ Complete | 7/9 (Must Have 100%) | 10 May - 23 May 2026 | | Sprint 4: Narrative | ✅ Complete | 8/8 (100%) | 26 May - 06 Jun 2026 | | Sprint 5: Meta + Polish | ✅ Complete | 11/11 (36/36 pts) | 10 May - 12 May 2026 | --- ## ✅ Sistemas Implementados ### Core Systems - ✅ **Board System** — Tablero 8x8 + `SetupBoard(CampaignState)` + indicadores de movimiento - ✅ **Piece Movement** — 6 tipos de piezas con movimiento completo + `GetAttackSquares` - ✅ **Turn System** — Alternancia blancas/negras - ✅ **Check/Checkmate** — Detección completa via CheckDetector (POCO, testable) - ✅ **Draw Detection** — Stalemate, material insuficiente, repetición triple, regla 50 movimientos - ✅ **Servicios POCO** — CheckDetector, DrawDetector, MoveValidator ### Chess Rules - ✅ **Castling** — Enroque con validación de jaque en casillas de tránsito - ✅ **En Passant** — Captura al paso con tracking de último movimiento - ✅ **Pawn Promotion** — Con PromotionUI y selección de pieza - ✅ **GetAttackSquares** — Separación correcta de "movimientos legales" vs "casillas atacadas" ### AI System - ✅ **Strategy Pattern** — 3 dificultades (Easy/Medium/Hard, minimax alpha-beta) - ✅ **AIPositionTables** — ScriptableObject con valores de posición - ⚠️ AIController no instanciado en escenas (ver bloqueadores) ### Piece Identity System - ✅ **16 PieceIdentity assets** — Characters: Ricardo (King), Elena (Queen), etc. - ✅ **PieceIdentityManager** — Asignación automática - ✅ **CampaignState** — ScriptableObject persistente ### Purgatorio System - ✅ **DiceSystem** — Lógica de dados 2d6 con bonos/penalizaciones - ✅ **PurgatoryManager** — Orquestador completo (3 visitas, pausa/resume) - ✅ **3 UIs** — Offer/Roll/Result ### Narrative System - ✅ **DialogueSystem** — Branching, 6 JSON (ch1-3 intro+outro) - ✅ **DialogueUI** — Typewriter, avatar, opciones - ✅ **CampaignManager** — Orquestador con SetupBoard integrado ### Meta Systems - ✅ **DeadKingPool** — JSON persistente, FIFO, filtro profanity - ✅ **SaveSystem** — 3 slots, autosave - ✅ **MainMenuController** — Cableado en MainMenu - ✅ **AudioManager** — Script en escenas (⚠️ clips null) ### Classic Mode (Separate) - ✅ **GameManagerClassic** — Modo clásico self-contained con IA inline - ✅ **ClassicBoardManager** — Generación de tablero y piezas --- ## 🔴 Bloqueadores Pendientes 1. ❌ **Chapter2/3 no existen** — campaña incompleta 2. ❌ **GameStateManager sin cablear** — transiciones de estado no funcionan 3. ❌ **AIController no instanciado** — sin oponente IA 4. ❌ **DeadKing UI no cableadas** — input de derrota no fluye 5. ⚠️ **Audio mudo** — clips null en ambas escenas 6. ⚠️ **BalanceConfig.LoadFromJSON()** placeholder --- ## 🧪 Estado de Testing ### Tests implementados (8 archivos): - ✅ `tests/unit/Chess/CheckDetectorTests.cs` - ✅ `tests/unit/Chess/DrawDetectorTests.cs` - ✅ `tests/unit/Chess/MoveValidatorTests.cs` - ✅ `tests/unit/Campaign/CampaignStateTests.cs` - ✅ `tests/unit/Dialogue/DialogueSystemBranchingTests.cs` - ✅ `tests/unit/Meta/DeadKingPoolTests.cs` - ✅ `tests/unit/Meta/SaveSystemTests.cs` - ✅ `tests/unit/Purgatory/DiceSystemTests.cs` - ✅ `Assets/Tests/EditMode/Classic/CheckDetectionTests.cs` ### Tests pendientes: - ❌ Integración Save/Load + Dead King spawn - ❌ Playtest completo (bloqueado por Chapter2/3) --- ## 🎯 Siguiente Acción 1. 🔴 Crear Chapter2/3 y agregar a Build Settings 2. 🔴 Instanciar GameStateManager y AIController 3. 🔴 Cablear DeadKingInputUI/RevealUI 4. 🟡 Completar AudioClips y referencias UI faltantes 5. 🟢 Completar restore de SaveSystem 6. 🟢 Crear test plan Sprint 5 --- ## 📞 Contacto - **GDDs**: `/design/gdd/` - **Arquitectura**: `/docs/architecture/` - **Sprints**: `/production/sprints/` - **Tech Debt**: `/docs/tech-debt-register.md`