Javascript HTML5画布游戏玩家限制
我在画布上放置了1000名球员,但他们的动作并不流畅。canvas有办法处理这么多玩家吗?我有什么选择 使用socket.IO每秒发送20次玩家的位置。当事件到达客户端时,它会在画布上绘制玩家Javascript HTML5画布游戏玩家限制,javascript,node.js,socket.io,html5-canvas,Javascript,Node.js,Socket.io,Html5 Canvas,我在画布上放置了1000名球员,但他们的动作并不流畅。canvas有办法处理这么多玩家吗?我有什么选择 使用socket.IO每秒发送20次玩家的位置。当事件到达客户端时,它会在画布上绘制玩家 var images = {}; images.spriteSheet = new Image(); images.spriteSheet.src = "/images/spriteSheet.png"; socket.on('drawing', function(data){ ctx.clear
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);
}
});
var-images={};
images.spriteSheet=新图像();
images.spriteSheet.src=“/images/spriteSheet.png”;
socket.on('drawing',函数(数据){
ctx.clearRect(0,01000500);
对于(变量i=0;i
我在画布上放置了1000名球员,但他们的动作并不流畅。canvas有办法处理这么多玩家吗
我想你的意思是你在画布上画1000个精灵,每秒20次。毫无疑问,这将是艰难的
使用socket.IO每秒发送20次玩家的位置
当然,您可以发送一个位置和向量,让客户机按帧进行本地更新,直到下一次真正的更新。几乎所有其他游戏都是这样工作的,这是有原因的。这种每秒可以获取20次数据的想法并不总是如此
没有更多的细节,很难给出具体的答案,但在一般情况下,我建议研究SVG。然后,您可以更新单个元素,让浏览器担心合成和其他问题,这可能比您在画布中完成的要快。不过,您必须针对特定的用例进行实验。SVG在渲染大型对象时速度更快,但在渲染多个对象时速度较慢。在Canvas中游戏可能会更快。@Suron这完全取决于你想做什么,而且你在问题中几乎没有提供任何相关细节。谢谢你的帮助,但现在Canvas可以处理这么多对象,我不知道为什么它之前不起作用。我想删除这个问题,因为它没有意义,但我不能,因为它有答案。@SurSur现在对你来说可能没有意义,但对以后可能找到它的其他人来说不是没有意义。这就是堆栈溢出的主要目的。。。提出与你和其他人相关的问题,并获得你的问题的答案,这对以后的其他人也有帮助。