3

为了练习,我正在尝试开发多人游戏。我正在使用 NODEJS 和 HTML5 画布。为了在客户端和服务器之间共享数据,我正在使用 Socket.io

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

信息

  • 播放器一直在移动,我必须每 1000/60 毫秒(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 毫秒刷新一次玩家位置(通过每个玩家鼠标位置),并将其检索给在其屏幕上具有该位置的每个玩家(屏幕仅显示地图的一部分)。

-> 问题:滞后很多。

第二次尝试:

  • 客户端为每次鼠标移动(而不是鼠标位置)向服务器发送 dx 和 dy。

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

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

  • 服务器通过它的 dx 和 dy 移动每个玩家(只是刷新服务器端数据)。

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

-> 问题:数据不同步

4

0 回答 0