HTML5 Canvas游戏玩家限制

时间:2018-06-04 19:21:59

标签: javascript node.js socket.io html5-canvas

我在画布上放置了1000名玩家,但他们的动作并不顺畅。帆布有办法处理那么多玩家吗?我有什么选择?

使用socket.IO每秒发送20次播放器的位置。当事件到达客户端时,它会在画布上绘制玩家。

var images = {};
images.spriteSheet = new Image();
images.spriteSheet.src = "/images/spriteSheet.png";

socket.on('drawing', function(data){

  ctx.clearRect(0,0,1000,500);

  for(var i = 0; i < data.length; i++){

    ctx.drawImage(images['spriteSheet'], data[i].sx, data[i].sy, 100, 100, data[i].x, data[i].y, 70, 70);

  }

});

1 个答案:

答案 0 :(得分:1)

  

我在画布上放置了1000名玩家,但他们的动作并不顺畅。帆布有办法处理那么多玩家吗?

我认为你的意思是你每秒以20x的速度向画布绘制1000个精灵。毫无疑问,这将是艰难的。

  

使用socket.IO,播放器的位置每秒发送20次。

当然,您可以发送位置和向量,让客户端在本地进行预测性更新,直到下一次真正的更新。这就是所有其他游戏的工作原理,也是有原因的。你甚至可以每秒获取20次数据的想法并非总是如此。

如果没有更多详细信息,很难给出具体答案,但在一般情况下,我建议调查SVG。然后,您可以更新单个元素,让浏览器担心合成和不合作,这可能会比您在画布中提取的内容更快。您必须针对具体用例进行实验。