- Implemented Game Server (game-server.js) with Socket.io
- Added JSON Schemas for Campaigns and Missions
- Updated Docker configurations for multi-service setup
- Refactored main.js to allow local network connections
- Removed legacy code (main_old.js)
- Updated dependencies
- Filter invisible doors from raycast intersection tests
- Open doors no longer block mouse clicks on tiles behind them
- Players can now select and move to tiles visible through open doorways
- Fixes issue where opened doors acted as invisible collision barriers for UI interaction
- Fixed wallOffset calculation for E/W walls
- Both E and W walls need inverted offset due to rotation=π/2
- Local X axis points to -Z for both walls when rotated 90°
- Door gaps and door meshes now perfectly aligned on all walls (N/S/E/W)
- Resolves misalignment issue where E/W doors didn't match their wall gaps
- Created getDoorWorldPosition() function that calculates both mesh position and wall offset
- Eliminated duplicate positioning logic between wall gaps and door meshes
- Removed inconsistent sign inversions that caused misalignment
- Both wall gaps and door meshes now use the same coordinate system
- Fixes issue where doors and gaps were positioned differently on S and W walls
- Implemented door selection and interaction model (walk-to + click).
- Added modal for opening doors.
- Refactored wall rendering to create physical holes (CSG-like wall segments).
- Aligned door meshes to perfectly fit wall cutouts.
- Managed door visibility states to prevent Z-fighting on open doors.
- Used texture cloning for floor tiles to ensure independent repeat settings for each room.
- Calculated texture repetition based on room dimensions relative to the base 4x4 tile size, preventing distortion in non-square rooms.
- Removed line in animateMovement that mutated CAMERA_VIEWS static constants.
- This prevents the camera offset from skewing as the player moves away from the origin, ensuring the isometric view angle remains consistent throughout the entire dungeon.
- Refactored setCameraView to use precise lookAt and position calculation instead of accumulating quaternion errors.
- Forces camera UP vector (0,1,0) to prevent roll drift during isometric rotation.
- Sistema de opacidad dinámica de paredes según vista actual
- Vistas con transición animada suave (600ms)
- Centrado automático en el jugador al cambiar vista
- Quaternions precalculados para evitar degradación de vistas
- Validación de puertas que apuntan a salas existentes
- Limpieza de puertas inválidas en generador de mazmorras
- Paredes opacas/transparentes según orientación de cámara
Pendiente: Resolver z-fighting de puertas en ciertas vistas
- Precálculo de quaternions para cada vista (N, S, E, W)
- Eliminado uso de lookAt() en cambios de vista
- Uso de Vector3 nativos de Three.js
- Sistema completamente determinista sin acumulación de errores
- Generador procedural que crea hasta 10 salas aleatorias conectadas por puertas
- Sistema de fog of war: solo se muestran salas visitadas
- Puertas automáticas entre salas con detección de transición
- 0-2 esqueletos aleatorios por sala
- Sistema de vistas NSEW con UI de compás
- 4 vistas isométricas fijas (Norte, Sur, Este, Oeste)
- Zoom y paneo habilitados, rotación deshabilitada
- Paredes con opacidad diferenciada (N/W opacas, S/E semi-transparentes)
- Validación de movimiento: solo celdas transitables
- Centrado automático de cámara al mover personaje