Juego interactivo de equipos con códigos QR, desarrollado con Node.js y Socket.IO.
- ✅ Registro de jugadores con códigos QR
- ✅ Asignación automática de equipos balanceados
- ✅ Programación de partidas con countdown
- ✅ Recolección de items mediante escaneo QR
- ✅ Sistema de items de penalización
- ✅ Dashboard en tiempo real
- ✅ Webhooks para notificaciones
- ✅ Interfaz responsive
- Clona o descarga el proyecto
- Instala las dependencias:
npm install
{
"game": {
"duration_minutes": 30, // Duración del juego en minutos
"max_teams": 4, // Número máximo de equipos
"items_per_team": 5, // Items que debe recolectar cada equipo
"penalty_items_count": 3, // Cantidad de items de penalización
"webhook_url": "https://tu-webhook.com/endpoint", // URL para notificaciones
"qr_codes": ["QR001", "QR002", ...], // Lista de códigos QR disponibles
"team_colors": [ // Colores de los equipos
{"name": "Azul", "color": "#3498db"},
{"name": "Rojo", "color": "#e74c3c"},
{"name": "Verde", "color": "#2ecc71"},
{"name": "Amarillo", "color": "#f1c40f"}
]
}
}
{
"items": [
{
"nombre": "Papa",
"imagen": "https://example.com/images/papa.jpg"
}
],
"penalty_items": [
{
"nombre": "Lluvia",
"imagen": "https://example.com/images/lluvia.jpg"
}
]
}
npm start
Para desarrollo con recarga automática:
npm run dev
El servidor se ejecutará en http://localhost:3001
- Jugadores:
http://localhost:3001/
- Página principal para registro y juego - Dashboard:
http://localhost:3001/dashboard
- Panel de monitoreo en tiempo real - Controles:
http://localhost:3001/controles
- Panel de administración del juego - Escaneo QR:
http://localhost:3001/scan/{QR_ID}
- Página de escaneo de códigos
- Registro: Los jugadores escanean un código QR para registrarse
- Programación: Un administrador programa la próxima partida desde el dashboard
- Espera: Los jugadores ven el countdown hasta el inicio
- Inicio: El juego comienza automáticamente y asigna equipos
- Recolección: Los jugadores escanean códigos QR para recolectar items
- Finalización: El juego termina por tiempo o por completar todos los items
Programa la próxima partida.
{
"datetime": "2024-01-01T15:00:00"
}
Obtiene el estado actual del juego.
Obtiene la lista de jugadores registrados.
Inicia el juego inmediatamente.
Termina el juego actual.
Reinicia completamente el estado del juego.
Elimina todos los jugadores registrados.
Obtiene información del item asociado a un código QR.
Genera un código QR para el ID especificado.
registerPlayer
: Registra un nuevo jugadorscanQR
: Escanea un código QRreconnectPlayer
: Reconecta un jugador existente
playerRegistered
: Confirmación de registrogameScheduled
: Juego programadogameStarted
: Juego iniciadogameStateUpdate
: Actualización del estadoitemScanned
: Item escaneadogameFinished
: Juego terminadotimeUpdate
: Actualización del tiempo
- Asignación aleatoria y balanceada
- Distribución equitativa de jugadores
- Items únicos por equipo
- Items especiales que inhabilitan al jugador
- Cantidad configurable de items de penalización
- Visualización en tiempo real
- Notificaciones automáticas de acciones
- Mensajes personalizados por evento
- Configuración opcional
- Cookies para identificación de jugadores
- Estado del juego en memoria
- Configuración mediante archivos JSON
Edita config/items.json
para cambiar los items disponibles y sus imágenes.
Modifica config/game-config.json
para personalizar nombres y colores.
Cambia duration_minutes
en la configuración del juego.
Actualiza webhook_url
con tu endpoint de notificaciones.
iagame/
├── config/
│ ├── game-config.json
│ └── items.json
├── public/
│ ├── index.html
│ ├── dashboard.html
│ └── scan.html
├── server.js
├── package.json
└── README.md
- Node.js
- Express.js
- Socket.IO
- QRCode.js
- Axios
- Verifica que la fecha/hora programada sea correcta
- Revisa que haya jugadores registrados
- Asegúrate de que los IDs coincidan con la configuración
- Verifica que el servidor esté accesible
- Confirma que la URL del webhook sea válida
- Revisa la conectividad de red
Este proyecto está bajo la Licencia ISC.