feat: Implement advanced tile mapping system with abstract deck
- Created TileDefinitions.js with centralized tile definitions - Implemented abstract deck system (8 rooms 4x4, 4 rooms 4x6, 12 corridors, 10 L-shapes, 8 T-junctions) - Added connection validation (type compatibility, exit direction, walkability alignment) - Implemented corridor orientation filtering (EW/NS matching) - Added exhaustive L/T variant selection with random choice - Updated corridor definitions with EW and NS orientations - Fixed ASSETS.tiles references throughout main.js - Known issue: L/T offset alignment needs further debugging
This commit is contained in:
41
DEVLOG.md
41
DEVLOG.md
@@ -2,6 +2,47 @@
|
||||
|
||||
Este documento sirve para llevar un control diario del desarrollo, decisiones técnicas y nuevas funcionalidades implementadas en el proyecto.
|
||||
|
||||
## [2025-12-29] - Sistema Avanzado de Mapeo de Tiles
|
||||
|
||||
### Funcionalidades Implementadas
|
||||
- **TileDefinitions.js:** Nuevo módulo centralizado con definiciones de todas las tiles (rooms, corridors, L-shapes, T-junctions).
|
||||
- Cada tile incluye: dimensiones, tipo, imagen, matriz de walkability, y exits.
|
||||
- Matriz de walkability: 0 = no pisable, 1-8 = pisable con capa/altura, 9 = escaleras.
|
||||
|
||||
- **Sistema de Deck Abstracto:**
|
||||
- El deck ahora contiene tipos abstractos (e.g., 'L', 'corridor') en lugar de tiles específicas.
|
||||
- Composición: 8 rooms 4x4, 4 rooms 4x6, 12 corridors, 10 L-shapes, 8 T-junctions.
|
||||
- Cuando se dibuja un tipo, el sistema selecciona aleatoriamente entre las variantes que encajan.
|
||||
|
||||
- **Validación de Conexiones:**
|
||||
- `canConnectTiles()`: Verifica compatibilidad de tipos, dirección de salidas, y alineación de walkability.
|
||||
- Reglas de conexión: Rooms ↔ Rooms/Corridors, Corridors ↔ Rooms/Corridors/L/T, L/T ↔ Corridors.
|
||||
- Validación de dirección: Si sales por N, la nueva tile debe tener salida S.
|
||||
|
||||
- **Alineación de Walkability:**
|
||||
- `validateWalkabilityAlignment()`: Maneja tiles de diferentes tamaños (corridor 2x6 vs room 4x4).
|
||||
- Prueba offset 0 primero, luego offset 2 (ancho del corridor) si es necesario.
|
||||
- Sistema de offset para desplazar L-shapes y T-junctions y alinear áreas pisables.
|
||||
|
||||
- **Filtrado de Orientación:**
|
||||
- Corridors se filtran por orientación: puertas E/W requieren corridors EW, puertas N/S requieren corridors NS.
|
||||
- Selección exhaustiva: Cuando se dibuja una L o T, se prueban todas las variantes antes de descartar.
|
||||
|
||||
### Cambios Técnicos
|
||||
- Modificado `DungeonDecks.js` para usar sistema de deck abstracto.
|
||||
- Actualizado `exploreRoom()` en `main.js` para trabajar con tipos abstractos y seleccionar variantes concretas.
|
||||
- Nuevas funciones: `validateWalkabilityAlignment()`, `canConnectTiles()`, `getEdgeCells()`, `shouldPlaceDoor()`.
|
||||
- Actualizado `renderRoom()` para usar `room.tileDef` en lugar de `ASSETS.tiles`.
|
||||
|
||||
### Problemas Conocidos
|
||||
- **Offset de L/T:** La alineación de L-shapes y T-junctions todavía presenta desplazamientos incorrectos en algunos casos.
|
||||
- **Frecuencia de L/T:** Aunque se aumentó la cantidad en el deck, las L y T solo aparecen cuando se conectan desde corridors, limitando su frecuencia.
|
||||
|
||||
### Próximos Pasos
|
||||
- Depurar y corregir el cálculo del offset para L-shapes y T-junctions.
|
||||
- Revisar la lógica de aplicación del offset según la dirección de conexión (N/S vs E/W).
|
||||
- Considerar ajustar las reglas de conexión para permitir más variedad en la generación.
|
||||
|
||||
## [2025-12-28] - Fase 1: Arquitectura Híbrida y Servidor
|
||||
|
||||
### Infraestructura
|
||||
|
||||
Reference in New Issue
Block a user