first commit
This commit is contained in:
303
README.md
Normal file
303
README.md
Normal file
@@ -0,0 +1,303 @@
|
||||
# 🎮 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
|
||||
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
|
||||
**⭐ ¡Dale una estrella si te gusta el proyecto! ⭐**
|
||||
|
||||
Hecho con ❤️ por **NucleoServices**
|
||||
|
||||
</div>
|
||||
Reference in New Issue
Block a user