// 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
Post a Comment