10 KiB
Ajedrez Purgatorio — Estado del Proyecto
Fecha: 16 de agosto de 2026 Milestone Actual: Vertical Slice Estado Global: Código 100% implementado y compilando; MainMenu + Chapter1 ensambladas en el editor (sin commitear); faltan Chapter2/3 e integraciones de GameStateManager/IA/Dead Kings UI Deadline original: 7 de junio de 2026 (superado — sin fecha de entrega revisada)
⚠️ Nota sobre commits: Las escenas, prefabs, editor tools y assets movidos existen en el working tree pero NO están commiteados.
git statusmuestra ~250 borrados (sprites reorganizados aTESTING_ONLY/) y ~4 commits en la rama. Hacer commit es prioritario.
📊 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 |
Progreso del Vertical Slice:
- Código implementado: ~100%
- Ensamblado de escenas: ~40% — MainMenu + Chapter1 cableadas; faltan Chapter2/3 e integraciones
✅ Sistemas Implementados
Core Systems (Foundation + Core Layer)
- ✅ Board System — Tablero 8x8 funcional +
SetupBoard(CampaignState)para piezas vivas - ✅ Piece Movement — 6 tipos de piezas con movimiento completo
- ✅ Turn System — Alternancia blancas/negras
- ✅ Check/Checkmate — Detección completa
- ✅ Scene Management — SceneTransitionManager con fades (⚠️ duplicado Core/UI, ver bloqueadores)
- ✅ Game State Manager — Script implementado, aún no en escena (ver bloqueadores)
- ✅ Servicios POCO (Fase 3) — CheckDetector, DrawDetector, MoveValidator (testables sin Unity)
Chess Rules (Feature Layer)
- ✅ Castling — Enroque implementado
- ✅ En Passant — Captura al paso
- ✅ Pawn Promotion — Con PromotionUI y selección de pieza
- ✅ Draw Detection — Stalemate, material insuficiente, repetición triple, regla 50 movimientos
AI System (Feature Layer)
- ✅ AI Strategy Pattern — 3 dificultades (Easy/Medium/Hard, minimax alpha-beta depth 2)
- ✅ AIPositionTables — ScriptableObject con valores de posición
- ⚠️ INCOMPLETO:
AIControllerno está instanciado en ninguna escena y la dificultad por capítulo es TODO (S4-005) → la IA no juega aún en el flujo de campaña
Piece Identity System (Feature Layer)
- ✅ PieceIdentity — 16 identidades creadas (
Assets/Game/Data/PieceIdentities/) - ✅ PieceIdentityManager — Asignación automática, cableado en Chapter1
- ✅ CampaignState — ScriptableObject persistente (asset en Resources)
Purgatorio System (Feature Layer)
- ✅ DiceSystem — Lógica de dados 2d6 con bonos/penalizaciones
- ✅ PurgatoryManager — Orquestador de flujo (límite 3 visitas, pausa/resume)
- ✅ 3 UIs (Offer/Roll/Result) — Todas cableadas en Chapter1 con referencias completas
Narrative System (Feature Layer) — Sprint 4
- ✅ DialogueSystem — Branching, carga 6 JSON (
Assets/Game/Data/Dialogues/) - ✅ DialogueUI — Typewriter, avatar, opciones (⚠️ portrait/speakerDatabase/advanceAction null en escena)
- ✅ Contenido — ch1/ch2/ch3 intro+outro (6 archivos)
- ✅ CampaignManager — Orquestador con
SetupBoardintegrado, cableado en MainMenu + Chapter1
Meta Systems (Feature Layer) — Sprint 5
- ✅ DeadKingPool — JSON persistente, FIFO, filtro profanity (asset en Resources)
- ✅ DeadKingInputUI / DeadKingRevealUI — Scripts implementados, no instanciados en escena
- ✅ SaveSystem — 3 slots, autosave (⚠️ restore parcial de stats)
- ✅ MainMenuController — Cableado en MainMenu.unity (Nueva Campaña → Chapter1)
- ✅ GameHUD — Cableado parcial (⚠️
_pauseButton,_capturedPieceIconPrefabnull) - ✅ PauseMenuController — Cableado parcial (⚠️
_canvasGroupnull) - ✅ PieceSelectionFeedback — MoveIndicator.prefab asignado en BoardManager
- ✅ AudioManager — Script en ambas escenas (⚠️ clips todos null)
- ✅ BalanceConfig — Config JSON centralizado (loader placeholder)
UI Systems (Presentation Layer)
- ✅ PieceTooltip — Cableado en Chapter1
- ✅ PromotionUI — Cableado en Chapter1 (panel + 4 botones)
- ✅ Dice UI Suite — Cableada
- ⚠️ CapturedPieceIcon.prefab — no existe (GameHUD incompleto)
🖼️ Escenas (estado del working tree, sin commitear)
Assets/Scenes/MainMenu.unity — ✅ en Build Settings
- MainMenuController, CampaignManager, SaveSystem, AudioManager, SceneTransitionManager (Core) cableados
- ⚠️ Audio clips null
Assets/Scenes/Chapter1.unity — ✅ en Build Settings
- BoardManager: todos los prefabs asignados (12 piezas, casillas, MoveIndicator)
- GameManager:
_pieceTooltipy_promotionUIasignados - PurgatoryManager + DiceSystem: referencias completas
- DialogueSystem:
_campaignState+ 6 TextAssets - ⚠️ SceneTransitionManager (UI) sin referencias de fade (duplicado)
- ⚠️ GameHUD/DialogueUI/PauseMenu con campos null
Ausentes
- ❌ Chapter2.unity / Chapter3.unity (no existen)
- ❌ GameStateManager (script existe, no instanciado)
- ❌ AIController (script existe, no instanciado)
- ❌ DeadKingInputUI / DeadKingRevealUI (scripts existen, no instanciados)
- ❌
SampleScene.unityhuérfana (no en Build Settings)
Editor tools (Assets/Editor/, Assets/Game/Scripts/Editor/)
- ✅ VerifySetup, FixErrors, FixDialogueLayout, PurgatorySetupValidator
- ⚠️ ProjectSetup.cs no compila — referencia
CameraFollowinexistente
🔴 Bloqueadores para Jugabilidad (verificados en código y escenas)
- ❌ Chapter2/3 no existen — la campaña no puede completarse de inicio a fin
- ❌ GameStateManager sin cablear — las transiciones de estado en CampaignManager están
protegidas con
if (GameStateManager.Instance != null)(no se ejecutan) - ❌ AIController no instanciado — no hay oponente IA en la partida
- ❌ DeadKing UI no cableadas —
ShowDeadKingReveales TODO; el input de derrota no fluye - ⚠️ SceneTransitionManager duplicado (Core vs UI) — Chapter1 usa la versión sin fade
- ⚠️ ProjectSetup.cs no compila (CameraFollow)
- ⚠️ GameManager sin eventos
OnPieceCaptured/OnCheckResolved(GameHUD comentado) - ⚠️ SaveSystem restore parcial (
TotalPiecesLost/LastChapterWasVictoryno settable) - ⚠️ DeadKingInputUI stats en 0 (placeholder)
- ⚠️ Audio mudo — clips null en ambas escenas
- ⚠️ BalanceConfig.LoadFromJSON() placeholder
- ⚠️ Objetos basura en Chapter1 — GameObject suelto con SquareClick en (-43.98, -0.72)
🧪 Estado de Testing
Tests implementados (3 archivos, ~52 tests):
- ✅
Tests/Unit/Campaign/CampaignStateTests.cs(18 tests) - ✅
Tests/Unit/Dialogue/DialogueSystemBranchingTests.cs(17 tests) - ✅
Tests/Unit/Meta/DeadKingPoolTests.cs(17 tests)
Tests pendientes:
- ❌ SaveSystem (roundtrip, corrupción, slots)
- ❌ Servicios POCO de Fase 3 (CheckDetector, DrawDetector, MoveValidator)
- ❌ Integración Save/Load + Dead King spawn
Manual QA:
- ✅ Sprint 4: test plan + handoff en
production/qa/ - ❌ Sprint 5: test plan no creado
- ❌ Playtest completo de inicio a fin (bloqueado por Chapter2/3)
📁 Assets de Datos
Creados
- ✅
Assets/Game/Data/Resources/CampaignState.asset+DeadKingPool.asset - ✅
Assets/Game/Data/BalanceConfig.asset+balance_config.json - ✅
Assets/Game/Data/CampaignConfig.asset - ✅
Assets/Game/Data/Dialogues/(6 JSON) - ✅
Assets/Game/Data/PieceIdentities/(16 assets) - ✅
Assets/Game/Prefabs/Pieces/(12 prefabs) +Assets/Game/Prefabs/Board/(3) +UI/MoveIndicator.prefab
Pendientes
- ❌ Chapter2.unity / Chapter3.unity
- ❌ CapturedPieceIcon.prefab
- ❌ AudioClips (6 SFX + música)
🎮 Estado de Jugabilidad
✅ Funcional hoy
- Partida de ajedrez completa (reglas, tablas, promoción)
- Tablero con piezas y identidades (tooltip)
- Purgatorio completo (dados con modificadores, 3 pantallas)
- Diálogos (6 JSON) cableados en Chapter1
- Menú principal con Nueva Campaña → Chapter1
❌ No jugable de inicio a fin
- Capítulos 2 y 3 no existen
- Sin IA instanciada ni GameStateManager
- Dead Kings no fluyen (revelado + input no cableados)
🎯 Siguiente Acción
- 🔴 Commit del trabajo sin commitear (escenas, prefabs, editor tools, assets, diálogos)
- 🔴 Reparar
ProjectSetup.cs(CameraFollow) y consolidar SceneTransitionManager duplicado - 🔴 Crear Chapter2/3 (duplicando Chapter1) y agregar a Build Settings
- 🔴 Instanciar GameStateManager y AIController en las escenas
- 🟡 Cablear DeadKingInputUI/RevealUI en el flujo de derrota/victoria
- 🟡 Añadir eventos OnPieceCaptured/OnCheckResolved + stats de partida
- 🟡 Completar restore de SaveSystem y LoadFromJSON de BalanceConfig
- 🟡 Asignar AudioClips y referencias de UI faltantes
- 🟢 Escribir tests pendientes (SaveSystem, servicios POCO)
- 🟢 Crear test plan Sprint 5 + playtest completo
Post-VS pendiente de decisión: fechas de Alpha/Beta/Release; limpieza de assets huérfanos
(SampleScene, TESTING_ONLY, sprites antiguos); tr-registry.yaml vacío; ADRs formales.
📞 Contacto / Ayuda
- Documentación GDD:
/design/gdd/ - Arquitectura:
/docs/architecture/architecture.md(reverse-documented 16 Ago 2026) - Sprint Plans:
/production/sprints/ - Bloqueadores detallados:
/BLOQUEADORES_JUGABILIDAD.md - Análisis de implementación:
/IMPLEMENTATION_ANALYSIS.md
Estado: 🟡 Código completo + MainMenu/Chapter1 cableadas; falta commit, Chapter2/3 e integraciones