- Creado nuevo proyecto Nuxt 4 con estructura app/ - Servidor Colyseus separado para evitar problemas con decoradores - Migrado GameRoom y toda la lógica del juego - Implementado cliente con composables useGameClient - Panel de administración funcional - Componentes Vue migrados (HomeScreen, GameScreen, PlayerCard, etc) - Configuración para ejecutar ambos servidores (npm run dev:all)
2.0 KiB
2.0 KiB
Snatch Game - Nuxt 3 Migration
Migración completa del juego SnatchGame a una aplicación unificada Nuxt 3.
Arquitectura
- Frontend: Nuxt 3 (SSR deshabilitado)
- Backend de juego: Servidor Colyseus independiente (puerto 2567)
- Comunicación: WebSocket para tiempo real
Instalación
npm install
Desarrollo
Ejecutar ambos servidores (Nuxt + Colyseus):
npm run dev:all
O ejecutar por separado:
# Terminal 1 - Servidor Nuxt (puerto 3000)
npm run dev
# Terminal 2 - Servidor Colyseus (puerto 2567)
npm run dev:colyseus
URLs
- Cliente del juego: http://localhost:3000
- Panel admin: http://localhost:3000/admin
- WebSocket Colyseus: ws://localhost:2567
- Monitor Colyseus: http://localhost:2567/monitor
Estructura del proyecto
nuxt-snatchgame/
├── pages/ # Páginas de Nuxt
│ ├── index.vue # Cliente del juego
│ └── admin.vue # Panel de administración
├── components/ # Componentes Vue
│ ├── game/ # Componentes del juego
│ └── admin/ # Componentes admin
├── composables/ # Composables Vue
│ ├── useGameClient.ts # Cliente Colyseus
│ └── useAdminService.ts # Servicio admin
├── server/ # Backend
│ ├── colyseus-server.ts # Servidor Colyseus
│ └── rooms/ # Salas de juego
│ └── GameRoom.ts # Lógica del juego
└── public/ # Assets estáticos
Características implementadas
✅ Cliente del juego con conexión WebSocket ✅ Panel de administración ✅ Sistema de intercambio de tokens ✅ Gestión de jugadores y salas ✅ Control administrativo del juego
Notas de la migración
- El servidor Colyseus se ejecuta de forma independiente para evitar problemas con decoradores TypeScript
- SSR deshabilitado ya que es una aplicación de juego en tiempo real
- Los endpoints admin se conectan directamente al servidor Colyseus