- 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)
42 lines
982 B
TypeScript
42 lines
982 B
TypeScript
import 'reflect-metadata'
|
|
import { listen } from '@colyseus/tools'
|
|
import { monitor } from '@colyseus/monitor'
|
|
import { Server } from 'colyseus'
|
|
import { WebSocketTransport } from '@colyseus/ws-transport'
|
|
import { createServer } from 'http'
|
|
import express from 'express'
|
|
import cors from 'cors'
|
|
import { GameRoom } from './rooms/GameRoom'
|
|
|
|
const port = parseInt(process.env.PORT || '2567', 10)
|
|
const app = express()
|
|
|
|
// Enable CORS
|
|
app.use(cors())
|
|
app.use(express.json())
|
|
|
|
// Create HTTP & WebSocket servers
|
|
const server = createServer(app)
|
|
|
|
const gameServer = new Server({
|
|
transport: new WebSocketTransport({
|
|
server
|
|
})
|
|
})
|
|
|
|
// Register GameRoom
|
|
gameServer.define('game', GameRoom)
|
|
.filterBy(['gameMode'])
|
|
.sortBy({ clients: 1 })
|
|
|
|
// Health check
|
|
app.get('/health', (req, res) => {
|
|
res.json({ status: 'healthy' })
|
|
})
|
|
|
|
// Colyseus monitor
|
|
app.use('/monitor', monitor())
|
|
|
|
gameServer.listen(port)
|
|
|
|
console.log(`🎮 Colyseus server is listening on ws://localhost:${port}`) |