From a3789e52896c6cb12432fd891da7819051afa788 Mon Sep 17 00:00:00 2001 From: Resistencia Dev Date: Sat, 27 Dec 2025 23:05:15 +0100 Subject: [PATCH] Docs: Update README to v1.4 --- README.md | 141 +++++++++++++++++++++++++----------------------------- 1 file changed, 64 insertions(+), 77 deletions(-) diff --git a/README.md b/README.md index c066759..23f859b 100644 --- a/README.md +++ b/README.md @@ -1,104 +1,91 @@ -# La Resistencia - Estado del Proyecto +# Francia Ocupada (La Resistencia) -## 🎮 Estado Actual: FUNCIONAL (Parcial) +## 🎮 Estado Actual: v1.4 - ESTABLE + +Proyecto renombrado a **"Traición en París"** / **"Francia Ocupada"**. ### ✅ 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) +#### Backend (Socket.io + Node.js) +- ✅ **Sistema de Reconexión Inteligente:** Los jugadores pueden recargar la página o volver a entrar y mantienen su sesión (ID de socket actualizado en tiempo real). +- ✅ **Persistencia de Partidas:** Las partidas no se pierden si un jugador se desconecta brevemente. +- ✅ **Control de Sesiones:** Seguimiento de `matchNumber` y `matchResults` para estadísticas continuas en el dashboard de admin. +- ✅ **Lógica de Juego Completa:** + - Roles ocultos y asignación aleatoria balanceada. + - Fases: Lobby, Intro, Reveal Role, Roll Call, Vote Leader, Team Building, Vote Team, Mission, Mission Reveal, Mission Result, Assassin Phase. + - Reglas especiales: 4ª misión con 7+ jug. requiere 2 fallos, 5 rechazos de líder = Victoria espía. + - Temporizadores de seguridad para votaciones de líder. -#### Frontend (Funcional hasta Victoria) -- ✅ Lobby con creación/unión de partidas -- ✅ Intro con música y animaciones (título: "Traidores en París") -- ✅ Revelación de roles con cartas -- ✅ Roll call con avatares -- ✅ Votación de líder con timer de 10 segundos (esquina superior izquierda) -- ✅ Selección de equipo por el líder -- ✅ Votación de equipo con cartas cuadradas (aceptar/rechazar) -- ✅ Votación de misión (éxito/sabotaje solo para espías) -- ✅ **Fase MISSION_REVEAL**: Animación de cartas de votación revelándose -- ✅ **Fase MISSION_RESULT**: Pantalla resumen con mapa táctico y tokens de victoria/fracaso -- ✅ **Histórico de Misiones**: Círculos clicables en esquina superior derecha -- ✅ **Mapa táctico**: Tablero con tokens de misiones y marcadores de resultado -- ✅ Pantallas de victoria (Aliados/Nazis) -- ✅ Fase de asesinato (ASSASSIN_PHASE) +#### Frontend (Next.js + Tailwind + Framer Motion) +- ✅ **Diseño Premium:** Estética "World War II" con tipografías, colores y assets temáticos (fichas de póker, documentos secretos, mapas tácticos). +- ✅ **UX Fluida:** Animaciones de transición entre todas las fases. +- ✅ **Feedback Visual:** + - Cartas de rol específicas para cada personaje (Marlene, Capitán Philippe, Francotirador, etc.). + - Tablero táctico dinámico que muestra el progreso de la partida. + - Indicadores claros de "Tu Turno" o "Esperando al líder". +- ✅ **Audio:** Banda sonora y efectos de sonido integrados. -### 🎨 Mejoras de UI Recientes (2025-12-13) +### 🎨 Últimas Mejoras (v1.4 - Diciembre 2025) -- ✅ Timer de votación reposicionado (esquina superior izquierda, fixed, 20px margen) -- ✅ Cartas de votación de líder redimensionadas (cuadradas 32x32) -- ✅ Eliminado contador de votos rechazados en resultado de misión -- ✅ Mapa táctico permanece visible durante toda la fase MISSION_RESULT -- ✅ Tokens de victoria/fracaso posicionados en el mapa (ajuste fino pendiente para tokens 3, 4, 5) +- 🔄 **Fix Crítico:** Solucionado bug donde el Líder perdía sus botones de acción al recargar la página. +- 📊 **Dashboard Admin:** Panel de administración mejorado con historial de partidas y estadísticas de victorias. +- 🖼️ **Assets:** Nuevas imágenes para roles y fondos de victoria/derrota. +- 📱 **Responsividad:** Mejoras en la vista móvil para la fase de "Pasando Lista" y Tablero. -### ⚠️ Pendiente de Ajustar +## 🚀 Despliegue y Ejecución -1. **Posiciones de tokens en mapa**: Afinar ubicación de tokens de misiones 3, 4 y 5 en el tablero táctico - -## 🚀 Cómo Ejecutar +### Requisitos +- Docker y Docker Compose +- Node.js 18+ (para desarrollo local) +### Ejecución con Docker (Producción) ```bash -# Iniciar todos los servicios -docker compose up -d +# Desplegar todo el stack +./deploy.sh +``` -# Ver logs -docker compose logs -f +El script `deploy.sh` se encarga de: +1. Bajar los últimos cambios de `main`. +2. Construir las imágenes con tags de versión. +3. Levantar los contenedores (Client, Server, DB). -# Detener servicios -docker compose down +### Desarrollo Local +```bash +# Servidor +cd server && npm run dev + +# Cliente +cd client && npm run dev ``` ## 🌐 URLs -- **Cliente**: http://localhost:3000 -- **Servidor**: http://localhost:4000 -- **Base de Datos**: localhost:5432 +- **Juego**: https://franciaocupada.martivich.es +- **API**: https://api.franciaocupada.martivich.es +- **Dashboard Admin**: (Accesible vía socket evento `admin_get_data`) -## 📝 Git +## 📝 Ramas Git -### Ramas -- `master`: Estado inicial con errores -- `fix-gameboard`: Estado actual funcional ✅ +- `main`: Rama de producción (Estable v1.4). +- `develop`: Rama de desarrollo e integración. -### Commits Importantes -1. `8d423ac` - Estado inicial con errores de sintaxis -2. `44d7418` - GameBoard limpio y funcional -3. `5bb1b17` - VotingTimer agregado correctamente +## 👥 Roles del Juego -## 🐛 Problemas Conocidos +**La Resistencia (Aliados)** +- **Marlene (Merlín):** Conoce a los espías. Debe mantenerse oculta. +- **Capitán Philippe (Percival):** Conoce a Marlene (y al Agente Doble). Debe protegerla. +- **Partisanos:** Miembros leales de la resistencia. No saben nada. -1. **CPU Alta en Servidor**: El servidor puede consumir mucha CPU. Si ocurre, reiniciar con `docker compose restart server` -2. **Posiciones de tokens en mapa**: Los tokens de misiones 3, 4 y 5 necesitan ajuste fino en sus coordenadas +**El Eje (Alemanes/Espías)** +- **Francotirador (Asesino):** Si los aliados ganan las 3 misiones, tiene un disparo final para matar a Marlene y robar la victoria. +- **Agente Doble (Morgana):** Se hace pasar por Marlene ante el Capitán Philippe. +- **Comandante Schmidt (Mordred):** Espía desconocido para Marlene. +- **Infiltrado (Oberon):** Espía que no conoce a los otros espías. +- **Colaboricionistas:** Espías estándar. -## 📋 Próximos Pasos - -1. Afinar posiciones de tokens de misiones 3, 4 y 5 en el mapa táctico -2. Optimizar rendimiento del servidor -3. Testing exhaustivo de todas las fases del juego -4. Ajustes finales de UX/UI según feedback de jugadores - -## 🎯 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 +## 🔧 Stack Tecnológico - **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 +- **Infraestructura**: Docker, Nginx (Proxy Inverso)