// This is the basic setup for a real-time multiplayer Ludo game // using JavaScript, Socket.io and Node.js (backend), with fancy frontend (React optional) // ==== BACKEND (Node.js + Socket.io) ==== // Save this as server.js const express = require('express'); const http = require('http'); const socketIo = require('socket.io'); const cors = require('cors'); const app = express(); app.use(cors()); const server = http.createServer(app); const io = socketIo(server, { cors: { origin: '*' } }); let rooms = {}; io.on('connection', (socket) => { console.log('New client connected:', socket.id); socket.on('createRoom', () => { const roomId = Math.random().toString(36).substr(2, 6); rooms[roomId] = [socket.id]; socket.join(roomId); socket.emit('roomCreated', roomId); }); socket.on('joinRoom', (roomId) => { if (rooms[roomId] && rooms[roomId].length < 4) { rooms[roomId].push(socket.id); socket.join(roomId); io.in(roomId).emit('playerJoined', rooms[roomId]); } else { socket.emit('roomFull'); } }); socket.on('rollDice', ({ roomId, playerId }) => { const roll = Math.floor(Math.random() * 6) + 1; io.in(roomId).emit('diceRolled', { playerId, roll }); }); socket.on('movePiece', (data) => { io.in(data.roomId).emit('pieceMoved', data); }); socket.on('disconnect', () => { console.log('Client disconnected:', socket.id); // Cleanup rooms for (let room in rooms) { rooms[room] = rooms[room].filter(id => id !== socket.id); if (rooms[room].length === 0) delete rooms[room]; } }); }); server.listen(3000, () => { console.log('Server running on port 3000'); });

Comments