使用Node.js的多人游戏方面

multiplayer aspect using Node.js

本文关键字:游戏 方面 Node js 使用      更新时间:2024-05-28

我正在尝试使用Node.js等创建一个简单的游戏。但我有一些问题。

第一个玩家连接,一切都很好。然而,当第二个玩家连接时,在第一个窗口中,两个玩家都会出现。在第二个窗口中,只显示了播放器2。此外,如果我在第二个窗口中移动播放器2,它不会在第一个窗口中移动

这是服务器端:

fs.createWriteStream("/Users/thomas/Desktop/connectedPlayers.md");
var players;
game.sockets.on('connection', function(socket){
    fs.appendFile("/Users/thomas/Desktop/connectedPlayers.md", socket.id + ''n', function(err) {
        if(err) {
            console.log(err);
        } else {
            console.log("The file was saved!");
        }
    });
    fs.readFile("/Users/thomas/Desktop/connectedPlayers.md", function(err, file){
        if(err){
            console.log(err);
        }else{
            players = file.toString().split(''n');
            //When a player connects, all the players will get this message.
            game.sockets.emit('entrance', {
                    id: socket.id,
                    players: players,
                    coordinates: {x: socket.x, y: socket.y},
                    message: 'Player ' + socket.id + ' is online'
            });
        }
    });
});

我将所有连接的播放器存储到一个文本文件中,并将其存储在一个数组中,我可以在客户端访问该数组:

socket.on('entrance', function(data){
        for(var i = 0; i < data.players.length; i++){
            new Player(data.players[i]).init();
        }
        //console.log(data.message);
        isCalled = true;
    });

我真的很感激你的帮助/见解。谢谢

您需要对所有连接使用广播,或者在所有连接上循环:

socket.broadcast.emit();