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}`)