# 🎮 SnatchGame [](https://github.com/username/snatchgame) [](LICENSE) [](https://nodejs.org/) [](https://vuejs.org/) [](https://colyseus.io/) Un juego multijugador en tiempo real de velocidad de clicks, construido con **Colyseus.io** y **Vue 3** para redes locales. > ⚠️ **Proyecto en desarrollo** - Actualmente en fase Alpha (v0.0.1-alpha) ## 🚀 Características - **🌐 Multijugador en tiempo real** - Hasta 8 jugadores simultáneos - **⚡ Sincronización instantánea** - Estado compartido con Colyseus.io - **🔥 Juego de velocidad** - Compite presionando el botón más rápido - **📱 Responsive** - Funciona en desktop y móvil - **🛠️ Sistema de debugging** - Logs configurables para desarrollo - **🎯 Red local** - Sin dependencias de internet - **📊 UI de administración** - Panel para monitorear partidas ## 🎯 Cómo Jugar 1. **Únete a una partida** - Presiona "Unirse a partida" 2. **Espera jugadores** - Mínimo 2 jugadores para comenzar 3. **¡Click Battle!** - Presiona el botón gigante lo más rápido posible 4. **Compite** - Ve el scoreboard en tiempo real ## 🛠️ Stack Tecnológico ### Backend - **[Colyseus.io](https://colyseus.io/)** - Framework multijugador en tiempo real - **Node.js** + **TypeScript** - **Express.js** ### Frontend - **[Vue 3](https://vuejs.org/)** - Composition API - **TypeScript** - Tipado estricto - **Vite** - Build tool ultra-rápido - **CSS vanilla** - Estilos custom ### Desarrollo - **Schema-codegen** - Sincronización automática de tipos - **Hot reload** - Desarrollo en vivo - **ESLint + Prettier** - Calidad de código ## 📦 Instalación ### Prerrequisitos - **Node.js** >= 18.0.0 - **npm** >= 8.0.0 ### 1. Clonar el repositorio ```bash git clone https://github.com/username/snatchgame.git cd snatchgame ``` ### 2. Instalar dependencias ```bash # Servidor cd server npm install # Cliente cd ../client npm install # Admin (opcional) cd ../admin npm install ``` ## 🚀 Ejecución ### Desarrollo #### Opción 1: VSCode Tasks (Recomendado) ```bash # Presiona Ctrl+Shift+P → "Tasks: Run Task" # Selecciona "Start All Services" ``` #### Opción 2: Manual ```bash # Terminal 1 - Servidor cd server npm run dev # Terminal 2 - Cliente cd client npm run dev # Terminal 3 - Admin (opcional) cd admin npm run dev ``` ### URLs de desarrollo - **Cliente**: http://localhost:3000 - **Servidor**: http://localhost:2567 - **Admin**: http://localhost:3001 ### Producción ```bash # Build npm run build # Deploy con Docker docker-compose up -d ``` ## 🎮 Demo ### Pantalla Principal  ### Esperando Jugadores  ### Jugando  ## ⚙️ Configuración ### Variables de Entorno **Desarrollo** (`.env.development`): ```env VITE_SERVER_URL=ws://localhost:2567 NODE_ENV=development PORT=2567 ``` **Producción** (`.env.production`): ```env VITE_SERVER_URL=wss://your-domain.com NODE_ENV=production PORT=2567 ``` ### Configuración de Logs - **Desarrollo**: Logs habilitados por defecto - **Producción**: Logs deshabilitados por defecto - **Usuario**: Configurable en "Configuración" → "Logs de depuración" ## 🏗️ Arquitectura ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ Client UI │ │ Colyseus │ │ Admin UI │ │ (Vue 3) │◄──►│ Server │◄──►│ (Vue 3) │ │ Port 3000 │ │ Port 2567 │ │ Port 3001 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ └───────────────────────┼───────────────────────┘ │ ┌─────────────────┐ │ Docker + │ │ Nginx Proxy │ └─────────────────┘ ``` ### Sincronización de Tipos ```bash # Los tipos se generan automáticamente del servidor al cliente npm run generate-types ``` ## 🧪 Testing ```bash # Servidor cd server npm test # Cliente cd client npm test # E2E npm run test:e2e ``` ## 📁 Estructura del Proyecto ``` snatchgame/ ├── 📁 server/ # Colyseus.io backend │ ├── src/ │ │ ├── rooms/ # Game rooms │ │ ├── schema/ # Data schemas │ │ └── index.ts # Entry point │ └── package.json ├── 📁 client/ # Vue 3 frontend │ ├── src/ │ │ ├── components/ # Vue components │ │ ├── services/ # Game client & logger │ │ ├── types/ # Auto-generated types │ │ └── main.ts │ └── package.json ├── 📁 admin/ # Admin dashboard ├── 📁 docs/ # Documentation ├── 🐳 docker-compose.yml ├── 📋 CLAUDE.md # Development guide └── 📖 README.md # This file ``` ## 🤝 Contribuir 1. **Fork** el proyecto 2. **Crea** una feature branch (`git checkout -b feature/AmazingFeature`) 3. **Commit** tus cambios (`git commit -m 'Add AmazingFeature'`) 4. **Push** a la branch (`git push origin feature/AmazingFeature`) 5. **Abre** un Pull Request ### Guías de contribución - Sigue las convenciones de código existentes - Añade tests para nuevas características - Actualiza la documentación si es necesario - Los commits deben ser descriptivos ## 🐛 Debugging ### Logs de desarrollo 1. Ve a **Configuración** en la UI 2. Habilita **"Logs de depuración"** 3. Abre **DevTools** (F12) para ver logs detallados ### Comandos útiles ```bash # Verificar puertos libres lsof -i :2567,3000,3001 # Cerrar procesos pkill -f "ts-node-dev" && pkill -f "vite" # Regenerar tipos cd client && npm run generate-types ``` ## 🚀 Deploy ### Docker (Recomendado) ```bash # Build y start docker-compose up -d # Logs docker-compose logs -f # Stop docker-compose down ``` ### Manual ```bash # Build servidor cd server && npm run build # Build cliente cd client && npm run build # Start producción npm run start ``` ## 📋 Roadmap - [ ] 🎨 Themes y customización - [ ] 🏆 Sistema de logros - [ ] 📊 Estadísticas detalladas - [ ] 🔊 Efectos de sonido - [ ] 📱 PWA support - [ ] 🌍 Multi-idioma - [ ] 🔒 Sistema de autenticación ## 📄 Licencia Este proyecto está bajo la licencia **MIT**. Ver el archivo [LICENSE](LICENSE) para más detalles. ## 👥 Autores - **NucleoServices** - *Desarrollo inicial* - [@draganel](https://github.com/draganel) ## 📞 Soporte ¿Encontraste un bug? ¿Tienes una sugerencia? - 🐛 **Issues**: [GitHub Issues](https://github.com/username/snatchgame/issues) - 💬 **Discusiones**: [GitHub Discussions](https://github.com/username/snatchgame/discussions) - 📧 **Email**: support@nucleoservices.com ---