Files
Ajedrez_Purgatorio/PROJECT_STATUS.md
T

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 status muestra ~250 borrados (sprites reorganizados a TESTING_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: AIController no 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 SetupBoard integrado, 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, _capturedPieceIconPrefab null)
  • PauseMenuController — Cableado parcial (⚠️ _canvasGroup null)
  • 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: _pieceTooltip y _promotionUI asignados
  • 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.unity huérfana (no en Build Settings)

Editor tools (Assets/Editor/, Assets/Game/Scripts/Editor/)

  • VerifySetup, FixErrors, FixDialogueLayout, PurgatorySetupValidator
  • ⚠️ ProjectSetup.cs no compila — referencia CameraFollow inexistente

🔴 Bloqueadores para Jugabilidad (verificados en código y escenas)

  1. Chapter2/3 no existen — la campaña no puede completarse de inicio a fin
  2. GameStateManager sin cablear — las transiciones de estado en CampaignManager están protegidas con if (GameStateManager.Instance != null) (no se ejecutan)
  3. AIController no instanciado — no hay oponente IA en la partida
  4. DeadKing UI no cableadasShowDeadKingReveal es TODO; el input de derrota no fluye
  5. ⚠️ SceneTransitionManager duplicado (Core vs UI) — Chapter1 usa la versión sin fade
  6. ⚠️ ProjectSetup.cs no compila (CameraFollow)
  7. ⚠️ GameManager sin eventos OnPieceCaptured/OnCheckResolved (GameHUD comentado)
  8. ⚠️ SaveSystem restore parcial (TotalPiecesLost/LastChapterWasVictory no settable)
  9. ⚠️ DeadKingInputUI stats en 0 (placeholder)
  10. ⚠️ Audio mudo — clips null en ambas escenas
  11. ⚠️ BalanceConfig.LoadFromJSON() placeholder
  12. ⚠️ 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

  1. Partida de ajedrez completa (reglas, tablas, promoción)
  2. Tablero con piezas y identidades (tooltip)
  3. Purgatorio completo (dados con modificadores, 3 pantallas)
  4. Diálogos (6 JSON) cableados en Chapter1
  5. Menú principal con Nueva Campaña → Chapter1

No jugable de inicio a fin

  1. Capítulos 2 y 3 no existen
  2. Sin IA instanciada ni GameStateManager
  3. Dead Kings no fluyen (revelado + input no cableados)

🎯 Siguiente Acción

  1. 🔴 Commit del trabajo sin commitear (escenas, prefabs, editor tools, assets, diálogos)
  2. 🔴 Reparar ProjectSetup.cs (CameraFollow) y consolidar SceneTransitionManager duplicado
  3. 🔴 Crear Chapter2/3 (duplicando Chapter1) y agregar a Build Settings
  4. 🔴 Instanciar GameStateManager y AIController en las escenas
  5. 🟡 Cablear DeadKingInputUI/RevealUI en el flujo de derrota/victoria
  6. 🟡 Añadir eventos OnPieceCaptured/OnCheckResolved + stats de partida
  7. 🟡 Completar restore de SaveSystem y LoadFromJSON de BalanceConfig
  8. 🟡 Asignar AudioClips y referencias de UI faltantes
  9. 🟢 Escribir tests pendientes (SaveSystem, servicios POCO)
  10. 🟢 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