Javascript 使node js游戏不那么滞后

Javascript 使node js游戏不那么滞后,javascript,node.js,server,client,Javascript,Node.js,Server,Client,我有一个node js游戏,其中我使用一个函数生成一个指向我的玩家的搜索导向向量。 问题是我在客户端使用set interval不断更新这个向量,以及我的播放器移动时的其他数据。我正在考虑为100+个敌人每隔一段时间生成这些向量。 我有没有办法把整个过程做得更好?我考虑的是基于事件的,但我不知道敌人Ai会对什么事件做出反应,因为玩家位置需要不断更新,服务器端搜索功能才能工作 setInterval(function () { let see

我有一个node js游戏,其中我使用一个函数生成一个指向我的玩家的搜索导向向量。 问题是我在客户端使用set interval不断更新这个向量,以及我的播放器移动时的其他数据。我正在考虑为100+个敌人每隔一段时间生成这些向量。 我有没有办法把整个过程做得更好?我考虑的是基于事件的,但我不知道敌人Ai会对什么事件做出反应,因为玩家位置需要不断更新,服务器端搜索功能才能工作

            setInterval(function () {
                let seekList = [];
                let enemyIndices = [];
                for (let i = 0; i < amountOfEnemyLeaders; i++) {
                    let index = mainEnemies[i];
                    seekData = calculateSeek(lobbyObjs[lobbyCode].enemies[Object.keys(lobbyObjs[lobbyCode].enemies)[index]], players[socket.id]);
                    if (seekData !== undefined) {
                        lobbyObjs[lobbyCode].enemies[Object.keys(lobbyObjs[lobbyCode].enemies)[index]].sprite.x = seekData.movement.x * 10;
                        lobbyObjs[lobbyCode].enemies[Object.keys(lobbyObjs[lobbyCode].enemies)[index]].sprite.y = seekData.movement.y * 10;
                        seekList.push({x: lobbyObjs[lobbyCode].enemies[Object.keys(lobbyObjs[lobbyCode].enemies)[index]].sprite.x, y: lobbyObjs[lobbyCode].enemies[Object.keys(lobbyObjs[lobbyCode].enemies)[index]].sprite.y});
                        enemyIndices.push(mainEnemies[i]);
                    }
                }

                io.in(lobbyCode).emit('applyEnemyMovement', seekList, enemyIndices, lobbyObjs[lobbyCode].enemies);
            }, 50);   
setInterval(函数(){
设seekList=[];
让灌肠指数=[];
for(设i=0;i
您可以做的一件事是将这一行移到循环
Object.keys(lobbyObjs[lobbyCode].敌军)之前。
@aRvi Yep没有捕捉到这一行。非常感谢。不过,肯定还是会有滞后的问题。。。你建议取消设定的时间间隔吗?我真的不确定我如何能够在处理许多用户的同时不延迟地不断更新它。如果我去掉设置的时间间隔,它必须是基于事件的。我不太确定我会怎么做,因为我希望敌人不断地寻找玩家,因为这是一个游戏,玩家将在很多地方四处游动,除了玩家移动的开始,没有任何事件,如果玩家不断移动,这将无济于事。你应该考虑使用消息队列。socket我已经在使用socket.io了。我应该改变吗?