Files
jimmyabv b539aa403e fix: resolve compilation errors, add tests, fix configs, update docs
- Fix 9 CS0101 duplicate classes between Mono/ and Mono/Classic/
  - BoardManager -> ClassicBoardManager, SquareClick -> ClassicSquareClick
  - Delete duplicate Piece/Pawn/King/Queen/Rook/Bishop/Knight from Classic/
  - Merge GetAttackSquares into Piece base class with overrides
- Fix King castling: reject castling through/while in check
- Assign URP pipeline to QualitySettings (6 levels) and GraphicsSettings
- Fix template identifiers (DefaultCompany -> EarthGenesisGames)
- Delete orphaned SampleScene.unity and duplicate URP assets
- Fix test assembly reference (Assembly-CSharp -> AjedrezPurgatorio.Runtime)
- Remove 11 unused packages (multiplayer, visualscripting, terrain, etc.)
- Update BoardInputSystemSpike for ClassicSquareClick
- Write unit tests: CheckDetector, DrawDetector, MoveValidator
- Fix BalanceConfig JSON structure to match C# class fields
- Update stale documentation (~30 files)
  - architecture.md, ADR-0001, roadmap, gate-check, EPIC.md
  - PROJECT_STATUS.md, BLOQUEADORES_JUGABILIDAD.md
  - tech-debt-register.md
- Add Unity Editor setup guide (production/UNITY_EDITOR_SETUP.md)
2026-08-17 20:40:02 -03:00

5.1 KiB

Unity Editor Setup Guide — Items 1-4

Fecha: 17 agosto 2026 Objetivo: Hacer Chapter 1 jugable con IA yGameStateManager


Item 1: Añadir AIController a Chapter1.unity

Pasos:

  1. Abrir Assets/Scenes/Chapter1.unity en el Editor
  2. Crear GameObject vacío → renombrar a AIController
  3. Añadir componente AIController (script en Assets/Game/Scripts/Mono/AI/)
  4. En el Inspector, configurar:
    • StrategyAIStrategyEasy (para chapter 1)
    • Enabled → true
  5. Verificar que GameManagerClassic.Instance se auto-crea (lazy getter)

Verificación:

  • Al dar Play, las piezas negras deben moverse automáticamente después del turno del jugador

Item 2: Añadir GameStateManager a Chapter1.unity

Pasos:

  1. En Chapter1.unity, crear GameObject vacío → renombrar a GameStateManager
  2. Añadir componente GameStateManager (script en Assets/Game/Scripts/Mono/Core/)
  3. En el Inspector, Current State debe empezar en Menu
  4. El script tiene DontDestroyOnLoad — persistirá entre escenas

Verificación:

  • Al dar Play, consola debe mostrar [GameStateManager] Inicializado.
  • CampaignManager.InitializeChapter() debe llamar TransitionTo(GameState.Playing) después del intro

Item 3: Crear Chapter2.unity y Chapter3.unity

Pasos:

  1. Abrir Chapter1.unity
  2. File → Save As → Chapter2.unity
  3. Guardar en Assets/Scenes/
  4. Repetir para Chapter3.unity
  5. Abrir Build Settings (File → Build Settings)
  6. Añadir ambas escenas: Chapter2 y Chapter3
  7. Verificar orden: MainMenu (0), Chapter1 (1), Chapter2 (2), Chapter3 (3)

Configuración por capítulo:

  • Chapter2: Cambiar _chapterIndex en CampaignConfig (o ajustar el JSON)
  • Chapter3: Cambiar _chapterIndex en CampaignConfig

Nota:

  • La difficuldad de IA se aplica automáticamente por CampaignManager.ApplyChapterAIConfiguration()
  • Los diálogos se cargan por chapter.introDialogueId / chapter.outroDialogueId desde CampaignConfig

Item 4: Cablear DeadKingInputUI/RevealUI

DeadKingInputUI:

  1. En Chapter1.unity, crear Canvas UI
  2. Añadir panel con:
    • TextMeshPro para "Nombre del Rey Muerto"
    • InputField para nombre
    • TextMeshPro para mensaje
    • Botón "Aceptar"
  3. Añadir componente DeadKingInputUI
  4. Conectar references en Inspector

DeadKingRevealUI:

  1. Crear otro panel Canvas
  2. Añadir componente DeadKingRevealUI
  3. Conectar references en Inspector

CampaignManager:

  • ShowDeadKingReveal() ya usa FindObjectOfType<DeadKingRevealUI>() — no necesita SerializeField
  • TransitionToDeadKings() ya usa FindObjectOfType<DeadKingInputUI>()

Verificación:

  • Al perder un capítulo, debe aparecer la UI de Dead King input
  • Al ganar con Dead King spawned, debe aparecer la UI de revelación

Item 6: Audio Clips (Requeridos)

Clips necesarios por AudioManager:

  1. Move — sonido de movimiento de pieza (corto, ~0.2s)
  2. Capture — sonido de captura (medio, ~0.3s)
  3. Check — alerta de jaque (agudo, ~0.5s)
  4. Checkmate — fanfarria o dramático (~1s)
  5. Promotion — sonido de promoción (~0.5s)
  6. GameOver — derrota (~1s)

Cómo asignar:

  1. Importar clips de audio a Assets/Game/Audio/SFX/
  2. Seleccionar AudioManager en la escena
  3. Arrastrar clips a los campos _moveSFX, _captureSFX, etc.
  4. Los clips se reproducen automáticamente via eventos de GameManager

Item 7: SpeakerDatabase (ScriptableObject)

Crear asset:

  1. Assets/Game/Data/ → Click derecho → Create → Ajedrez Purgatorio → Narrative → Speaker Database
  2. Nombrar SpeakerDatabase.asset
  3. Mover a Assets/Game/Data/Resources/ (si se carga con Resources.Load)
  4. En el Inspector, añadir entries:
    • speakerName: "La Muerte" → portrait: [sprite]
    • speakerName: "Narrador" → portrait: [sprite]
    • etc.

Conectar en escena:

  1. Seleccionar DialogueUI en Chapter1
  2. Asignar _speakerDatabase al asset creado

Item 12: Git Commit

# Ver estado
git status

# Stage todo
git add -A

# Commit
git commit -m "fix: resolve compilation errors, update docs, add unit tests

- Fix 9 CS0101 duplicate classes (BoardManager→ClassicBoardManager, etc.)
- Merge GetAttackSquares into Piece base class
- Fix King castling validation with IsSquareAttackedBy
- Assign URP pipeline to QualitySettings/GraphicsSettings
- Fix template identifiers (DefaultCompany→EarthGenesisGames)
- Delete orphaned SampleScene and duplicate URP assets
- Fix test assembly reference
- Remove 11 unused packages
- Write unit tests for CheckDetector, DrawDetector, MoveValidator
- Fix BalanceConfig JSON structure to match C# classes
- Update stale documentation across ~30 files
- Add Unity Editor setup guide for remaining integration"

Orden recomendado de ejecución:

  1. Git commit primero (para tener un checkpoint)
  2. Item 1 (AIController) — prioridad más alta
  3. Item 2 (GameStateManager) — prioridad alta
  4. Item 3 (Chapter2/3) — media
  5. Item 4 (DeadKing UI) — media
  6. Item 6 (Audio) — bajo
  7. Item 7 (SpeakerDatabase) — bajo