b836c53002f31a7f9ac07c9f7def830863eb0a06
Nuevas funcionalidades: - Pantallas de victoria diferenciadas (NAZIS_WIN / ALLIED_WIN) * Diseño visual diferenciado (rojo para Nazis, azul para Aliados) * Timer de 30 segundos con auto-finalización * Estadísticas de misiones (exitosas vs fracasadas) * Opciones para el host: NUEVA PARTIDA o TERMINAR * Mensaje de espera para jugadores no-host - Sistema de reinicio de partida * Método restartGame() que resetea todas las variables * Reasigna roles y líder aleatorios * Vuelve a fase REVEAL_ROLE manteniendo jugadores - Sistema de finalización y expulsión * Método finalizeGame() que expulsa a todos después de 5s * Auto-expulsión si el host no decide en 30s * Limpieza de partida del servidor Mejoras en MISSION_RESULT: - Eliminado oscurecimiento de fondo (bg-transparent) - Tiempo de visualización aumentado de 5 a 7 segundos - Ahora se puede ver claramente el tablero con las fichas Lógica de transiciones: - 3 misiones fracasadas → NAZIS_WIN - 3 misiones exitosas → ASSASSIN_PHASE * Asesino acierta (mata a Marlene) → NAZIS_WIN * Asesino falla → ALLIED_WIN Archivos modificados: - shared/types.ts: Nuevas fases NAZIS_WIN y ALLIED_WIN - server/src/models/Game.ts: Métodos restartGame() y finalizeGame() - server/src/index.ts: Eventos restart_game y finalize_game - client/src/hooks/useSocket.ts: Acciones restartGame() y finalizeGame() - client/src/components/GameBoard.tsx: Renderizado de VictoryScreen - client/src/components/MissionResult.tsx: Sin oscurecimiento, 7s - client/src/components/VictoryScreen.tsx: NUEVO componente
La Resistencia - Estado del Proyecto
🎮 Estado Actual: FUNCIONAL (Parcial)
✅ Funcionalidades Implementadas
Backend (100% Completo)
- ✅ Sistema de salas y jugadores
- ✅ Asignación de roles (Resistencia/Espías)
- ✅ Fases del juego: LOBBY, INTRO, REVEAL_ROLE, ROLL_CALL, VOTE_LEADER, TEAM_BUILDING, VOTE_TEAM, MISSION
- ✅ Nuevas fases: MISSION_REVEAL, MISSION_RESULT (lógica completa)
- ✅ Votación de líder con sistema de aprobación/rechazo
- ✅ Selección y votación de equipos
- ✅ Votación de misiones (éxito/sabotaje)
- ✅ Barajado aleatorio de votos de misión
- ✅ Histórico de misiones (MissionRecord)
- ✅ Reglas correctas de éxito/fracaso (misión 4 con 7+ jugadores requiere 2 fallos)
- ✅ Sistema de victoria (3 misiones exitosas o 3 fallidas)
- ✅ Fase de asesinato (ASSASSIN_PHASE)
Frontend (Funcional hasta MISSION)
- ✅ Lobby con creación/unión de partidas
- ✅ Intro con música y animaciones
- ✅ Revelación de roles con cartas
- ✅ Roll call con avatares
- ✅ Votación de líder con timer de 10 segundos
- ✅ Selección de equipo por el líder
- ✅ Votación de equipo
- ✅ Votación de misión (éxito/sabotaje solo para espías)
- ✅ Componente VotingTimer funcionando
❌ Pendiente de Implementar (Solo UI)
- Fase MISSION_REVEAL: Pantalla que muestra las cartas de votación una a una (backend listo)
- Fase MISSION_RESULT: Pantalla resumen con resultado de la misión (backend listo)
- Histórico de Misiones: Componente visual en esquina mostrando misiones completadas (backend listo)
🚀 Cómo Ejecutar
# Iniciar todos los servicios
docker compose up -d
# Ver logs
docker compose logs -f
# Detener servicios
docker compose down
🌐 URLs
- Cliente: http://localhost:3000
- Servidor: http://localhost:4000
- Base de Datos: localhost:5432
📝 Git
Ramas
master: Estado inicial con erroresfix-gameboard: Estado actual funcional ✅
Commits Importantes
8d423ac- Estado inicial con errores de sintaxis44d7418- GameBoard limpio y funcional5bb1b17- VotingTimer agregado correctamente
🐛 Problemas Conocidos
- CPU Alta en Servidor: El servidor puede consumir mucha CPU. Si ocurre, reiniciar con
docker compose restart server - Fases MISSION_REVEAL y MISSION_RESULT: No tienen UI implementada. El juego se quedará en esa fase si se completa una misión.
📋 Próximos Pasos
- Implementar UI para MISSION_REVEAL (mostrar cartas una a una con animación)
- Implementar UI para MISSION_RESULT (pantalla resumen)
- Agregar histórico de misiones visual
- Optimizar rendimiento del servidor
🎯 Reglas del Juego Implementadas
- Votación de líder: mayoría simple aprueba
- 5 rechazos consecutivos: victoria de espías
- Misiones: 1 fallo = fracaso (excepto misión 4 con 7+ jugadores que requiere 2 fallos)
- 3 misiones exitosas: victoria de resistencia (con fase de asesinato)
- 3 misiones fallidas: victoria de espías
🔧 Tecnologías
- Frontend: Next.js 14, React, TypeScript, Framer Motion, TailwindCSS
- Backend: Node.js, Express, Socket.IO, TypeScript
- Base de Datos: PostgreSQL 15
- Containerización: Docker, Docker Compose
Description
Languages
TypeScript
92%
Shell
7.1%
Dockerfile
0.5%
CSS
0.3%