NODEJS实时游戏数据传输

为了练习我正在尝试开发一个多人游戏。 我使用NODEJS和HTML5canvas。 在客户端和服务器之间共享数据我使用的是Socket.io

我想知道的是如何优化客户端 – 服务器数据传输。

信息

  • 玩家一直在移动,我必须每1000/60 ms(60 fps)更新玩家位置。

  • 玩家动作:

vecX = mouse.x - player.x; vecY = mouse.y - player.y; vec = Math.sqrt(vecX*vecX + vecY*vecY); dx = vecX/vec; dy = vecY/vec; player.x += dx*player.speed; player.y += dy*player.speed; 
  • 我试过了吗?

第一次尝试:

  • 客户端将鼠标位置发送到每个鼠标移动的服务器。

  • 服务器保存鼠标位置

  • 服务器每1000/60 ms刷新玩家位置(每个玩家鼠标位置),并将其检索给每个在其屏幕上具有位置的玩家(屏幕只显示地图的一部分)。

– >问题:滞后很多。

第二次尝试:

  • 客户端将dx和dy发送到服务器以进行每次鼠标移动(而不是鼠标位置)。

  • 服务器检索这个dx和dy给每个玩家。

  • 客户端通过dx和dy移动每个玩家。

  • 服务器通过dx和dy移动每个播放器(只刷新服务器端数据)。

  • 服务器每100毫秒检索一次玩家的位置(纠正位置)。

– >问题:数据不同步